@@ -28,11 +28,10 @@ The meaning of such an equality is that the resource assigned to capability requ

We require that all entries in a resource affinity constraint refer to the same capability.

\paragraph{Assignments}

An assignment is a set of tuples $\tuple{t, i, r}$ that assigns a resource $r$ to every capability requirement $c_i$ of every task $t$.

An assignment $A$is a set of tuples $\tuple{t, i, r}$ that assigns a resource $r$ to every capability requirement $c_i$ of every task $t$.

\paragraph{Schedules}

A schedule is an assignment together with a set of tuples $\tuple{t, s}$ that assigns a start time $s \in\N$ to every task $t$.

The end time of a task is its start time plus its duration.

A schedule is a tuple $\tuple{A, S}$ of an assignment $A$ together with a set $S$ of start times $\tuple{t, s}$ that assigns a start time $s \in\N$ to every task $t$.

\paragraph{Validity}

We say that an assignment is \emph{valid} iff

...

...

@@ -46,3 +45,20 @@ We say that a schedule is \emph{valid} iff

\item it respects the task ordering, which means every task's start time $s_t$ is after the end time of all of its predecessors $\vec{p}_t$

\item no resource is assigned to two tasks that are overlapping in time.

\end{itemize}

The end time of a task is its start time plus its duration.

\paragraph{Quality function}

A quality function $f(r, t, i, E, A)$ takes as arguments a resource $r \in R$, a task $t \in T$, a capability index $i$, an environment $E$, and an assignment $A$, and returns either Maximize $q$ or Minimize $q$ with $q \in\mathbb{R}$.

The quality function calculates how well $r$ will perform capability requirement $c_i$ of task $t$, given an environment and an assignment.

Maximize and Minimize are annotations that specify if $q$ is a more-is-better or less-is-better objective.

We require that quality functions are consistent with these tags, which means for each $t$ and $c_i$ it returns the same tag.

Only then is it meaningful to compare different resources for the same capability requirement of a task.

\paragraph{C2 scheduling problem}

With the definitions above we can now define the C2 scheduling problem.

Given a set of capabilities $C$, a set of tasks $T$, a set of resources $R$, a set of affinity constraints, an environment $E$, and a quality function $f$, calculate a valid schedule $\tuple{A, S}$ that optimizes the objective vector

\begin{IEEEeqnarray*}{c}

\tuple{f(r, t, i, E, A)}\textrm{ for each }\tuple{r, t, i}\in$A$

\end{IEEEeqnarray*}

Optimizing the objective vector means to find the largest possible $q$ for each Maximize $q$, and the smallest possible $q$ for each Minimize $q$.