预先分配元组集的决策变量



我正在尝试解决一个灵活的作业车间问题,并希望另外添加一些优先级约束。因此,我想预先分配/约束一些在元组上迭代的决策变量。虽然约束的一般公式和使用forall运算符访问元组似乎不是问题(如(1(所示(,但我正在努力将特定决策变量公式化为"0";类型boolean不能用于<gt"在(2(中。

(1( forall(数据中的t(//(2(如果操作没有分配给资源k启动-&完-开始时间[t]+完成时间[t]<=x[t]*L;//时间=0

//84约束,136可变(45 Binär,91 andere(

(2( for all(数据中的t(//jobCompletionTime[t.job==1]<=开始时间[t.job==10];

没有约束的我的模型:元组列{//Deklaration des Tupeltypint运算;//活动int作业;//工作int pos;//职位顺序作业字符串posID;string资源;//Ressource浮动项目;//Prozesszeit};

{Columns}DATA=…;//Tupelmenge//TupelTeilmenge列=项目(DATA,i(-->Tupelteilmenge(即塔贝尔的Tupel(//int praezedenz[jobs][jobs]=…;//Vorangmatrix

//Entscheidungs variablendvar布尔值x[DATA];//1次是资源回收行动(Auswahl des jeweiligen Tupels(;0 sonstdvar float+StartingTime[DATA];//Tupels起点dvar浮点+完成时间[DATA];//图珀尔王朝dvar布尔值Y[DATA][DATA];//1,使操作ij(元组t(从操作i'j'(元组t2(下降到资源k;0 sonstdvar浮动+作业完成时间[DATA];//Achtung:就业机会dvar float+maxCompletionTime;

最小化(maxCompletionTime(;

受{

在OPL示例中,您应该了解

灵活的车间调度

这个问题是经典作业车间调度的扩展允许任何机器处理操作的问题给定的集合。问题是将每个操作分配给一台机器对机器上的操作进行排序,使得所有操作的完成时间(makespan(被最小化。

要访问此示例,请转到:examples/opl/sched_jobshofflex。

并且优先约束是

forall (j in Jobs, o1 in Ops, o2 in Ops: o1.jobId==j && o2.jobId==j && o2.pos==1+o1.pos)
endBeforeStart(ops[o1],ops[o2]);

最新更新