[1] | 1 | package agents.anac.y2010.Southampton.analysis;
|
---|
| 2 |
|
---|
| 3 | public class RealEvaluationSection extends ContinuousEvaluationSection {
|
---|
| 4 |
|
---|
| 5 | public RealEvaluationSection(double lowerBound, double evalLowerBound, double upperBound, double evalUpperBound) {
|
---|
| 6 | this.lowerBound = lowerBound;
|
---|
| 7 | this.evalLowerBound = evalLowerBound;
|
---|
| 8 | this.upperBound = upperBound;
|
---|
| 9 | this.evalUpperBound = evalUpperBound;
|
---|
| 10 | }
|
---|
| 11 |
|
---|
| 12 | /**
|
---|
| 13 | * @param weight
|
---|
| 14 | * @param lowerBound
|
---|
| 15 | * @param evalLowerBound
|
---|
| 16 | * @param upperBound
|
---|
| 17 | * @param evalUpperBound
|
---|
| 18 | * @return
|
---|
| 19 | */
|
---|
| 20 | private double getNormalPart(double weight, double lowerBound, double evalLowerBound, double upperBound, double evalUpperBound) {
|
---|
| 21 | if (lowerBound >= upperBound)
|
---|
| 22 | throw new AssertionError("lowerBound cannot be greater than or equal to upperBound");
|
---|
| 23 | if (evalLowerBound != 0 && evalUpperBound != 0)
|
---|
| 24 | throw new AssertionError("evalLowerBound or evalUpperBound must be zero");
|
---|
| 25 | if (evalLowerBound != 1 && evalUpperBound != 1)
|
---|
| 26 | throw new AssertionError("evalLowerBound or evalUpperBound must be one");
|
---|
| 27 | if (evalUpperBound > evalLowerBound)
|
---|
| 28 | return weight / (upperBound - lowerBound);
|
---|
| 29 | else
|
---|
| 30 | return -weight / (upperBound - lowerBound);
|
---|
| 31 | }
|
---|
| 32 |
|
---|
| 33 | @Override
|
---|
| 34 | public double getNormal(double weight) {
|
---|
| 35 | return getNormalPart(weight, lowerBound, evalLowerBound, upperBound, evalUpperBound);
|
---|
| 36 | }
|
---|
| 37 | }
|
---|