\section{Introduction}\label{sec:introduction}
This assignment involves comparing the performance of a single-point selection perturbative hyper-heuristic and multi-point selection perturbative hyper-heuristic for solving the examination timetabling problem.

More specifically, the single-point hyper-heuristic employs a greedy selection technique whereas the multi-point hyper-heuristic explores a space of heuristic combinations through the use of a genetic algorithm. The hyper-heuristics are evaluated on at least two early, two late and
two hidden problem instances from the ITC 2007 examination timetabling
benchmark set \cite{mccollum2010setting} (available at \url{www.cs.qub.ac.uk/itc2007/examtrack/exam_track_index_files/outputformat.htm}).

As a precursor to further detailing the single and multi-point hyper-heuristics it is important to note how the initial solution is generated. For every exam that needs to be scheduled, a random room is selected. Then, the first period which will not lead to any hard constraint violations is selected and the booking added to the solution. If no viable period could be found then both the room and period for the exam are selected randomly.

Furthermore, the low-level heuristics which make up the search space being explored consist of 5 perturbative heuristics for improving upon an examination timetabling solution in which all exams have been scheduled; albeit, with possible hard-constraint violations. The heuristic set \emph{H} is detailed in table \ref{tab:low-level_heuristics}.

\begin{table}[H]
\resizebox{\textwidth}{!}{\begin{tabular}{|c|l|}
\hline
\multicolumn{1}{|l|}{\textbf{Symbol}} & \textbf{Description}                                                                                \\ \hline
A                                     & \begin{tabular}[c]{@{}l@{}}Find the first 2 bookings that share the same period and have exams with the\\ same students; then, reschedule both exams using to the rescheduling technique.\end{tabular}                                \\ \hline
B                                     & \begin{tabular}[c]{@{}l@{}}Find the first room that has been overbooked for a specific period; then, \\ reschedule all exams that have been scheduled in the room for that period using\\ to the rescheduling technique.\end{tabular} \\ \hline
C                                     & \begin{tabular}[c]{@{}l@{}}Find the first booking where the period is too short for the scheduled exam; then,\\ reschedule the exam using the rescheduling technique.\end{tabular}                                                    \\ \hline
D                                     & \begin{tabular}[c]{@{}l@{}}Find the first 2 bookings that violate a period-related hard constraint; then, \\ reschedule both exams using to the rescheduling technique.\end{tabular}                                                  \\ \hline
E                                     & \begin{tabular}[c]{@{}l@{}}Find the first booking that has violates a room-related hard constraint; then,\\ reschedule the exam using the rescheduling technique.\end{tabular}                                                        \\ \hline
\end{tabular}}
\caption{Low-Level Perturbative Heuristics (\emph{H})}
\label{tab:low-level_heuristics}
\end{table}

Importantly, the rescheduling technique used by all low-level heuristics in table \ref{tab:low-level_heuristics} reschedules an exam by following a series of steps. Firstly, the booking associated with the exam is removed from the current solution. Next, a new room is selected randomly from the set of rooms that are large enough for the exam. Penultimately, a random period is selected from the set of periods that are long enough for the exam and will not lead to a clash with another exam - if no such period exists, any random period is selected. Then, finally, a new booking for the exam is made using the selected room and period to produce a new solution.