demo/mip_demo.cc
changeset 2147 63d293ff1bef
child 2148 ab368e0ab662
equal deleted inserted replaced
-1:000000000000 0:0b52f26b7fb9
       
     1 #include <lemon/lp.h>
       
     2 //#include <lemon/ilp_glpk.h>
       
     3 
       
     4 using namespace lemon;
       
     5 
       
     6 int main(){
       
     7 
       
     8   //MipGlpk ilp;
       
     9 
       
    10    Mip ilp;
       
    11 
       
    12     
       
    13   typedef Mip::Row Row;
       
    14   typedef Mip::Col Col;
       
    15   
       
    16   ilp.max();
       
    17   
       
    18   Col x1 = ilp.addCol();
       
    19   Col x2 = ilp.addCol();
       
    20   Col x3 = ilp.addCol();
       
    21   
       
    22   ilp.integer(x1,true);
       
    23   ilp.integer(x2,true);
       
    24   ilp.integer(x3,true);
       
    25   
       
    26   ilp.addRow(x1+x2+x3 <=100);  
       
    27   ilp.addRow(10*x1+4*x2+5*x3<=600);  
       
    28   ilp.addRow(2*x1+2*x2+6*x3<=300); 
       
    29   
       
    30   ilp.colLowerBound(x1, 0);
       
    31   ilp.colLowerBound(x2, 0);
       
    32   ilp.colLowerBound(x3, 0);
       
    33   //Objective function
       
    34   ilp.setObj(10*x1+6*x2+4*x3);
       
    35   
       
    36   //Call the routine of the underlying LP solver
       
    37   ilp.solve();
       
    38   
       
    39   //Print results
       
    40   if (ilp.primalStatus()==LpSolverBase::OPTIMAL){
       
    41     std::cout<<"Optimal solution found!"<<std::endl;
       
    42     printf("optimum value = %g; x1 = %g; x2 = %g; x3 = %g\n", 
       
    43            ilp.primalValue(), 
       
    44            ilp.primal(x1), ilp.primal(x2), ilp.primal(x3));
       
    45   }
       
    46   else{
       
    47     std::cout<<"Optimal solution not found!"<<std::endl;
       
    48   }
       
    49 
       
    50 }