Getting dual value in Java using Cplex -


i trying dual values in java using cplex. getting wrong value. know it's wrong because have checked dual values using other solver. couldn't find problem code. can tell me what's wrong here? problem given below:

minimize 100000x1 + 0.869x2 + 299997x3 + 199998x4 + 199998x5 subject x1 = 1            x1+x2=1            x3 = 1            x3+x4=1            x5 = 1            x1+x2+x3+x4+x5 <= 500 

and code:

public class dual_new {     public static void main(string[] args) {     model_1();     }     public static void model_1() {         try {             //create new model             ilocplex cplex = new ilocplex();             //define variables             ilonumvar x1 = cplex.numvar(0, 1,"x1");             ilonumvar x2 = cplex.numvar(0, 1,"x2");             ilonumvar x3 = cplex.numvar(0, 1,"x3");             ilonumvar x4 = cplex.numvar(0, 1,"x4");             ilonumvar x5 = cplex.numvar(0, 1,"x5");                //define expressions             ilolinearnumexpr objective = cplex.linearnumexpr();             objective.addterm(100000, x1);             objective.addterm(0.869, x2);             objective.addterm(299997, x3);             objective.addterm(199998, x4);             objective.addterm(199998, x5);              //define objective             cplex.addminimize(objective);             //define constraints             list<ilorange>constraints = new arraylist<ilorange>();             constraints.add(cplex.addeq(cplex.prod(1, x1),1));             constraints.add(cplex.addeq(cplex.sum(cplex.prod(1, x1),cplex.prod(1, x2)),1));             constraints.add(cplex.addeq(cplex.prod(1, x3),1));             constraints.add(cplex.addeq(cplex.sum(cplex.prod(1, x3),cplex.prod(1, x4)),1));             constraints.add(cplex.addeq(cplex.prod(1, x5),1));             constraints.add(cplex.addle(cplex.sum(cplex.prod(1, x1),cplex.prod(1, x2),cplex.prod(1, x3),cplex.prod(1, x4),cplex.prod(1, x5)),500));              //solve model             if (cplex.solve()) {                 system.out.println("obj = "+cplex.getobjvalue());                 system.out.println("x1   = "+cplex.getvalue(x1));                 system.out.println("x2   = "+cplex.getvalue(x2));                 system.out.println("x3   = "+cplex.getvalue(x3));                 system.out.println("x4   = "+cplex.getvalue(x4));                 system.out.println("x5   = "+cplex.getvalue(x5));                  for(int i=0; i<constraints.size();i++)                 system.out.println("dual = "+(i+1) +" = " +cplex.getdual(constraints.get(i)));             }             else {                 system.out.println("model not solved");             }             cplex.end();         }         catch (iloexception exc) {             exc.printstacktrace();         }     } } 

there nothing wrong. dual problem model has multiple optimal solutions; therefore, solver can give of solutions none of them wrong. way check compute objective of dual problem using dual values primal, should same objective value both problems.


Comments