我正在使用Concec ++进行LP迭代舍入。我的ILP和LP编码正常工作。然而,当我尝试迭代地绕LP时,我得到了不可行的洗脱剂。在每次迭代中,我试图找到决策变量x的最大值,它是0-1之间的浮点数并使其为1(实际上我将它作为新约束添加)。然而,有时我会得到不可行的解决方案,实际上不应该是一个案例。错误如下: 不可行的指标约束 预备时间:3.53秒。 错误:cplex错误1217:没有解决方案。
我正在制作图表并尝试找到最短的路径。我的ILP找到了正确的路径。但是我需要用于大图的LP解决方案。为此目的写了一个LP公式。结果我得到了浮点数。在这里,我迭代地将一个边缘舍入为1.最后,我尝试获得一条路径。
我的代码如下:
do
{
max=0;
for(int i=0; i<edgesize*2;i++)
{
if(cplex.getValue(x[i])>0 && cplex.getValue(x[i])<1 && cplex.getValue(x[i])>max )
{
max = cplex.getValue(x[i]);
}
}
if(max !=0)
{
for(int i=0; i<edgesize*2;i++)
{
if(cplex.getValue(x[i])==max)
{
model.add(x[i]==1);
break;
}
}
}
cplex.extract(model);
cplex.solve();
cplex.out() << "Optimal value: " << cplex.getObjValue() << endl;
it++;
} while(max !=0);
这里有什么问题?我怎么解决呢?在此先感谢。
答案 0 :(得分:-2)
我是编程的初学者。
我想通过MILP
和C
cplex concert technology
我跑的时候 我收到了以下消息
Pr=1.00 X ILO Array::operator[][](Iloint i): out of bound operation: index superior to size of array
Assertaion failed: (i<_impl->get size()) ||(ILOSTD(cerr)<<”X IloArray::operator[] (Iloint i): out of bounds operation: index superior to size of array”<< ILOSTD(endl), ilo_stop_ assert()).file c:\program file\ibm\ilog\cplex-studio 125\concert\include\ilconcert\iloenv.h, line 2204