COIN-OR::LEMON - Graph Library

source: lemon-0.x/lemon/lp_soplex.h @ 2339:c329fe995b40

Last change on this file since 2339:c329fe995b40 was 2313:d9daf826e28a, checked in by Balazs Dezso, 13 years ago

Preliminary soplex support

File size: 2.5 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_LP_SOPLEX_H
20#define LEMON_LP_SOPLEX_H
21
22///\file
23///\brief Header of the LEMON-SOPLEX lp solver interface.
24
25#include <vector>
26#include <string>
27
28#include <lemon/lp_base.h>
29
30// Forward declaration
31namespace soplex {
32  class SoPlex;
33}
34
35namespace lemon {
36
37  /// \brief Interface for the SOPLEX solver
38  ///
39  /// This class implements an interface for the SOPLEX LP solver.
40  class LpSoplex :virtual public LpSolverBase {
41  protected:
42
43    soplex::SoPlex* soplex;
44
45    std::vector<std::string> colNames;
46
47    std::vector<Value> primal;
48    std::vector<Value> dual;
49
50
51  public:
52
53    typedef LpSolverBase Parent;
54   
55
56    /// \e
57    LpSoplex();
58    /// \e
59    ~LpSoplex();
60
61  protected:
62
63    virtual LpSolverBase &_newLp();
64    virtual LpSolverBase &_copyLp();
65
66    virtual int _addCol();
67    virtual int _addRow();
68    virtual void _eraseCol(int i);
69    virtual void _eraseRow(int i);
70    virtual void _getColName(int col,       std::string & name);
71    virtual void _setColName(int col, const std::string & name);
72    virtual void _setRowCoeffs(int i, LpRowIterator b, LpRowIterator e);
73    virtual void _setColCoeffs(int i, LpColIterator b, LpColIterator e);
74    virtual void _setCoeff(int row, int col, Value value);
75    virtual void _setColLowerBound(int i, Value value);
76    virtual void _setColUpperBound(int i, Value value);
77    virtual void _setRowBounds(int i, Value lower, Value upper);
78    virtual void _setObjCoeff(int i, Value obj_coef);
79    virtual void _clearObj();
80   
81    virtual SolveExitStatus _solve();
82    virtual Value _getPrimal(int i);
83    virtual Value _getDual(int i);
84    virtual Value _getPrimalValue();
85    virtual bool _isBasicCol(int i);
86   
87    virtual SolutionStatus _getPrimalStatus();
88    virtual SolutionStatus _getDualStatus();
89    virtual ProblemTypes _getProblemType();
90
91   
92    virtual void _setMax();
93    virtual void _setMin();
94
95  };
96} //END OF NAMESPACE LEMON
97
98#endif //LEMON_LP_SOPLEX_H
99
Note: See TracBrowser for help on using the repository browser.