source: src/main/java/agents/similarity/CriteriaReal.java@ 345

Last change on this file since 345 was 127, checked in by Wouter Pasman, 6 years ago

#41 ROLL BACK of rev.126 . So this version is equal to rev. 125

File size: 2.7 KB
Line 
1package agents.similarity;
2
3import java.util.HashMap;
4
5import genius.core.Bid;
6import genius.core.Domain;
7import genius.core.issue.IssueReal;
8import genius.core.issue.ValueReal;
9import genius.core.utility.EVALFUNCTYPE;
10import genius.core.utility.EVALUATORTYPE;
11import genius.core.xml.SimpleElement;
12
13public class CriteriaReal implements Criteria {
14 // Class fields
15 // double lowerBound;
16 // double upperBound;
17 EVALFUNCTYPE type;
18 private int fIssueIndex;
19 private Domain fDomain;
20 HashMap<Integer, Double> fParam;
21
22 public CriteriaReal(Domain pDomain, int pIssueIndex) {
23 fIssueIndex = pIssueIndex;
24 fDomain = pDomain;
25 fParam = new HashMap<Integer, Double>();
26 }
27
28 public double getValue(Bid pBid) {
29 double utility = 0;
30 try {
31 double value = ((ValueReal) pBid.getValue(fIssueIndex)).getValue();
32 switch (this.type) {
33 case FARATIN:
34 IssueReal lIssue = (IssueReal) (fDomain.getObjectivesRoot()
35 .getObjective(fIssueIndex));
36 utility = EVALFUNCTYPE.evalFaratin(value,
37 lIssue.getUpperBound(), lIssue.getLowerBound(),
38 this.fParam.get(0), this.fParam.get(1));
39 /*
40 * if (utility<0) utility = 0; else if (utility > 1) utility =
41 * 1;
42 */
43 return utility;
44
45 case LINEAR:
46 utility = EVALFUNCTYPE.evalLinear(value, this.fParam.get(1),
47 this.fParam.get(0));
48 if (utility < 0)
49 utility = 0;
50 else if (utility > 1)
51 utility = 1;
52 return utility;
53 case CONSTANT:
54 return this.fParam.get(0);
55 default:
56 return -1.0;
57 }
58 } catch (Exception e) {
59 e.printStackTrace();
60 }
61 return utility;
62 }
63
64 public EVALUATORTYPE getType() {
65 return EVALUATORTYPE.REAL;
66 }
67
68 /*
69 * public double getLowerBound() { return lowerBound; }
70 *
71 * public double getUpperBound() { return lowerBound; }
72 */
73 public void loadFromXML(SimpleElement pRoot) {
74 // Object[] xml_item =
75 // ((SimpleElement)pRoot).getChildByTagName("range");
76 // this.lowerBound =
77 // Double.valueOf(((SimpleElement)xml_item[0]).getAttribute("lowerbound"));
78 // this.upperBound =
79 // Double.valueOf(((SimpleElement)xml_item[0]).getAttribute("upperbound"));
80 String ftype = pRoot.getAttribute("type");
81 if (ftype != null)
82 this.type = EVALFUNCTYPE.convertToType(ftype);
83 // TODO: define exception.
84 // TODO: DT: redefine this swith in more generic way
85 switch (this.type) {
86 case FARATIN:
87 this.fParam
88 .put(1, Double.valueOf(pRoot.getAttribute("parameter1")));
89 this.fParam
90 .put(0, Double.valueOf(pRoot.getAttribute("parameter0")));
91 break;
92 case LINEAR:
93 this.fParam
94 .put(1, Double.valueOf(pRoot.getAttribute("parameter1")));
95 case CONSTANT:
96 this.fParam
97 .put(0, Double.valueOf(pRoot.getAttribute("parameter0")));
98 }
99 }
100}
Note: See TracBrowser for help on using the repository browser.