2015-10-18 47 views
0

我有一个约束条件,我需要将其合并到我的java/cplex程序中。约束是:java/cplex约束的线性化

(forall q: x[i][j][q][k])(t[i][k]+s[i]+distance[i][j]-t[j][k]) <= 0  forall k, i, j 

,如果我把它就像这样,我得到的,因为该制剂是不是线性的CPLEX 5002(不是半正定)错误。我做了以下线性化约束和避免的问题:“在隐含界限行‘NB(9.7)0.01’不可行,所有参赛作品”

for(int k=0; k<Ausführung.k; k++){ 
for(int i=1; i<grossI.length; i++){ 
    for(int j=1; j<grossJ.length; j++){ 
     //for(int q=1; q<grossQ.length; q++){ 
     IloLinearNumExpr sumLastTerm = model.linearNumExpr(); 
     for(int q=1; q<grossQ.length; q++){ 
      sumLastTerm.addTerm(-1.0, w[i][j][q][k]); 
     } 
     IloConstraint con = model.addLe(model.sum(model.prod(-2000, sumLastTerm), model.sum(t[i][k], model.sum(Data.service[i], model.sum(distance[i][j], model.prod(-1.0, t[j][k]))))), 0); 
     con.setName("NB (9.7)."+k + i); 
    } 
} 
} 

现在,我得到一个错误信息。我告诉我,错误在于这个约束,就在开始迭代它时。任何人都可以告诉我我的错误在哪里,否则确认它必须在别的地方?

回答

0

好的,问题是我忘记了不平等的第一项中性“1”。因此,它应该是:

-2000(1-w[i][j][q][k]) +t[i][j]+s[i]+d[i][j]-t[i][k] <= 0 

如“1”中的第一个词是缺失,不等式的左边部分是未中和的情况下,W [i] [j] [Q] [K] = = 1.