仅在元组中添加唯一列。
在解决子问题并使用解决方案池后,我试图在列生成中将列添加到元组中。我看到在我的问题中,同一列被多次添加。有没有一种方法只能在数据(或元组)中添加唯一列? 我已经从削减库存问题中获取了代码。有人可以解释一下我在这段代码中进行编辑吗?
writeln("Solve sub.");
if ( subCplex.solve() &&
subCplex.getObjValue() <= -RC_EPS) {
writeln();
writeln("SUB OBJECTIVE: ",subCplex.getObjValue());
masterData.Patterns.add(masterData.Patterns.size+1, subOpl.Select.solutionValue;
} else {
writeln("No new good pattern, stop.");
subCplex.solnPoolIntensity = 3;
find larger no. of solutions
subCplex.populate();
var nsolns = subCplex.solnPoolNsolns;
for (var v = 1; v<=nsolns; v++) {
subOpl.setPoolSolution(v);
if(subCplex.getObjValue(v) <= -1.0e-10) {
masterData.Patterns.add(masterData.Patterns.size+1,subOpl.Select.solutionValue;
}
}
masterData.Patterns.add(masterData.Patterns.size,1,subOpl.Use.solutionValue);
masterOpl = new IloOplModel(masterDef,masterCplex);
masterOpl.addDataSource(masterData);
masterOpl.generate();
// End sub model
subData.end();
subOpl.end();
}
答案 0 :(得分:2)
CPLEX没有执行此操作的功能。您需要自己创建一个数据结构来存储所有输入列,并验证它们是否重复。 – Iago Carvalho