The Doctor Rostering Problem - Asser Fahrenholz
The Doctor Rostering Problem - Asser Fahrenholz
The Doctor Rostering Problem - Asser Fahrenholz
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Appendix A. Implementation 71<br />
19 Vector >> bestDocs = new Vector > >();<br />
20 Pair < Integer , Pair < HashMap < Shift , HashSet >>, HashMap<br />
< Shift , HashSet >>>> sol ;<br />
21 int vio ;<br />
22<br />
23 myFore :<br />
24 for ( <strong>Doctor</strong> d : docs ) {<br />
25<br />
26 int score = 0;<br />
27 if ( this . isThis<strong>Doctor</strong>AroundThisShift (d, shift )) {<br />
28 continue myFore ;<br />
29 }<br />
30 sol = this . getShiftValue (d, day . getDayID () , shift . getShiftInt () ,<br />
false , false , true , true );<br />
31 score = sol . getE ();<br />
32 vio = sol . getV (). getE (). size ();<br />
33<br />
34 if ( bestDocs . size () == 0) {<br />
35 bestDocs . add ( new Pair < <strong>Doctor</strong> , Pair < Integer , Integer > >(d, new Pair<br />
< Integer , Integer >( score , vio )));<br />
36 } else {<br />
37 int size = bestDocs . size ();<br />
38 myFor :<br />
39 for ( int i = 0; i <<br />
40 size ; i ++) {<br />
41 Pair < <strong>Doctor</strong> , Pair < Integer , Integer >> docScore = bestDocs . get (<br />
i);<br />
42 if ( vio < docScore . getV (). getV ()) {<br />
43 bestDocs . add ( bestDocs . indexOf ( docScore ),<br />
44 new Pair < <strong>Doctor</strong> , Pair < Integer , Integer > >(d, new<br />
Pair < Integer , Integer >( score , vio )));<br />
45 break myFor ;<br />
46 } else if ( vio == docScore . getV (). getV () && ( docScore . getV ().<br />
getE () = score && minimize )<br />
)) {<br />
47 bestDocs . add ( bestDocs . indexOf ( docScore ),<br />
48 new Pair < <strong>Doctor</strong> , Pair < Integer , Integer > >(d, new<br />
Pair < Integer , Integer >( score , vio )));<br />
49 break myFor ;<br />
50 } else {<br />
51 bestDocs . add ( new Pair < <strong>Doctor</strong> , Pair < Integer , Integer > >(d,<br />
new Pair < Integer , Integer >( score , vio )));<br />
52 break myFor ;<br />
53 }<br />
54 }<br />
55 }<br />
56 }<br />
57<br />
58 switch ( RCLsize ) {<br />
59 case Best :<br />
60 bestDocs . setSize (1) ;<br />
61 break ;<br />
62 case Fifty :<br />
63 bestDocs . setSize (( int ) ( bestDocs . size () * 0.5) );