this repo has no description
1% RUNS ON mzn20_fd
2% RUNS ON mzn-fzn_fd
3% RUNS ON mzn20_fd_linear
4% RUNS ON mzn20_mip
5% RUNS OM minizinc_cpx
6
7int: Endtime;
8int: NMachines;
9int: NJobs;
10
11set of int: Machines = 1..NMachines;
12set of int: Jobs = 1..NJobs;
13
14array[Machines,Jobs] of int: duration;
15
16array[Machines,Jobs] of var 0..Endtime: start;
17var 0..Endtime: makespan;
18
19predicate not_at_same_time(Machines: m1, Jobs: j1, Machines: m2, Jobs: j2) =
20 start[m1,j1] + duration[m1,j1] <= start[m2,j2]
21 \/ start[m2,j2] + duration[m2,j2] <= start[m1,j1];
22
23
24constraint
25 forall(m in Machines)(
26 forall(j1,j2 in Jobs where j1 < j2)(
27 not_at_same_time(m,j1,m,j2)
28 )
29 );
30
31constraint
32 forall(j in Jobs)(
33 forall(m1,m2 in Machines where m1 < m2)(
34 not_at_same_time(m1,j,m2,j)
35 )
36 );
37
38constraint
39 forall(m in Machines)(
40 forall(j in Jobs)(
41 start[m,j] + duration[m,j] <= makespan
42 )
43 );
44
45solve minimize makespan;
46
47output [ "oss:\nmakespan = ", show(makespan), "\nstart = ", show(start), "\n" ];
48
49%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
50
51Endtime = 1509;
52NMachines = 3;
53NJobs = 3;
54
55duration = [|661,6,333|168,489,343|171,505,324|];