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 import p3j.misc.math.Matrix2D;
26
27
28
29
30
31
32
33
34
35 public class SumOverAgesSelector extends AbstractAggregationSelector {
36
37
38
39
40
41
42
43
44
45
46
47 public SumOverAgesSelector(IOutputVariableSelector resultsSelector,
48 ISubPopulationSelector trialSelector, int generationForSelection) {
49 super(resultsSelector, trialSelector, generationForSelection);
50 }
51
52 @Override
53 public void init(int numOfTrials, int numOfYears, int numOfAgeClasses) {
54 aggregation = new double[numOfTrials][numOfYears];
55 }
56
57 @Override
58 public void consider(int trialCount, ResultsOfTrial result) {
59 double[] rowSum = Matrix2D.sumRows(select(result)).toArray()[0];
60 System.arraycopy(rowSum, 0, aggregation[trialCount], 0, rowSum.length);
61 }
62
63 @Override
64 public void finish(File destinationDir, List<Integer> indexOrdering,
65 ResultExport resultExport) throws IOException {
66
67 double[][] aggregatedData = cutOffUnused(aggregation, indexOrdering.size());
68
69 double[][] filteredResults = resultExport.filter(aggregatedData);
70 double[][] quantiles = resultExport.calcQuantiles(aggregatedData);
71
72 SimSystem.report(Level.INFO, "Writing aggregated data...");
73 resultExport.writeResult(destinationDir,
74 reorderResults(indexOrdering, filteredResults), getFileName()
75 + "_sum.csv");
76 resultExport.writeResult(destinationDir, quantiles, getFileName()
77 + "_quantiles.csv");
78 SimSystem.report(Level.INFO, "\t\tdone.");
79 }
80
81 }