gravatar
alpar (Alpar Juttner)
alpar@cs.elte.hu
Merge #317
0 2 0
merge default
0 files changed with 3 insertions and 2 deletions:
↑ Collapse diff ↑
Ignore white space 64 line context
... ...
@@ -59,65 +59,65 @@
59 59
      lx_lp_found=yes
60 60
      AC_DEFINE([LEMON_HAVE_LP], [1], [Define to 1 if you have any LP solver.])
61 61
      AC_MSG_RESULT([yes])
62 62
    else
63 63
      CLP_CXXFLAGS=""
64 64
      CLP_LDFLAGS=""
65 65
      CLP_LIBS=""
66 66
      AC_MSG_RESULT([no])
67 67
    fi
68 68
  fi
69 69
  CLP_LIBS="$CLP_LDFLAGS $CLP_LIBS"
70 70
  AC_SUBST(CLP_CXXFLAGS)
71 71
  AC_SUBST(CLP_LIBS)
72 72
  AM_CONDITIONAL([HAVE_CLP], [test x"$lx_clp_found" = x"yes"])
73 73

	
74 74

	
75 75
  lx_cbc_found=no
76 76
  if test x"$lx_clp_found" = x"yes"; then
77 77
    if test x"$with_coin" != x"no"; then
78 78
      AC_MSG_CHECKING([for CBC])
79 79

	
80 80
      if test x"$with_coin_includedir" != x"no"; then
81 81
        CBC_CXXFLAGS="-I$with_coin_includedir"
82 82
      elif test x"$with_coin" != x"yes"; then
83 83
        CBC_CXXFLAGS="-I$with_coin/include"
84 84
      fi
85 85

	
86 86
      if test x"$with_coin_libdir" != x"no"; then
87 87
        CBC_LDFLAGS="-L$with_coin_libdir"
88 88
      elif test x"$with_coin" != x"yes"; then
89 89
        CBC_LDFLAGS="-L$with_coin/lib"
90 90
      fi
91
      CBC_LIBS="-lOsi -lCbc -lOsiCbc -lCbcSolver -lClp -lOsiClp -lCoinUtils -lVol -lOsiVol -lCgl -lm -llapack -lblas"
91
      CBC_LIBS="-lOsi -lCbc -lCbcSolver -lClp -lOsiClp -lCoinUtils -lVol -lOsiVol -lCgl -lm -llapack -lblas"
92 92

	
93 93
      lx_save_cxxflags="$CXXFLAGS"
94 94
      lx_save_ldflags="$LDFLAGS"
95 95
      lx_save_libs="$LIBS"
96 96
      CXXFLAGS="$CBC_CXXFLAGS"
97 97
      LDFLAGS="$CBC_LDFLAGS"
98 98
      LIBS="$CBC_LIBS"
99 99

	
100 100
      lx_cbc_test_prog='
101 101
        #include <coin/CbcModel.hpp>
102 102

	
103 103
        int main(int argc, char** argv)
104 104
        {
105 105
          CbcModel cbc;
106 106
          return 0;
107 107
        }'
108 108

	
109 109
      AC_LANG_PUSH(C++)
110 110
      AC_LINK_IFELSE([$lx_cbc_test_prog], [lx_cbc_found=yes], [lx_cbc_found=no])
111 111
      AC_LANG_POP(C++)
112 112

	
113 113
      CXXFLAGS="$lx_save_cxxflags"
114 114
      LDFLAGS="$lx_save_ldflags"
115 115
      LIBS="$lx_save_libs"
116 116

	
117 117
      if test x"$lx_cbc_found" = x"yes"; then
118 118
        AC_DEFINE([LEMON_HAVE_CBC], [1], [Define to 1 if you have CBC.])
119 119
        lx_lp_found=yes
120 120
        AC_DEFINE([LEMON_HAVE_LP], [1], [Define to 1 if you have any LP solver.])
121 121
        lx_mip_found=yes
122 122
        AC_DEFINE([LEMON_HAVE_MIP], [1], [Define to 1 if you have any MIP solver.])
123 123
        AC_MSG_RESULT([yes])
Ignore white space 6 line context
... ...
@@ -21,65 +21,66 @@
21 21
#include <lemon/config.h>
22 22

	
23 23
#ifdef LEMON_HAVE_CPLEX
24 24
#include <lemon/cplex.h>
25 25
#endif
26 26

	
27 27
#ifdef LEMON_HAVE_GLPK
28 28
#include <lemon/glpk.h>
29 29
#endif
30 30

	
31 31
#ifdef LEMON_HAVE_CBC
32 32
#include <lemon/cbc.h>
33 33
#endif
34 34

	
35 35

	
36 36
using namespace lemon;
37 37

	
38 38
void solveAndCheck(MipSolver& mip, MipSolver::ProblemType stat,
39 39
                   double exp_opt) {
40 40
  using std::string;
41 41

	
42 42
  mip.solve();
43 43
  //int decimal,sign;
44 44
  std::ostringstream buf;
45 45
  buf << "Type should be: " << int(stat)<<" and it is "<<int(mip.type());
46 46

	
47 47

	
48 48
  //  itoa(stat,buf1, 10);
49 49
  check(mip.type()==stat, buf.str());
50 50

	
51 51
  if (stat ==  MipSolver::OPTIMAL) {
52 52
    std::ostringstream sbuf;
53
    buf << "Wrong optimal value: the right optimum is " << exp_opt;
53
    sbuf << "Wrong optimal value ("<< mip.solValue()
54
         <<" instead of " << exp_opt << ")";
54 55
    check(std::abs(mip.solValue()-exp_opt) < 1e-3, sbuf.str());
55 56
    //+ecvt(exp_opt,2)
56 57
  }
57 58
}
58 59

	
59 60
void aTest(MipSolver& mip)
60 61
{
61 62
  //The following example is very simple
62 63

	
63 64

	
64 65
  typedef MipSolver::Row Row;
65 66
  typedef MipSolver::Col Col;
66 67

	
67 68

	
68 69
  Col x1 = mip.addCol();
69 70
  Col x2 = mip.addCol();
70 71

	
71 72

	
72 73
  //Objective function
73 74
  mip.obj(x1);
74 75

	
75 76
  mip.max();
76 77

	
77 78
  //Unconstrained optimization
78 79
  mip.solve();
79 80
  //Check it out!
80 81

	
81 82
  //Constraints
82 83
  mip.addRow(2 * x1 + x2 <= 2);
83 84
  Row y2 = mip.addRow(x1 - 2 * x2 <= 0);
84 85

	
85 86
  //Nonnegativity of the variable x1
0 comments (0 inline)