简体   繁体   English

CPLEX 中的 LP 松弛

[英]LP relaxation in CPLEX

Can I get a relaxed value when I write the following code under my model?当我在我的 model 下编写以下代码时,我可以获得一个宽松的值吗? I do not have any decision variable results when I do it.当我这样做时,我没有任何决策变量结果。 Do I need to change anything?我需要改变什么吗?

main {
  var status = 0;
  thisOplModel.generate();
  if (cplex.solve()) {
    writeln("Integer Model");   
    writeln("OBJECTIVE: ",cplex.getObjValue());   
    if (cplex.getObjValue() != 1) {
      status = -1;
    }
  } 

  thisOplModel.convertAllIntVars();
  if (cplex.solve()) {
    writeln("Relaxed Model");   
    writeln("OBJECTIVE: ",cplex.getObjValue());  
    if (cplex.getObjValue() != 0.5) {
      status = -1;
    }
  } 
   
(status);
}

sure.当然。

Full example from Relax integrity constraints and dual value in Making Optimization Simple 放松完整性约束和使优化变得简单中的双重价值的完整示例

int nbKids=300;
float costBus40=500;
float costBus30=400;
 
dvar int+ nbBus40;
dvar int+ nbBus30;
 
minimize
 costBus40*nbBus40  +nbBus30*costBus30;
 
subject to
{
 ctKids:40*nbBus40+nbBus30*30>=nbKids;
}
main {
  var status = 0;
  thisOplModel.generate();
  if (cplex.solve()) {
    writeln("Integer Model");   
    writeln("OBJECTIVE: ",cplex.getObjValue());   
    
  }
  // relax integrity constraint
  thisOplModel.convertAllIntVars();
 
  if (cplex.solve()) {
    writeln("Relaxed Model");   
    writeln("OBJECTIVE: ",cplex.getObjValue());  
    
    writeln("dual of the kids constraint = ",thisOplModel.ctKids.dual);
  }
   
 
}

which gives这使

Integer Model
OBJECTIVE: 3800
Relaxed Model
OBJECTIVE: 3750
dual of the kids constraint = 12.5

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM