1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package p3j.experiment.results;
17
18 import james.SimSystem;
19
20 import java.io.File;
21 import java.io.IOException;
22 import java.util.List;
23 import java.util.logging.Level;
24
25
26
27
28
29
30
31
32
33
34 public class ChooseAgesForSingleYearSelector extends
35 AbstractAggregationSelector {
36
37
38
39
40
41 private final int year;
42
43
44 private int numberOfAgeClasses = -1;
45
46
47
48
49
50
51
52
53
54
55
56
57
58 public ChooseAgesForSingleYearSelector(
59 IOutputVariableSelector resultsSelector,
60 ISubPopulationSelector trialSelector, int generationForSelection,
61 int yearForSelection) {
62 super(resultsSelector, trialSelector, generationForSelection);
63 year = yearForSelection;
64 }
65
66 @Override
67 public void init(int numOfTrials, int numOfYears, int numOfAgeClasses) {
68 aggregation = new double[numOfTrials][numOfAgeClasses];
69 setNumberOfAgeClasses(numOfAgeClasses);
70 }
71
72 @Override
73 public void consider(int trialCount, ResultsOfTrial result) {
74 double[][] currentData = select(result).toArray();
75 for (int j = 0; j < getNumberOfAgeClasses(); j++) {
76 aggregation[trialCount][j] = currentData[j][getYear()];
77 }
78 }
79
80 @Override
81 public void finish(File destinationDir, List<Integer> indexOrdering,
82 ResultExport resultExport) throws IOException {
83 double[][] aggregatedData = cutOffUnused(aggregation, indexOrdering.size());
84 double[][] quantiles = resultExport.calcQuantiles(aggregatedData);
85 SimSystem.report(Level.INFO, "Writing aggregated data...");
86 resultExport.writeResult(destinationDir, quantiles, getFileName()
87 + "_quantiles.csv");
88 SimSystem.report(Level.INFO, "\t\tdone.");
89 }
90
91 @Override
92 protected String getFileName() {
93 return getPrefix() + super.getFileName();
94 }
95
96 protected final String getPrefix() {
97 return "year_" + getYear() + "_";
98 }
99
100 public int getNumberOfAgeClasses() {
101 return numberOfAgeClasses;
102 }
103
104 public void setNumberOfAgeClasses(int numberOfAgeClasses) {
105 this.numberOfAgeClasses = numberOfAgeClasses;
106 }
107
108 public int getYear() {
109 return year;
110 }
111
112 }