5

我正在使用CPLEX Java API解决大型优化问题。目前我只是为高吞吐量优化使用CPLEX Java

IloCplex cplex = new IloCplex(); 
... add lots of variables and constraints ... 
cplex.solve(); 
cplex.end(); 

这很好,但我重复频繁的过程中,我只是在改变系数。每次我重复我创建一个新的cplex对象并重新创建所有变量。

有没有更有效的方法来做到这一点? IBM文档的语言如'将模型添加到模型实例',听起来很奇怪,但我认为这暗示着能够重用事物。

任何来自更有经验的用户的建议将是伟大的。谢谢。

+2

您可能会从IBM论坛或OR-Exchange(Stack Overflow的姊妹站点)获得更好的响应。 – 2012-04-13 03:39:41

回答

6

如果您只想更改约束系数(或目标函数的系数),则可以修改现有IloCplex对象上的系数。您不应该从头开始创建模型。

retval = cplex.solve(); 
// verify that the solve was successful 

// change coeficients on constraints (or in the objective) 
cplex.setLinearCoef(constraint, newCoef, variable); 
cplex.setLinearCoef(objective, newObjCoef, variable); 

// change right bounds on constraints 
constraint.setBounds(newLB, newUB); 

// change variable bounds 
var.setBounds(newLB, newUB); 

retval = cplex.solve(); 
// verify the solve 
+0

谢谢。这清除了我对API的困惑。 – 2012-04-16 20:51:24