Note that there are some explanatory texts on larger screens.

plurals
  1. PO
    primarykey
    data
    text
    <p>Here is a take on how you could model it with GA. </p> <p>Using your notation:</p> <ul> <li>N (nr exam-takers)</li> <li>T (nr exams)</li> </ul> <p>Let the gene of an individual express a complete schedule of bookings. i.e. an individual is a list of specific bookings: (i,j,t,d) </p> <ul> <li>i is the i'th exam-taker [1,N] </li> <li>j is the j'th examiner [1,?] </li> <li>t is the t'th test the exam-taker must take [1,T]</li> <li>d is the start of the exam (date+time)</li> </ul> <p>evaluate using a fitness function which has the property to:</p> <ul> <li>penalize (severly) for all double booked examiners</li> <li>penalize for examiners idle-time </li> <li>penalize for exam-takers who were not allocated within their time period </li> <li>reward for each exam-taker's test which was booked within period</li> </ul> <p>this function will have all the logic to determine double bookings etc.. you have the complete proposed schedule in the individual, you now run the logic knowing the time for each test at each booking to determine the fitness and you increase/decrease the score of the booking accordingly.</p> <p>to make this work well, consider:</p> <ul> <li>initiation - use as much info you have to make "sane" bookings if it is computationally cheap.</li> <li>define proper GA operators </li> </ul> <p>initiating in a sane way:</p> <ul> <li>random select d within the time period</li> <li>randomly permute (1,2,..,N) and then pick the i from this (avoids duplicates), same for j and t</li> </ul> <p>proper GA operators:</p> <p>say you have booking <strong>a</strong> and <strong>b</strong>: (a_i,a_j,a_t,a_d) (b_i,b_j,b_t,b_d)</p> <p>you can swap a_i and b_i and you can swap a_j and b_j and a_d and b_d, but likely no point in swapping a_t and b_t.</p> <p>you can also have cycling, best illustrated with an example, if N*T = 4 a complete booking is 4 tuples and you would then cycle along i or j or d, for example cycle along i:</p> <pre><code>a_i = b_i b_i = c_i c_i = d_i d_i = a_i </code></pre>
    singulars
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload