Cplex用dvar索引dvar

时间:2019-04-28 12:37:31

标签: constraints cplex

OPL中有一个约束,其中我需要一个dvar,例如另一个dvar中的索引,但是CPLEX给我一个错误。我尝试使用https://www.ibm.com/developerworks/community/forums/html/threadTopic?id=2be2ec22-db4b-4a2c-b164-615b9f735dc9&ps=25中所述的逻辑约束来避免此错误。但是现在出现此错误:

Error 5002: Q is not positive semi-definite

这是约束:

forall(j in pat,k in gior,w in slotp) 
   vinc4: (k==t[j])*y[j,k,w] == 
           sum(g in giorni)(r[j,g,w+1]) + 
               sum(g in giorni)(l[j,g,w-1]);

1 个答案:

答案 0 :(得分:0)

如果t[j]是变量,则表达式k == t[j]不是常数,而是约束的真值。如果约束为true,则此真值等效于变量,变量为1,否则为0。

似乎您将此“变量”乘以另一个y[j,k,w]。因此,您最终得到一个二次约束模型:一个其中某些约束包含二次项的模型。只有这些模型是凸形的,CPLEX才能求解,并且由于错误,这里不是这种情况。