Constraints

The following constraints are used in this example:

  • bounds on variables

  • for $\text {worker} \in \text {WORKERS and period} \in \text {PERIODS}$,

    \begin{align*} & \quad \Variable{NumWorkers[worker,period]} \\ & - (1 - \Argument{shorttime\_ frac}) \cdot \Variable{NumShortTime[worker,period]} \\ & - \Variable{NumExcess[worker,period]} \\ & = \Argument{demand[worker,period]} \end{align*}
  • for $\text {worker} \in \text {WORKERS and period} \in \text {PERIODS}$,

    \begin{align*} & \quad \Variable{NumWorkers[worker,period]} \\ & = (1 - \Argument{waste\_ old[worker]}) \cdot \Variable{NumWorkers[worker,period}-1\Variable{]} \\ & + (1 - \Argument{waste\_ new[worker]}) \cdot \Variable{NumRecruits[worker,period]} \\ & + (1 - \Argument{waste\_ old[worker]}) \cdot \sum _{(\text {i},\text {worker}) \in \text {RETRAIN\_ PAIRS}} \Variable{NumRetrain[i,worker,period]} \\ & + (1 - \Argument{downgrade\_ leave\_ frac}) \cdot \sum _{(\text {i},\text {worker}) \in \text {DOWNGRADE\_ PAIRS}} \Variable{NumDowngrade[i,worker,period]} \\ & - \sum _{(\text {worker},\text {j}) \in \text {RETRAIN\_ PAIRS}} \Variable{NumRetrain[worker,j,period]} \\ & - \sum _{(\text {worker},\text {j}) \in \text {DOWNGRADE\_ PAIRS}} \Variable{NumDowngrade[worker,j,period]} \\ & - \Variable{NumRedundant[worker,period]} \end{align*}
  • for $\text {period} \in \text {PERIODS}$,

    \[  \Variable{NumRetrain[`semiskilled,`skilled,period]} \le \Argument{semiskill\_ retrain\_ frac\_ ub} \cdot \Variable{NumWorkers[`skilled,period]}  \]
  • for $\text {period} \in \text {PERIODS}$,

    \[ \sum _{\text {worker} \in \text {WORKERS}} \Variable{NumExcess[worker,period]} \le \Argument{overmanning\_ ub} \]