Commit 60b33284 authored by Markus Klinik's avatar Markus Klinik

resource frames figure

parent 9afca06a
......@@ -6,16 +6,51 @@ We have implemented our algorithm in the functional programming language Clean.
The source code is available at our university's GitLab.\footnote{\url{https://gitlab.science.ru.nl/mklinik/ga-scheduler}}
The implementation works in two phases.
Phase one uses a genetic algorithm to find a set of good assignments.
Phase one uses a genetic algorithm to find a set of good assignments for a given instance definition.
Phase two uses these assignments to build schedules.
\subsection{Genetic Algorithm}
\subsection{Instance Definition}
A C2 instance definition consists of a list of resource definitions, a list of task definitions, a list of resource frame definitions, and a list of weights.
Resource frames specify resource affinity constraints.
A resource frame has a list of task definitions and a list of resource requirements.
Every resource requirement of a resource frame is by definition a resource requirement of all tasks in the frame, and assigning a resource to a frame requirement automatically assigns it to all tasks in the frame.
See figure \todo{TODO} for an example.
\begin{figure}
\begin{tikzpicture}[scale=0.03,>=stealth]
\node[draw,rectangle split,rectangle split parts=2,text width=2.0cm,anchor=north west] at (0,0)
(prepare)
{ Prepare
\nodepart{two}
\textit{Operator}
};
\node[draw,rectangle split,rectangle split parts=2,text width=2.0cm,anchor=north west] at (130,0)
(deploy)
{ Deploy
\nodepart{two}
\textit{Operator}
};
\node[draw,anchor=south east,outer sep=0pt] % outer sep=0pt so that the borders overlap
at (215,-60) (frameRequirement) {\textit{Transport}};
\draw (-10,10) rectangle (frameRequirement.south east);
\draw[->] (prepare.text east) -- (deploy.text west);
\end{tikzpicture}
\caption{A resource frame in a simple prepare-deploy scenario.
The resource requirement of the frame applies to all tasks inside the frame.}
\label{fig:resource-frames}
\end{figure}
\subsection{Genetic Algorithm}
Our genetic algorithm is based on the implementation by \citet{Alexeev2014SimpleGeneticAlgorithm}.
We ported his code from Haskell to Clean and extended it in a number of ways to make it fit our needs.
\paragraph{Encoding}
Our encoding scheme is based on the one by \citet{MyszkowskiLNS2018}, extended with support for tasks with multiple skill requirements.
A chromosome encodes an assignment as follows.
\paragraph{Selection}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment