source: src/main/java/parties/in4010/q12015/group10/OpponentModelEstimator.java@ 126

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

Initial import : Genius 9.0.0

File size: 2.3 KB
Line 
1package parties.in4010.q12015.group10;
2
3import genius.core.timeline.TimeLineInfo;
4
5public class OpponentModelEstimator {
6
7 public static void updateAllModels(Opponent[] opponents,
8 TimeLineInfo timeline) {
9
10 double weightIncrement = 0.1;
11 // for every opponent: update the model
12 for (int opponentNumber = 0; opponentNumber < opponents.length; opponentNumber++) {
13
14 int totalNumberOfValues = opponents[opponentNumber].getListSize();
15 int numberOfIssues = opponents[opponentNumber]
16 .getEstimatedUtilitySpace().getNrOfEvaluators();
17 double[] weights = new double[numberOfIssues];
18 double[] valueValue = new double[totalNumberOfValues];
19
20 // define new weight:
21 // weight = previous weight + (increment if value has not changed)
22 // Normalize weights
23 double sumWeight = 0;
24 for (int issueIndex = 0; issueIndex < numberOfIssues; issueIndex++) {
25 weights[issueIndex] = opponents[opponentNumber].getEvaluator(
26 issueIndex).getWeight();
27 if (opponents[opponentNumber].IssueUnChanged(issueIndex)) {
28 weights[issueIndex] = weights[issueIndex] + weightIncrement;
29 }
30 sumWeight = sumWeight + weights[issueIndex];
31 }
32 // normalize weights
33 for (int issueIndex = 0; issueIndex < numberOfIssues; issueIndex++) {
34 weights[issueIndex] = weights[issueIndex] / sumWeight;
35 opponents[opponentNumber].setWeightAtIndex(issueIndex,
36 weights[issueIndex]);
37 }
38
39 // Value "values" are calculated as follows:
40 // valueValue = (value frequency )/ (max frequency of this issue)
41 // or do the same as with the weights: if value is chosen, do plus
42 // 0.1, and divide by the maximum
43 int parIssueIndex;
44 for (int listIndex = 0; listIndex < totalNumberOfValues; listIndex++) {
45 parIssueIndex = opponents[opponentNumber]
46 .getIssueIndexFromListIndex(listIndex);
47 valueValue[listIndex] = opponents[opponentNumber]
48 .getValueFreq(listIndex);
49 if (opponents[opponentNumber].getIssueMaxFreq(parIssueIndex) == 0) {
50 valueValue[listIndex] = 1;
51 } else {
52 valueValue[listIndex] = valueValue[listIndex]
53 / opponents[opponentNumber]
54 .getIssueMaxFreq(parIssueIndex);
55 }
56 opponents[opponentNumber].setValueValueAtIndex(parIssueIndex,
57 listIndex, valueValue[listIndex]);
58 opponents[opponentNumber].setValueValueListAtIndex(listIndex,
59 valueValue[listIndex]);
60 }
61 }
62
63 }
64
65}
Note: See TracBrowser for help on using the repository browser.