The Doctor Rostering Problem - Asser Fahrenholz
The Doctor Rostering Problem - Asser Fahrenholz
The Doctor Rostering Problem - Asser Fahrenholz
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
Appendix A. Implementation 72<br />
64 break ;<br />
65 case TwentyFive :<br />
66 bestDocs . setSize (( int ) ( bestDocs . size () * 0.25) );<br />
67 break ;<br />
68 case SeventyFive :<br />
69 bestDocs . setSize (( int ) ( bestDocs . size () * 0.75) );<br />
70 break ;<br />
71 default :<br />
72 break ;<br />
73 }<br />
74<br />
75 double randDoc = Math . random () * bestDocs . size ();<br />
76 <strong>Doctor</strong> bestDoc = bestDocs . get (( int ) randDoc ). getE ();<br />
77 return bestDoc ;<br />
78 }<br />
Listing A.1: Shift assignments<br />
A.5.2 Permutations of size k chosen from N elements<br />
1 package basic ;<br />
2<br />
3 import java . util . ArrayList ;<br />
4 import ds. <strong>Doctor</strong> ;<br />
5<br />
6 /* ******************************************************************************<br />
7 * Compilation : javac Perm . java Execution : java Permutations N k<br />
8 *<br />
9 * Enumerates all permutations of size k chosen from N elements . % java<br />
10 * Permutations 4 2 | sort ab ac ad ba bc bd ca cb cd da db dc<br />
11 *<br />
12 * Limitations ----------- * Assumes N > res ;<br />
18<br />
19 private ArrayList < ArrayList < <strong>Doctor</strong> >> enumerate2 ( ArrayList < <strong>Doctor</strong> > b, int n,<br />
20<br />
int r) {<br />
21 if (r == 0) {<br />
22 ArrayList < <strong>Doctor</strong> > subres = new ArrayList < <strong>Doctor</strong> >() ;<br />
23 for ( int i = n; i < b. size (); i ++) {<br />
24 subres . add (b. get (i));<br />
25 }<br />
26 res . add ( subres );<br />
27<br />
28 } else {<br />
29 for ( int i = 0; i < n; i ++) {<br />
30 swap2 (b, i, n - 1);<br />
31 enumerate2 (b, n - 1, r - 1);<br />
32 swap2 (b, i, n - 1);