簡體   English   中英

更新半連續變量的下限不再使它保持半連續

[英]Updating the lower bound of a semi continuous variable no longer keeps it semi-continuous

我創建了一個CPLEX半連續變量,后來又更新了它的下限值。 該變量不再被視為半連續變量。

IloCplex cplex = new IloCplex();
IloLinearNumExpr objective = cplex.linearNumExpr();
IloNumVar x1=cplex.semiContVar(10, Double.MAX_VALUE,IloNumVarType.Float,"x1");
IloNumVar x2 = cplex.numVar(10, Double.MAX_VALUE,IloNumVarType.Float,"x2");
//If below line is commented, variable x1 is treated as semi continuous
x1.setLB(10);
objective.addTerm(x1, 4);
objective.addTerm(x2, 2);
cplex.addMinimize(objective);
cplex.lowerBound(x1..getVar().setLB(arg0);
cplex.solve();
if (cplex.solve()) {
    cplex.exportModel("Test2Variables.lp");
    System.out.println(cplex.getObjValue());
}

我希望輸出為20,但實際輸出為60

好的,我得到了解決方案:

在設置下限時,我使用了:(((IloSemiContVar)x1).setSemiContLB(10);

這樣就解決了問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM