27.07.2013 Views

The Doctor Rostering Problem - Asser Fahrenholz

The Doctor Rostering Problem - Asser Fahrenholz

The Doctor Rostering Problem - Asser Fahrenholz

SHOW MORE
SHOW LESS

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);

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!