1
0
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.
Jip J. Dekker f2a1c4e389 Squashed 'software/mza/' content from commit f970a59b17
git-subtree-dir: software/mza
git-subtree-split: f970a59b177c13ca3dd8aaef8cc6681d83b7e813
2021-07-11 16:34:30 +10:00

56 lines
1.1 KiB
MiniZinc

% RUNS ON mzn20_fd
% RUNS ON mzn-fzn_fd
% RUNS ON mzn20_fd_linear
% RUNS ON mzn20_mip
% RUNS OM minizinc_cpx
int: Endtime;
int: NMachines;
int: NJobs;
set of int: Machines = 1..NMachines;
set of int: Jobs = 1..NJobs;
array[Machines,Jobs] of int: duration;
array[Machines,Jobs] of var 0..Endtime: start;
var 0..Endtime: makespan;
predicate not_at_same_time(Machines: m1, Jobs: j1, Machines: m2, Jobs: j2) =
start[m1,j1] + duration[m1,j1] <= start[m2,j2]
\/ start[m2,j2] + duration[m2,j2] <= start[m1,j1];
constraint
forall(m in Machines)(
forall(j1,j2 in Jobs where j1 < j2)(
not_at_same_time(m,j1,m,j2)
)
);
constraint
forall(j in Jobs)(
forall(m1,m2 in Machines where m1 < m2)(
not_at_same_time(m1,j,m2,j)
)
);
constraint
forall(m in Machines)(
forall(j in Jobs)(
start[m,j] + duration[m,j] <= makespan
)
);
solve minimize makespan;
output [ "oss:\nmakespan = ", show(makespan), "\nstart = ", show(start), "\n" ];
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Endtime = 1509;
NMachines = 3;
NJobs = 3;
duration = [|661,6,333|168,489,343|171,505,324|];