src/demo/lp_maxflow_demo.cc
changeset 1381 998e8def9676
parent 1361 04733359bac2
child 1387 37d1b20cd9ef
     1.1 --- a/src/demo/lp_maxflow_demo.cc	Fri Apr 22 16:20:12 2005 +0000
     1.2 +++ b/src/demo/lp_maxflow_demo.cc	Fri Apr 22 17:47:01 2005 +0000
     1.3 @@ -1,13 +1,26 @@
     1.4 -#include<lemon/lp_glpk.h>
     1.5  #include<lemon/graph_reader.h>
     1.6  #include<lemon/list_graph.h>
     1.7  
     1.8 +
     1.9 +#ifdef HAVE_GLPK
    1.10 +#include <lemon/lp_glpk.h>
    1.11 +#elif HAVE_CPLEX
    1.12 +#include <lemon/lp_cplex.h>
    1.13 +#endif
    1.14 +
    1.15  using namespace lemon;
    1.16  
    1.17 +#ifdef HAVE_GLPK
    1.18 +typedef LpGlpk LpDefault;
    1.19 +#elif HAVE_CPLEX
    1.20 +typedef LpCplex LpDefault;
    1.21 +#endif
    1.22 +
    1.23 +
    1.24  template<class G,class C>
    1.25  double maxFlow(const G &g,const C &cap,typename G::Node s,typename G::Node t)
    1.26  {
    1.27 -  LpGlpk lp;
    1.28 +  LpDefault lp;
    1.29    
    1.30    typedef G Graph;
    1.31    typedef typename G::Node Node;
    1.32 @@ -17,7 +30,7 @@
    1.33    typedef typename G::OutEdgeIt OutEdgeIt;
    1.34    typedef typename G::InEdgeIt InEdgeIt;
    1.35    
    1.36 -  typename G::template EdgeMap<LpGlpk::Col> x(g);
    1.37 +  typename G::template EdgeMap<LpDefault::Col> x(g);
    1.38    lp.addColSet(x);
    1.39    
    1.40    for(EdgeIt e(g);e!=INVALID;++e) {
    1.41 @@ -26,22 +39,23 @@
    1.42    }
    1.43  
    1.44    for(NodeIt n(g);n!=INVALID;++n) if(n!=s&&n!=t) {
    1.45 -    LpGlpk::Expr ex;
    1.46 +    LpDefault::Expr ex;
    1.47      for(InEdgeIt  e(g,n);e!=INVALID;++e) ex+=x[e];
    1.48      for(OutEdgeIt e(g,n);e!=INVALID;++e) ex-=x[e];
    1.49      lp.addRow(ex==0);
    1.50    }
    1.51    {
    1.52 -    LpGlpk::Expr ex;
    1.53 +    LpDefault::Expr ex;
    1.54      for(InEdgeIt  e(g,t);e!=INVALID;++e) ex+=x[e];
    1.55      for(OutEdgeIt e(g,t);e!=INVALID;++e) ex-=x[e];
    1.56      lp.setObj(ex);
    1.57    }
    1.58    lp.max();
    1.59  
    1.60 +#ifdef HAVE_GLPK
    1.61    lp.presolver(true);
    1.62 -  
    1.63    lp.messageLevel(3);
    1.64 +#endif
    1.65  
    1.66    lp.solve();
    1.67