[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