this repo has no description
1/***
2!Test
3check_against: []
4expected:
5- !Result
6 solution: !Solution
7 makespan: 1168
8 objective: 1168
9 start:
10 - - 507
11 - 0
12 - 6
13 - - 0
14 - 168
15 - 663
16 - - 168
17 - 663
18 - 339
19- !Result
20 solution: !Solution
21 makespan: 1168
22 objective: 1168
23 start:
24 - - 333
25 - 1162
26 - 0
27 - - 1000
28 - 0
29 - 657
30 - - 0
31 - 657
32 - 333
33- !Result
34 solution: !Solution
35 makespan: 1168
36 objective: 1168
37 start:
38 - - 339
39 - 0
40 - 6
41 - - 0
42 - 168
43 - 663
44 - - 168
45 - 663
46 - 339
47- !Result
48 solution: !Solution
49 makespan: 1168
50 objective: 1168
51 start:
52 - - 0
53 - 1162
54 - 829
55 - - 1000
56 - 505
57 - 0
58 - - 829
59 - 0
60 - 505
61- !Result
62 solution: !Solution
63 makespan: 1168
64 objective: 1168
65 start:
66 - - 339
67 - 1162
68 - 0
69 - - 1000
70 - 168
71 - 657
72 - - 161
73 - 657
74 - 333
75- !Result
76 solution: !Solution
77 makespan: 1168
78 objective: 1168
79 start:
80 - - 503
81 - 0
82 - 6
83 - - 0
84 - 169
85 - 820
86 - - 168
87 - 663
88 - 339
89- !Result
90 solution: !Solution
91 makespan: 1168
92 objective: 1168
93 start:
94 - - 507
95 - 0
96 - 6
97 - - 0
98 - 174
99 - 825
100 - - 168
101 - 663
102 - 339
103extra_files: []
104markers: []
105options:
106 all_solutions: false
107solvers:
108- gecode
109- cbc
110- chuffed
111type: solve
112
113***/
114
115int: Endtime;
116int: NMachines;
117int: NJobs;
118
119set of int: Machines = 1..NMachines;
120set of int: Jobs = 1..NJobs;
121
122array[Machines,Jobs] of int: duration;
123
124array[Machines,Jobs] of var 0..Endtime: start;
125var 0..Endtime: makespan;
126
127predicate not_at_same_time(Machines: m1, Jobs: j1, Machines: m2, Jobs: j2) =
128 start[m1,j1] + duration[m1,j1] <= start[m2,j2]
129 \/ start[m2,j2] + duration[m2,j2] <= start[m1,j1];
130
131
132constraint
133 forall(m in Machines)(
134 forall(j1,j2 in Jobs where j1 < j2)(
135 not_at_same_time(m,j1,m,j2)
136 )
137 );
138
139constraint
140 forall(j in Jobs)(
141 forall(m1,m2 in Machines where m1 < m2)(
142 not_at_same_time(m1,j,m2,j)
143 )
144 );
145
146constraint
147 forall(m in Machines)(
148 forall(j in Jobs)(
149 start[m,j] + duration[m,j] <= makespan
150 )
151 );
152
153solve minimize makespan;
154
155output [ "oss:\nmakespan = ", show(makespan), "\nstart = ", show(start), "\n" ];
156
157%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
158
159Endtime = 1509;
160NMachines = 3;
161NJobs = 3;
162
163duration = [|661,6,333|168,489,343|171,505,324|];