热启动准备失败:在迭代多个方案时,CPLEX中出现1262错误

时间:2016-03-17 10:47:55

标签: mathematical-optimization cplex

我正在尝试多次运行模型,同时在CPLEX的每次迭代中增加变量的某个系数。为此,我查看了CPLEX安装目录中名为“mulprod”的示例文件。我正在使用模型中示例中显示的相同代码,但是我已对其进行了一些更改,以使示例适应我自己的模型。

更具体地说,到目前为止我所做的改变包括:

  • 将变量“capFlour”更改为“coeff”,这是一个整数变量,用于指示我愿意在每次迭代中增加的变量系数。
  • 将我们使用目标值的代码部分更改为我的问题自己的目标值,即51。

我将演示我在下面所做的更改:

//The original code (from the example "mulprod"):

main {
...
var capFlour = produce.Capacity["flour"];
...
data.Capacity["flour"] = capFlour;
...
if (Math.abs(cplex.getObjValue() - 393.5)>=0.01) { //Objective value of the example model
  status = -1;
}
...
}

//My code

main {
...
var capFlour = produce.coeff;
...
data.coeff = capFlour;
...
if (Math.abs(cplex.getObjValue() - 51)>=0.01) { //Objective value of my model
  status = -1;
}
...
}

运行模型在脚本日志中提供了以下信息:

Solve with capFlour = 1

OBJECTIVE: 51
warm start preparation failed: 1262

值1是“coeff”的初始值,并且在没有main方法的情况下求解模型(使用coeff = 1)给出了51的目标值。

可能导致我出现此错误的原因以及如何解决?

1 个答案:

答案 0 :(得分:0)

我收到错误消息的原因是因为我的模型是混合整数问题而不是LP模型。显然,为了使用thisOplModel.generate()为模型创建基础,不适用于混合整数问题。选择这条线就解决了这个问题。