热启动准备失败:迭代多个场景时 CPLEX 中出现 1262 错误
Warm start preparation failed: 1262 error in CPLEX while iterating over several scenarios
我正在尝试 运行 模型多次,同时在 CPLEX 的每次迭代中增加某个变量的特定系数。为此,我查看了 CPLEX 安装目录中名为 "mulprod" 的示例文件。我在我的模型中使用与示例中所示相同的代码,但是为了使示例适应我自己的模型,我对其进行了一些更改。
更具体地说,到目前为止我所做的更改包括:
- 将变量"capFlour"改成"coeff",这是一个整型变量,我用它来表示我愿意在每次迭代中增加的变量系数。
- 将我们使用 objective 值的代码部分更改为我的问题自己的 objective 值,即 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" 的初始值,在没有主要方法(使用 coeff=1)的情况下求解模型得到 objective 值 51。
是什么原因导致我出现此错误,我该如何解决?
我收到错误消息的原因是我的模型是混合整数问题而不是 LP 模型。显然,为了创建模型的基础,使用 thisOplModel.generate() 不适用于混合整数问题。选择这条线路为我解决了这个问题。
我正在尝试 运行 模型多次,同时在 CPLEX 的每次迭代中增加某个变量的特定系数。为此,我查看了 CPLEX 安装目录中名为 "mulprod" 的示例文件。我在我的模型中使用与示例中所示相同的代码,但是为了使示例适应我自己的模型,我对其进行了一些更改。
更具体地说,到目前为止我所做的更改包括:
- 将变量"capFlour"改成"coeff",这是一个整型变量,我用它来表示我愿意在每次迭代中增加的变量系数。
- 将我们使用 objective 值的代码部分更改为我的问题自己的 objective 值,即 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" 的初始值,在没有主要方法(使用 coeff=1)的情况下求解模型得到 objective 值 51。
是什么原因导致我出现此错误,我该如何解决?
我收到错误消息的原因是我的模型是混合整数问题而不是 LP 模型。显然,为了创建模型的基础,使用 thisOplModel.generate() 不适用于混合整数问题。选择这条线路为我解决了这个问题。