COIN-OR::LEMON - Graph Library

source: lemon-0.x/lemon/mip_glpk.cc @ 2149:b437bdee6fd0

Last change on this file since 2149:b437bdee6fd0 was 2149:b437bdee6fd0, checked in by athos, 13 years ago

Some tests added to the test file mip_test.cc. One problem is the verbosity of the mip solver in glpk which I couldn't find how to kill.

File size: 1.8 KB
Line 
1/* -*- C++ -*-
2 *
3 * This file is a part of LEMON, a generic C++ optimization library
4 *
5 * Copyright (C) 2003-2006
6 * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
7 * (Egervary Research Group on Combinatorial Optimization, EGRES).
8 *
9 * Permission to use, modify and distribute this software is granted
10 * provided that this copyright notice appears in all copies. For
11 * precise terms see the accompanying LICENSE file.
12 *
13 * This software is provided "AS IS" with no warranty of any kind,
14 * express or implied, and with no claim as to its suitability for any
15 * purpose.
16 *
17 */
18
19#ifndef LEMON_ILP_GLPK_CC
20#define LEMON_ILP_GLPK_CC
21
22///\file
23///\brief Implementation of the LEMON-GLPK lp solver interface.
24
25#include <lemon/mip_glpk.h>
26
27namespace lemon {
28 
29  MipGlpk::MipGlpk() {
30    lpx_set_class(lp,LPX_MIP);
31  }
32
33  void MipGlpk::_colType(int i, MipGlpk::ColTypes col_type){
34    switch (col_type){
35      case INTEGER:
36        lpx_set_col_kind(lp,i,LPX_IV);
37        break;
38      case REAL:
39        lpx_set_col_kind(lp,i,LPX_CV);
40        break;
41    default:;
42        //FIXME problem
43    }
44  }
45 
46  MipGlpk::ColTypes MipGlpk::_colType(int i){
47    switch (lpx_get_col_kind(lp,i)){
48    case LPX_IV:
49      return INTEGER;//Or binary
50    case LPX_CV:
51      return REAL;
52    default:
53      return REAL;//Error!
54    }
55   
56  }
57 
58  LpGlpk::SolveExitStatus MipGlpk::_solve(){
59    int result = lpx_simplex(lp);
60    result = lpx_integer(lp);
61    switch (result){
62      case LPX_E_OBJLL:
63      case LPX_E_OBJUL:
64      case LPX_E_ITLIM:
65      case LPX_E_TMLIM:
66      case LPX_E_OK:
67        return SOLVED;
68      default:
69        return UNSOLVED;
70    }
71  }
72 
73  MipGlpk::Value MipGlpk::_getPrimal(int i){
74    return lpx_mip_col_val(lp,i);
75  }
76 
77  MipGlpk::Value MipGlpk::_getPrimalValue(){
78    return lpx_mip_obj_val(lp);
79  }
80} //END OG NAMESPACE LEMON
81
82#endif
Note: See TracBrowser for help on using the repository browser.