diff -r 72c7075ad5ba -r f2ef1aa8189a lemon/lp_cplex.cc --- a/lemon/lp_cplex.cc Mon Feb 12 17:54:36 2007 +0000 +++ b/lemon/lp_cplex.cc Wed Feb 14 13:50:25 2007 +0000 @@ -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