[Lemon-commits] athos: r3167 - hugo/trunk/lemon
Lemon SVN
svn at lemon.cs.elte.hu
Wed Feb 14 14:50:26 CET 2007
Author: athos
Date: Wed Feb 14 14:50:25 2007
New Revision: 3167
Modified:
hugo/trunk/lemon/lp_cplex.cc
hugo/trunk/lemon/lp_cplex.h
Log:
Implemented virtual functions of class LpCplex.
Modified: hugo/trunk/lemon/lp_cplex.cc
==============================================================================
--- hugo/trunk/lemon/lp_cplex.cc (original)
+++ hugo/trunk/lemon/lp_cplex.cc Wed Feb 14 14:50:25 2007
@@ -147,6 +147,13 @@
CPXchgcoef(env, lp, row, col, value);
}
+ LpCplex::Value LpCplex::_getCoeff(int row, int col)
+ {
+ LpCplex::Value value;
+ CPXgetcoef(env, lp, row, col, &value);
+ return value;
+ }
+
void LpCplex::_setColLowerBound(int i, Value value)
{
int indices[1];
@@ -158,6 +165,13 @@
status = CPXchgbds(env, lp, 1, indices, lu, bd);
}
+
+ LpCplex::Value LpCplex::_getColLowerBound(int i)
+ {
+ LpCplex::Value x;
+ CPXgetlb (env, lp, &x, i, i);
+ return x;
+ }
void LpCplex::_setColUpperBound(int i, Value value)
{
@@ -170,6 +184,13 @@
status = CPXchgbds(env, lp, 1, indices, lu, bd);
}
+ LpCplex::Value LpCplex::_getColUpperBound(int i)
+ {
+ LpCplex::Value x;
+ CPXgetub (env, lp, &x, i, i);
+ return x;
+ }
+
//This will be easier to implement
void LpCplex::_setRowBounds(int i, Value lb, Value ub)
{
@@ -242,11 +263,45 @@
// // status = CPXchgcoef(env, lp, i, -2, value_rng);
// }
+ void LpCplex::_getRowBounds(int i, Value &lb, Value &ub)
+ {
+ char sense;
+ CPXgetsense(env, lp, &sense,i,i);
+ lb=-INF;
+ ub=INF;
+ switch (sense)
+ {
+ case 'L':
+ CPXgetcoef(env, lp, i, -1, &ub);
+ break;
+ case 'G':
+ CPXgetcoef(env, lp, i, -1, &lb);
+ break;
+ case 'E':
+ CPXgetcoef(env, lp, i, -1, &lb);
+ ub=lb;
+ break;
+ case 'R':
+ CPXgetcoef(env, lp, i, -1, &lb);
+ Value x;
+ CPXgetcoef(env, lp, i, -2, &x);
+ ub=lb+x;
+ break;
+ }
+ }
+
void LpCplex::_setObjCoeff(int i, Value obj_coef)
{
CPXchgcoef(env, lp, -1, i, obj_coef);
}
+ LpCplex::Value LpCplex::_getObjCoeff(int i)
+ {
+ Value x;
+ CPXgetcoef(env, lp, -1, i, &x);
+ return x;
+ }
+
void LpCplex::_clearObj()
{
for (int i=0;i< CPXgetnumcols(env, lp);++i){
@@ -564,6 +619,14 @@
{
CPXchgobjsen(env, lp, CPX_MIN);
}
+
+ bool LpCplex::_isMax()
+ {
+ if (CPXgetobjsen(env, lp)==CPX_MAX)
+ return true;
+ else
+ return false;
+ }
} //namespace lemon
Modified: hugo/trunk/lemon/lp_cplex.h
==============================================================================
--- hugo/trunk/lemon/lp_cplex.h (original)
+++ hugo/trunk/lemon/lp_cplex.h Wed Feb 14 14:50:25 2007
@@ -55,6 +55,7 @@
virtual LpSolverBase &_newLp();
virtual LpSolverBase &_copyLp();
+
virtual int _addCol();
virtual int _addRow();
virtual void _eraseCol(int i);
@@ -64,14 +65,21 @@
virtual void _setRowCoeffs(int i, LpRowIterator b, LpRowIterator e);
virtual void _setColCoeffs(int i, LpColIterator b, LpColIterator e);
virtual void _setCoeff(int row, int col, Value value);
+ virtual Value _getCoeff(int row, int col);
+
virtual void _setColLowerBound(int i, Value value);
+ virtual Value _getColLowerBound(int i);
virtual void _setColUpperBound(int i, Value value);
+ virtual Value _getColUpperBound(int i);
+
// virtual void _setRowLowerBound(int i, Value value);
// virtual void _setRowUpperBound(int i, Value value);
virtual void _setRowBounds(int i, Value lower, Value upper);
+ virtual void _getRowBounds(int i, Value &lb, Value &ub);
virtual void _setObjCoeff(int i, Value obj_coef);
+ virtual Value _getObjCoeff(int i);
virtual void _clearObj();
- ///\e
+
virtual SolveExitStatus _solve();
virtual Value _getPrimal(int i);
@@ -87,6 +95,8 @@
virtual void _setMax();
virtual void _setMin();
+ virtual bool _isMax();
+
};
} //END OF NAMESPACE LEMON
More information about the Lemon-commits
mailing list