this repo has no description
at develop 801 B view raw
1include "globals.mzn"; 2 3int: horizon; % 时间范围 4set of int: Time = 0..horizon; 5enum Task; 6enum Machine; 7 8array[Task,Machine] of int: d; % 每个机器上的持续时间 9int: maxd = max([ d[t,m] | t in Task, m in Machine ]); 10int: mind = min([ d[t,m] | t in Task, m in Machine ]); 11 12array[Task] of var Time: S; % 起始时间 13array[Task] of var mind..maxd: D; % 持续时间 14array[Task,Machine] of var opt Time: O; % 可选择的任务起始 15 16constraint forall(t in Task)(alternative(S[t],D[t], 17 [O[t,m]|m in Machine],[d[t,m]|m in Machine])); 18constraint forall(m in Machine) 19 (disjunctive([O[t,m]|t in Task],[d[t,m]|t in Task])); 20constraint cumulative(S,D,[1|i in Task],card(Machine)); 21 22solve minimize max(t in Task)(S[t] + D[t]);