Changeset 2149:b437bdee6fd0 in lemon-0.x
- Timestamp:
- 07/18/06 13:11:54 (19 years ago)
- Branch:
- default
- Phase:
- public
- Convert:
- svn:c9d7d8f5-90d6-0310-b91f-818b3a526b0e/lemon/trunk@2863
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
lemon/mip_glpk.cc
r2148 r2149 31 31 } 32 32 33 void MipGlpk::_colType(int i, ColTypes col_type){33 void MipGlpk::_colType(int i, MipGlpk::ColTypes col_type){ 34 34 switch (col_type){ 35 35 case INTEGER: … … 39 39 lpx_set_col_kind(lp,i,LPX_CV); 40 40 break; 41 default:41 default:; 42 42 //FIXME problem 43 43 } 44 44 } 45 45 46 ColTypes MipGlpk::_colType(int i){46 MipGlpk::ColTypes MipGlpk::_colType(int i){ 47 47 switch (lpx_get_col_kind(lp,i)){ 48 48 case LPX_IV: -
test/mip_test.cc
r2147 r2149 1 1 #include <lemon/lp.h> 2 #include "test_tools.h" 2 3 3 4 using namespace lemon; 4 5 5 int main(){ 6 void solveAndCheck(Mip& lp, LpSolverBase::SolutionStatus stat, 7 double exp_opt) { 8 using std::string; 9 lp.solve(); 10 //int decimal,sign; 11 std::ostringstream buf; 12 buf << "Primalstatus should be: " << int(stat)<<" and it is "<<int(lp.primalStatus()); 13 14 // itoa(stat,buf1, 10); 15 check(lp.primalStatus()==stat, buf.str()); 16 17 if (stat == LpSolverBase::OPTIMAL) { 18 std::ostringstream buf; 19 buf << "Wrong optimal value: the right optimum is " << exp_opt; 20 check(std::abs(lp.primalValue()-exp_opt) < 1e-3, buf.str()); 21 //+ecvt(exp_opt,2) 22 } 23 } 24 25 void aTest(Mip& mip) 26 { 27 //The following example is very simple 28 29 typedef Mip::Row Row; 30 typedef Mip::Col Col; 6 31 7 32 33 Col x1 = mip.addCol(); 34 Col x2 = mip.addCol(); 35 36 37 38 //Constraints 39 mip.addRow(2*x1+x2 <=2); 40 mip.addRow(x1-2*x2 <=0); 41 42 //Nonnegativity of the variable x1 43 mip.colLowerBound(x1, 0); 44 45 46 47 //Objective function 48 mip.setObj(x1); 49 50 mip.max(); 51 52 53 //Maximization of x1 54 //over the triangle with vertices 55 double expected_opt=4.0/5.0; 56 solveAndCheck(mip, Mip::OPTIMAL, expected_opt); 57 58 //Restrict x2 to integer 59 mip.colType(x2,Mip::INTEGER); 60 expected_opt=1.0/2.0; 61 solveAndCheck(mip, Mip::OPTIMAL, expected_opt); 62 63 64 //Restrict both to integer 65 mip.colType(x1,Mip::INTEGER); 66 expected_opt=0; 67 solveAndCheck(mip, Mip::OPTIMAL, expected_opt); 68 69 70 71 } 72 73 74 int main() 75 { 76 8 77 #ifdef HAVE_GLPK 9 //This needs some thinking 78 MipGlpk mip1; 79 aTest(mip1); 10 80 #endif 11 81
Note: See TracChangeset
for help on using the changeset viewer.