32 class SoPlex; |
32 class SoPlex; |
33 } |
33 } |
34 |
34 |
35 namespace lemon { |
35 namespace lemon { |
36 |
36 |
|
37 /// \ingroup gen_opt_group |
|
38 /// |
37 /// \brief Interface for the SOPLEX solver |
39 /// \brief Interface for the SOPLEX solver |
38 /// |
40 /// |
39 /// This class implements an interface for the SOPLEX LP solver. |
41 /// This class implements an interface for the SoPlex LP solver. |
|
42 /// The SoPlex library is an object oriented lp solver library |
|
43 /// developed at the Konrad-Zuse-Zentrum für Informationstechnik |
|
44 /// Berlin (ZIB). You can find detailed information about it at the |
|
45 /// <tt>http://soplex.zib.de</tt> address. |
40 class LpSoplex :virtual public LpSolverBase { |
46 class LpSoplex :virtual public LpSolverBase { |
41 protected: |
47 protected: |
42 |
48 |
43 _lp_bits::RelocateIdHandler relocateIdHandler; |
49 _lp_bits::RelocateIdHandler relocateIdHandler; |
44 |
50 |
45 soplex::SoPlex* soplex; |
51 soplex::SoPlex* soplex; |
46 bool solved; |
52 bool solved; |
47 |
53 |
48 std::vector<std::string> colNames; |
54 std::vector<std::string> colNames; |
|
55 std::map<std::string, int> invColNames; |
49 |
56 |
50 std::vector<Value> primal_value; |
57 std::vector<Value> primal_value; |
51 std::vector<Value> dual_value; |
58 std::vector<Value> dual_value; |
52 |
59 |
53 |
60 |
68 |
75 |
69 virtual int _addCol(); |
76 virtual int _addCol(); |
70 virtual int _addRow(); |
77 virtual int _addRow(); |
71 virtual void _eraseCol(int i); |
78 virtual void _eraseCol(int i); |
72 virtual void _eraseRow(int i); |
79 virtual void _eraseRow(int i); |
73 virtual void _getColName(int col, std::string & name); |
80 virtual void _getColName(int col, std::string & name) const; |
74 virtual void _setColName(int col, const std::string & name); |
81 virtual void _setColName(int col, const std::string & name); |
|
82 virtual int _colByName(const std::string& name) const; |
75 virtual void _setRowCoeffs(int i, ConstRowIterator b, ConstRowIterator e); |
83 virtual void _setRowCoeffs(int i, ConstRowIterator b, ConstRowIterator e); |
76 virtual void _getRowCoeffs(int i, RowIterator b); |
84 virtual void _getRowCoeffs(int i, RowIterator b) const; |
77 virtual void _setColCoeffs(int i, ConstColIterator b, ConstColIterator e); |
85 virtual void _setColCoeffs(int i, ConstColIterator b, ConstColIterator e); |
78 virtual void _getColCoeffs(int i, ColIterator b); |
86 virtual void _getColCoeffs(int i, ColIterator b) const; |
79 virtual void _setCoeff(int row, int col, Value value); |
87 virtual void _setCoeff(int row, int col, Value value); |
80 virtual Value _getCoeff(int row, int col); |
88 virtual Value _getCoeff(int row, int col) const; |
81 virtual void _setColLowerBound(int i, Value value); |
89 virtual void _setColLowerBound(int i, Value value); |
82 virtual Value _getColLowerBound(int i); |
90 virtual Value _getColLowerBound(int i) const; |
83 virtual void _setColUpperBound(int i, Value value); |
91 virtual void _setColUpperBound(int i, Value value); |
84 virtual Value _getColUpperBound(int i); |
92 virtual Value _getColUpperBound(int i) const; |
85 virtual void _setRowBounds(int i, Value lower, Value upper); |
93 virtual void _setRowBounds(int i, Value lower, Value upper); |
86 virtual void _getRowBounds(int i, Value &lower, Value &upper); |
94 virtual void _getRowBounds(int i, Value &lower, Value &upper) const; |
87 virtual void _setObjCoeff(int i, Value obj_coef); |
95 virtual void _setObjCoeff(int i, Value obj_coef); |
88 virtual Value _getObjCoeff(int i); |
96 virtual Value _getObjCoeff(int i) const; |
89 virtual void _clearObj(); |
97 virtual void _clearObj(); |
90 |
98 |
91 virtual SolveExitStatus _solve(); |
99 virtual SolveExitStatus _solve(); |
92 virtual Value _getPrimal(int i); |
100 virtual Value _getPrimal(int i) const; |
93 virtual Value _getDual(int i); |
101 virtual Value _getDual(int i) const; |
94 virtual Value _getPrimalValue(); |
102 virtual Value _getPrimalValue() const; |
95 virtual bool _isBasicCol(int i); |
103 virtual bool _isBasicCol(int i) const; |
96 |
104 |
97 virtual SolutionStatus _getPrimalStatus(); |
105 virtual SolutionStatus _getPrimalStatus() const; |
98 virtual SolutionStatus _getDualStatus(); |
106 virtual SolutionStatus _getDualStatus() const; |
99 virtual ProblemTypes _getProblemType(); |
107 virtual ProblemTypes _getProblemType() const; |
100 |
108 |
101 |
109 |
102 virtual void _setMax(); |
110 virtual void _setMax(); |
103 virtual void _setMin(); |
111 virtual void _setMin(); |
104 virtual bool _isMax(); |
112 virtual bool _isMax() const; |
105 |
113 |
106 }; |
114 }; |
107 } //END OF NAMESPACE LEMON |
115 } //END OF NAMESPACE LEMON |
108 |
116 |
109 #endif //LEMON_LP_SOPLEX_H |
117 #endif //LEMON_LP_SOPLEX_H |