[477] | 1 | /** |
---|
| 2 | * |
---|
| 3 | */ |
---|
| 4 | package simulator.stats; |
---|
| 5 | |
---|
| 6 | import java.io.PrintStream; |
---|
| 7 | |
---|
| 8 | import simulator.DataCenterWorkloadSimulator; |
---|
| 9 | import gridsim.Accumulator; |
---|
| 10 | |
---|
| 11 | /** |
---|
| 12 | * This class temporarily adds new methods to {@link Accumulator} class. |
---|
| 13 | * |
---|
| 14 | * @author Stanislaw Szczepanowski |
---|
| 15 | * |
---|
| 16 | */ |
---|
| 17 | public class GSSAccumulator extends Accumulator { |
---|
| 18 | |
---|
| 19 | public GSSAccumulator() { |
---|
| 20 | super(); |
---|
| 21 | } |
---|
| 22 | |
---|
| 23 | public GSSAccumulator(Accumulator acc) { |
---|
| 24 | n_ = acc.getCount(); |
---|
| 25 | mean_ = acc.getMean(); |
---|
| 26 | sqrMean_ = acc.getStandardDeviation() + (mean_ * mean_); |
---|
| 27 | min_ = acc.getMin(); |
---|
| 28 | max_ = acc.getMax(); |
---|
| 29 | last_ = acc.getLast(); |
---|
| 30 | } |
---|
| 31 | |
---|
| 32 | /** |
---|
| 33 | * This method must be overloaded, since it returns the wrong value. |
---|
| 34 | */ |
---|
| 35 | public double getStandardDeviation() { |
---|
| 36 | return Math.sqrt(getVariance()); |
---|
| 37 | } |
---|
| 38 | |
---|
| 39 | /** |
---|
| 40 | * Calculates the variance of accumulated items |
---|
| 41 | * |
---|
| 42 | * @return the Standard Deviation of accumulated items |
---|
| 43 | * @pre $none |
---|
| 44 | * @post $none |
---|
| 45 | */ |
---|
| 46 | public double getVariance() { |
---|
| 47 | return sqrMean_ - (mean_ * mean_); |
---|
| 48 | } |
---|
| 49 | |
---|
| 50 | public boolean equals(Object obj) { |
---|
| 51 | if (!(obj instanceof GSSAccumulator)) |
---|
| 52 | return false; |
---|
| 53 | |
---|
| 54 | GSSAccumulator otherAcc = (GSSAccumulator) obj; |
---|
| 55 | if (Double.compare(this.last_, otherAcc.last_) != 0) |
---|
| 56 | return false; |
---|
| 57 | if (Double.compare(this.max_, otherAcc.max_) != 0) |
---|
| 58 | return false; |
---|
| 59 | if (Double.compare(this.mean_, otherAcc.mean_) != 0) |
---|
| 60 | return false; |
---|
| 61 | if (Double.compare(this.min_, otherAcc.min_) != 0) |
---|
| 62 | return false; |
---|
| 63 | if (Double.compare(this.n_, otherAcc.n_) != 0) |
---|
| 64 | return false; |
---|
| 65 | if (Double.compare(this.sqrMean_, otherAcc.sqrMean_) != 0) |
---|
| 66 | return false; |
---|
| 67 | |
---|
| 68 | return true; |
---|
| 69 | } |
---|
| 70 | |
---|
| 71 | public String toString() { |
---|
| 72 | String accumulatorSeparator = ";"; |
---|
| 73 | StringBuffer buffer = new StringBuffer(50); |
---|
| 74 | |
---|
| 75 | buffer.append(accumulatorSeparator); |
---|
| 76 | buffer.append(DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT.format(this |
---|
| 77 | .getMean())); |
---|
| 78 | buffer.append(accumulatorSeparator); |
---|
| 79 | buffer.append(DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT.format(this |
---|
| 80 | .getStandardDeviation())); |
---|
| 81 | buffer.append(accumulatorSeparator); |
---|
| 82 | buffer.append(DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT.format(this |
---|
| 83 | .getVariance())); |
---|
| 84 | buffer.append(accumulatorSeparator); |
---|
| 85 | buffer.append(DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT.format(this |
---|
| 86 | .getMin())); |
---|
| 87 | buffer.append(accumulatorSeparator); |
---|
| 88 | buffer.append(DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT.format(this |
---|
| 89 | .getMax())); |
---|
| 90 | buffer.append(accumulatorSeparator); |
---|
| 91 | buffer.append(DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT.format(this |
---|
| 92 | .getSum())); |
---|
| 93 | buffer.append(accumulatorSeparator); |
---|
| 94 | buffer.append(DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT.format(this |
---|
| 95 | .getCount())); |
---|
| 96 | buffer.append(accumulatorSeparator); |
---|
| 97 | |
---|
| 98 | return buffer.toString(); |
---|
| 99 | } |
---|
| 100 | |
---|
| 101 | public String toFormatedString() { |
---|
| 102 | |
---|
| 103 | String accumulatorSeparator = "; "; |
---|
| 104 | StringBuffer buffer = new StringBuffer(50); |
---|
| 105 | |
---|
| 106 | buffer.append(accumulatorSeparator); |
---|
| 107 | buffer.append(String.format("%16s", |
---|
| 108 | DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT.format(this |
---|
| 109 | .getMean()))); |
---|
| 110 | buffer.append(accumulatorSeparator); |
---|
| 111 | buffer.append(String.format("%16s", |
---|
| 112 | DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT.format(this |
---|
| 113 | .getStandardDeviation()))); |
---|
| 114 | buffer.append(accumulatorSeparator); |
---|
| 115 | buffer.append(String.format("%16s", |
---|
| 116 | DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT.format(this |
---|
| 117 | .getVariance()))); |
---|
| 118 | buffer.append(accumulatorSeparator); |
---|
| 119 | buffer.append(String.format("%16s", |
---|
| 120 | DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT.format(this |
---|
| 121 | .getMin()))); |
---|
| 122 | buffer.append(accumulatorSeparator); |
---|
| 123 | buffer.append(String.format("%16s", |
---|
| 124 | DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT.format(this |
---|
| 125 | .getMax()))); |
---|
| 126 | buffer.append(accumulatorSeparator); |
---|
| 127 | buffer.append(String.format("%16s", |
---|
| 128 | DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT.format(this |
---|
| 129 | .getSum()))); |
---|
| 130 | buffer.append(accumulatorSeparator); |
---|
| 131 | buffer.append(String.format("%16s", |
---|
| 132 | DataCenterWorkloadSimulator.DFAULT_NUMBER_FORMAT.format(this |
---|
| 133 | .getCount()))); |
---|
| 134 | buffer.append(accumulatorSeparator); |
---|
| 135 | |
---|
| 136 | return buffer.toString(); |
---|
| 137 | } |
---|
| 138 | } |
---|