source: src/main/java/genius/gui/uncertainty/PairwiseComparisonModel.java@ 30

Last change on this file since 30 was 30, checked in by dimitrios, 7 years ago

Additions to uncertainty framework to support tournament configuration and command line running

File size: 3.5 KB
Line 
1package genius.gui.uncertainty;
2
3import javax.swing.JOptionPane;
4
5import genius.core.boaframework.SortedOutcomeSpace;
6import genius.core.listener.Listener;
7import genius.core.repository.ProfileRepItem;
8import genius.core.uncertainty.ComparisonGenerator;
9import genius.core.uncertainty.UNCERTAINTYTYPE;
10import genius.core.uncertainty.UncertainPreferenceContainer;
11import genius.core.utility.AbstractUtilitySpace;
12import genius.gui.panels.BooleanModel;
13import genius.gui.panels.TextModel;
14
15public class PairwiseComparisonModel {
16
17private ProfileRepItem profile;
18
19private TextModel uncertaintyModel = new TextModel("0.0");
20private TextModel errorModel = new TextModel("0.0");
21private int maxNumberOfComps;
22
23private BooleanModel experimentalModel = new BooleanModel(true);
24private BooleanModel confirmationModel = new BooleanModel(false);
25
26private UncertainPreferenceContainer uncertainPrefContainer = null;
27
28 PairwiseComparisonModel(ProfileRepItem profile){
29 this.profile = profile;
30 this.maxNumberOfComps = calculateMaxNumberOfComparisons();
31 connect();
32 }
33 public int calculateMaxNumberOfComparisons() {
34 SortedOutcomeSpace realSortedOutcomeSpace = new SortedOutcomeSpace((AbstractUtilitySpace) profile.create());
35 int comparisonsAmount = (new ComparisonGenerator(realSortedOutcomeSpace).generateAllOutcomeComparisons().size());
36 return comparisonsAmount;
37 }
38
39 public void connect() {
40
41 confirmationModel.addListener (new Listener<Boolean>() {
42 @Override
43 public void notifyChange(Boolean data) {
44 if (confirmationModel.getValue() == true) {
45 uncertainPrefContainer = createContainer();
46 int amountOfComps = uncertainPrefContainer.getPairwiseCompUserModel().getBidComparisons().size();
47 double uncertaintyLevel = ((double) amountOfComps / (double) getMaxNumberofComps());
48 double errorRate = Double.parseDouble(getErrorModel().getText())*100;
49
50 JOptionPane.showMessageDialog(null , "Pairwise Comparison User Model Created Successfully! \n\n"
51 + "Number of Comparisons: " + amountOfComps +"\n"
52 + "Level Of Uncertainty: "
53 + (Math.round((1-uncertaintyLevel)*100)/100D)*100+"%\n"
54 + "Error Rate: " + (Math.round((errorRate)*100)/100D)+"%");
55 }
56 }
57 });
58 }
59
60 public ProfileRepItem getProfile() {
61 return profile;
62 }
63
64 public UncertainPreferenceContainer createContainer() {
65 int amountOfComps = Integer.parseInt((getUncertaintyModel().getText()));
66 UncertainPreferenceContainer container ;
67 if (experimentalModel.getValue() == true) {
68 container = new UncertainPreferenceContainer((AbstractUtilitySpace) profile.create() ,
69 UNCERTAINTYTYPE.PAIRWISECOMP, amountOfComps , Double.parseDouble(getErrorModel().getText()), true);
70 } else {
71 container = new UncertainPreferenceContainer((AbstractUtilitySpace) profile.create() ,
72 UNCERTAINTYTYPE.PAIRWISECOMP, amountOfComps , Double.parseDouble(getErrorModel().getText()), false);
73 }
74 return container;
75 }
76
77 public TextModel getUncertaintyModel() {
78 return uncertaintyModel;
79 }
80
81 public int getNumberOfComps(){
82 return (int)((1 - Double.parseDouble(getUncertaintyModel().getText())) * maxNumberOfComps);
83 }
84
85
86 public TextModel getErrorModel() {
87 return errorModel;
88 }
89 public int getMaxNumberofComps() {
90 return maxNumberOfComps;
91 }
92 public BooleanModel getConfirmationModel() {
93 return confirmationModel;
94 }
95 public UncertainPreferenceContainer getUncertainPrefContainer() {
96 return uncertainPrefContainer;
97 }
98 public BooleanModel getExperimentalModel() {
99 return experimentalModel;
100 }
101}
102
Note: See TracBrowser for help on using the repository browser.