Show / Hide Table of Contents

    The Job Scheduling Problem

    Prerequisites

    • Please look at Getting Started first for the most basic functions and the setup of OPTANO.Modeling

    The mathematical Model

    Sets:
    \begin{array}{l} J = \text{Set of }j\text{ Jobs}\newline S = \text{Set of }s\text{ Setup times}\newline R = \text{Set of }r\text{ Ranks}\newline T = \text{Set of }t\text{ Tasks}\newline T_m^M = \text{Set of }t_m\text{ Tasks supported by Machine }m\newline M = \text{Set of }m\text{ Machines} \end{array}

    Parameters:
    $$d_t = \text{duration of task }t$$ $$due_j = \text{due time of job }j$$ $$bigM = \sum\limits_{t\in T} d_t$$ $$c_m = \text{cost of using machine }m$$ $$st_j = \text{setup time of job }j\text{ is 0 if consecutive tasks are performed on the same machine}$$

    Variables:
    $$s_{t,m,r} = \text{start time of task }t\text{ with rank }r\text{ on machine }m$$ $$y_{t,m,r} = \begin{cases} 1, \text{ if task }t\text{ is assigned to machine }m \text{ with rank }r \newline 0, \text{ else} \end{cases}$$ $$d_j = \text{delay of job }j$$ $$l_{end} = \text{latest end time for completing all jobs and their tasks}$$

    Objective:
    $$\text{min } l_{end} + \sum\limits_{m \in M} \sum\limits_{r \in R} \sum\limits_{t \in T} ( (y_{t,m,r} c_m * 0.001) + (s_{t,m,r} * 0.01)$$

    Restrictions:
    \begin{array}{l} \sum\limits_{m\in M: t\in T_m^M} \sum\limits_{r\in R} y_{t,m,r} = 1 & \forall t \in T & \text{(each task must be done on one machine)}\newline \sum\limits_{t\in T_m^M} y_{t,m,r} \le 1 & \forall m \in M, r\in R & \text{(each machine has one task on every rank)}\newline \sum\limits_{m \in M: t \in T_m^M} s_{t,m,r} \le \sum\limits_{m \in M: t \in T_m^M} s_{t+1,m,r+1} + d_{t} & \forall j \in J, t \in T & \text{(tasks on the same machine observe timely order)}\newline s_{t,m,r} \le bigM y_{t,m,r} & \forall t \in T, m \in M: t \in T_m^M, r \in R & \text{(setting of start time leads to task assignment)}\newline s_{t+1,m,r} + y_{t+1,m,r-1} t_d + st_j \le s_{t,m,r} + (1 - y_{t,m,r}) bigM & \forall t \in T, m \in M: t \in T_m^M, r \in R & \text{(preserve order of the tasks / ranks)}\newline s_{t,m,r} + d_t - due_j \le d_j & \forall j \in J, m \in M, r \in R & \text{(calculate delays)}\newline s_{t,m,r} + d_t \le l_{end} & \forall r \in R, t \in T, m \in M: t \in T_m^M & \text{(find latest end)}\newline \sum\limits_{m\in M: t\in T_m^M} y_{t,m,r} = \sum\limits_{m\in M: t\in T_m^M} y_{t,m,r-1} & \forall r \in R, m \in M & \text{(tuning - no free ranks)} \end{array}

    The Job Scheduling Problem

    • Step 1: Create Business objects for your Model
    • Step 2: Create your Model Class
    • Step 3: Retrieve the Solution of your Model
    Back to top Copyright © OPTANO GmbH generated with DocFX
    Privacy Policy | Impressum – Legal Notice