MCPcopy Create free account
hub / github.com/Gecode/gecode / nooverload

Method nooverload

examples/job-shop.cpp:297–318  ·  view source on GitHub ↗

Do not overload machines

Source from the content-addressed store, hash-verified

295 }
296 /// Do not overload machines
297 void nooverload(void) {
298 // Number of jobs and machines/steps
299 int n = spec.jobs(), m = spec.machines();
300
301 IntVarArgs jobs(m*n);
302 IntArgs dur(m*n);
303
304 for (int i=0; i<n; i++)
305 for (int j=0; j<m; j++) {
306 jobs[spec.machine(i,j)*n+i] = start[i*m+j];
307 dur[spec.machine(i,j)*n+i] = spec.duration(i,j);
308 }
309
310 for (int j=0; j<m; j++) {
311 IntVarArgs jpm(n);
312 IntArgs dpm(n);
313 for (int i=0; i<n; i++) {
314 jpm[i] = jobs[j*n+i]; dpm[i] = dur[j*n+i];
315 }
316 unary(*this, jpm, dpm);
317 }
318 }
319 /// Return cost
320 virtual IntVar cost(void) const {
321 return makespan;

Callers

nothing calls this directly

Calls 5

unaryFunction · 0.85
jobsMethod · 0.80
machinesMethod · 0.80
machineMethod · 0.80
durationMethod · 0.80

Tested by

no test coverage detected