demo/mip_demo.cc
author deba
Mon, 02 Oct 2006 16:11:00 +0000
changeset 2229 4dbb6dd2dd4b
parent 2146 5fcb6598276d
child 2369 6ae1a97055a2
permissions -rw-r--r--
Mersenne Twister random number generator

The code is based on the official MT19937 implementation
It is fully rewritten:

http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/emt.html

todo: fixing copyright information
     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 }