19f45a19a39a21cff4aa742eaebfa2a309037b80
[IRC.git] / Robust / src / Benchmarks / PERT / Tag / Stage.java
1 public class Stage {
2     flag sampling;
3     flag estimate;
4     flag merge;
5
6     int ID;
7
8     int[] samplings;
9     int optime;
10     int nortime;
11     int petime;
12     int time;
13     double variance2;
14
15     public Stage(int id) {
16         this.ID = id;
17
18         this.samplings = new int[10];
19         for(int i = 0; i < this.samplings.length; ++i) {
20             this.samplings[i] = 0;
21         }
22
23         this.optime = 0;
24         this.nortime = 0;
25         this.petime = 0;
26         this.time = 0;
27         this.variance2 = 0;
28     }
29
30     public void sampling() {
31         /*if(ID % 2 == 1) {
32                         int tmp = samplings[samplings.length];
33                 }*/
34
35         Random r = new Random(ID);
36         int tint = 0;
37         for(int i = 0; i < this.samplings.length; ++i) {
38             do {
39                 tint = r.nextInt()%50;
40             } while(tint <= 0);
41             this.samplings[i] = tint;
42             //System.printString(tint + "; ");
43         }
44         //int tint = ID * 3;
45         //for(int i = 0; i < this.samplings.length; ++i) {
46         //this.samplings[i] = tint + i;
47                 //System.printString(tint + "; ");
48         //}
49         //System.printString("\n");
50     }
51
52     public void estimate() {
53         /*if(ID % 2 == 1) {
54                         int tmp = samplings[samplings.length];
55                 }*/
56
57         int highest = this.samplings[0];
58         int lowest = this.samplings[0];
59         int sum = this.samplings[0];
60         for(int i = 1; i < this.samplings.length; ++i) {
61             int temp = this.samplings[i];
62             if(temp > highest) {
63                 highest = temp;
64             } else if(temp < lowest) {
65                 lowest = temp;
66             }
67             sum += temp;
68         }
69         sum  = sum - highest - lowest;
70         int ordinary = sum / (this.samplings.length - 2);
71         this.optime = lowest;;
72         this.petime = highest;
73         this.nortime = ordinary;
74         this.time = (this.optime + 4 * this.nortime + this.petime) / 6;
75         this.variance2 = (double)(this.optime - this.petime) * (double)(this.optime - this.petime) / 36.0;
76         //System.printString("Op time: " + this.optime + "; Nor time: " + this.nortime + "; Pe time: " + this.petime + "; variance2: " + (int)(this.variance2*100) + "(/100)\n");
77     }
78
79     public int getAntTime() {
80         return this.time;
81     }
82
83     public double getAntVariance2() {
84         return this.variance2;
85     }
86
87 }