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