This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
dekker-phd-thesis/assets/listing/intro_open_shop.mod
2021-07-29 09:37:13 +10:00

17 lines
905 B
Modula-2

param Machines integer > 0;@\Vlabel{line:intro:param:start}@
param Jobs integer > 0;
param Duration {1..Machines, 1..Jobs};@\Vlabel{line:intro:param:end}@
var start {1..Machines, 1..Jobs} integer >= 0;@\Vlabel{line:intro:var:start}@
var end_time integer >= 0;@\Vlabel{line:intro:var:end}@
minimize goal: end_time;@\Vlabel{line:intro:goal}@
subject to job_excl {m in 1..Machines, j1 in 1..Jobs, j2 in j1+1..Jobs}:@\Vlabel{line:intro:con:start}@
start[m,j1] + Duration[m,j1] <= start[m,j2]
or start[m,j2] + Duration[m,j2] <= start[m,j1];@\Vlabel{line:intro:or:first}@
subject to machine_excl {j in 1..Jobs, m1 in 1..Machines, m2 in m1+1..Machines}:
start[m1,j] + Duration[m1,j] <= start[m2,j]
or start[m2,j] + Duration[m2,j] <= start[m1,j];@\Vlabel{line:intro:or:second}@
subject to push_end_time {m in 1..Machines, j in 1..Jobs}:
start[m,j] + Duration[m,j] <= end_time;@\Vlabel{line:intro:con:end}@