[127] | 1 | package agents.similarity;
|
---|
| 2 |
|
---|
| 3 | import java.util.HashMap;
|
---|
| 4 |
|
---|
| 5 | import genius.core.Bid;
|
---|
| 6 | import genius.core.issue.ValueInteger;
|
---|
| 7 | import genius.core.utility.EVALFUNCTYPE;
|
---|
| 8 | import genius.core.utility.EVALUATORTYPE;
|
---|
| 9 | import genius.core.xml.SimpleElement;
|
---|
| 10 |
|
---|
| 11 | public class CriteriaInteger implements Criteria {
|
---|
| 12 | // Class fields
|
---|
| 13 | int lowerBound;
|
---|
| 14 | int upperBound;
|
---|
| 15 | int fIssueIndex;
|
---|
| 16 | EVALFUNCTYPE type;
|
---|
| 17 | HashMap<Integer, Integer> fParam;
|
---|
| 18 |
|
---|
| 19 | // Class methods
|
---|
| 20 |
|
---|
| 21 | public CriteriaInteger() {
|
---|
| 22 | fParam = new HashMap<Integer, Integer>();
|
---|
| 23 | }
|
---|
| 24 |
|
---|
| 25 |
|
---|
| 26 | public double getValue(Bid bid) {
|
---|
| 27 | Integer lTmp = null;
|
---|
| 28 | try {
|
---|
| 29 | lTmp = ((ValueInteger)bid.getValue(fIssueIndex)).getValue();
|
---|
| 30 | } catch(Exception e) {
|
---|
| 31 | e.printStackTrace();
|
---|
| 32 | }
|
---|
| 33 | switch(this.type) {
|
---|
| 34 | case LINEAR:
|
---|
| 35 | Double d = EVALFUNCTYPE.evalLinear(lTmp, this.fParam.get(1), this.fParam.get(0));
|
---|
| 36 | if (d<0)
|
---|
| 37 | d=0.0;
|
---|
| 38 | else if (d>1)
|
---|
| 39 | d=1.0;
|
---|
| 40 | return d.intValue();
|
---|
| 41 | case CONSTANT:
|
---|
| 42 | return this.fParam.get(0);
|
---|
| 43 | default:
|
---|
| 44 | return -1;
|
---|
| 45 | }
|
---|
| 46 | }
|
---|
| 47 |
|
---|
| 48 | public EVALUATORTYPE getType() {
|
---|
| 49 | return EVALUATORTYPE.INTEGER;
|
---|
| 50 | }
|
---|
| 51 |
|
---|
| 52 | public int getLowerBound() {
|
---|
| 53 | return lowerBound;
|
---|
| 54 | }
|
---|
| 55 |
|
---|
| 56 | public int getUpperBound() {
|
---|
| 57 | return lowerBound;
|
---|
| 58 | }
|
---|
| 59 |
|
---|
| 60 | public void loadFromXML(SimpleElement pRoot) {
|
---|
| 61 | Object[] xml_item = ((SimpleElement)pRoot).getChildByTagName("range");
|
---|
| 62 | this.lowerBound = Integer.valueOf(((SimpleElement)xml_item[0]).getAttribute("lowerBound"));
|
---|
| 63 | this.upperBound = Integer.valueOf(((SimpleElement)xml_item[0]).getAttribute("upperBound"));
|
---|
| 64 | Object[] xml_items = ((SimpleElement)pRoot).getChildByTagName("evaluator");
|
---|
| 65 | String ftype = ((SimpleElement)xml_items[0]).getAttribute("ftype");
|
---|
| 66 | if (ftype!=null)
|
---|
| 67 | this.type = EVALFUNCTYPE.convertToType(ftype);
|
---|
| 68 | // TODO: define exception.
|
---|
| 69 | switch(this.type) {
|
---|
| 70 | case LINEAR:
|
---|
| 71 | this.fParam.put(1, Integer.valueOf(((SimpleElement)xml_items[0]).getAttribute("parameter1")));
|
---|
| 72 | case CONSTANT:
|
---|
| 73 | this.fParam.put(0, Integer.valueOf(((SimpleElement)xml_items[0]).getAttribute("parameter0")));
|
---|
| 74 | }
|
---|
| 75 |
|
---|
| 76 | }
|
---|
| 77 |
|
---|
| 78 |
|
---|
| 79 | }
|
---|