【发布时间】:2020-09-19 13:33:25
【问题描述】:
我目前正在尝试解决 Benders 分解的问题。我正在使用已安装文件中现有示例中的示例。我无法理解的是如何或在何处显示决策变量的解决方案。我正在使用如下代码。我的问题是指最后一部分,我希望程序显示三个决策变量的解决方案:x[][][] 是 float+,y[][] 是二进制,theta[] 是二进制。使用 printSolution 是一个正确的决定吗?在其他方法中,我还发现了 getObjCoef()。使用 getObjCoef 方法时,我该如何制定?
我愿意提供任何帮助。 问候
main{
thisOplModel.generate();
var masterDef = thisOplModel.modelDefinition;
var masterCplex =cplex;
var masterData= thisOplModel.dataElements;
var subCplex = new IloCplex ();
var subOpl = new IloOplModel(masterDef, subCplex);
subOpl.addDataSource(masterData);
subOpl.generate();
subCplex.bendersstrategy = 1;
subCplex.newLongAnnotation("cpxBendersPartition");
for (var s in thisOplModel.other_scenarios){
for (var d in thisOplModel.demands){
for (var a in thisOplModel.arcs){
subCplex.setLongAnnotation("cpxBendersPartition", subOpl.x[s][d][a], subOpl.bendersPartitions[s]);
}
}
}
**if (subCplex.solve()) {
writeln("Total Cost = " + subCplex.getObjValue());
writeln("solution:" + subOpl.printSolution());
} else {
writeln("No solution");}**
cplex.exportModel("bendersv2.lp");
subCplex.writeBendersAnnotation("bendersv2.ann");
subCplex.delLongAnnotation("cpxBendersPartition");
subOpl.end();//clean up of memory
subCplex.end();//clean up of memory
}
【问题讨论】: