我正在使用CPLEX来构建模型 .

它由我通过cplex.addEq(1,x [i] [j])添加的几个方程组成,其中x的类型为IloIntVar [] [] .

现在,我没有为每个i,j添加1 == x [i] [j] . 事实上,我有一对i和j的初始对,我在开头添加1 == x [i] [j] . 然后我想通过循环遍历所有可能的(我控制标准Java可能的东西)改变对i,j的集合i = j为其添加1 == x [i] [j]然后选择一个来改进此配置这会降低cplex.solve()返回的目标值 .

改变i,j对的集合意味着对于几对i,j,等式1 == x [i] [j]变得过时,对于一些其他对i,j,等式1 == x [i] [j ]必须添加 .

到目前为止,我的想法是以某种方式删除并从模型中添加这些方程式,然后用cplex.solve()求解它,并将结果与之前的最优值进行比较 . 逻辑上这应该工作 . 但由于某种原因,cplex.solve()返回false,我收到此警告:“警告:从2 MIP启动时找不到解决方案 . ”

我想不知何故cplex还考虑了预先改变的方程式,这些方程式与新增的方程式相矛盾 .

只有初始化cplex.solve()中的方程式才能正常工作 .

请,

马蒂亚斯