lemon/lp_cplex.h
author hegyi
Mon, 21 Nov 2005 18:03:20 +0000
changeset 1823 cb082cdf3667
parent 1460 7c58aabb9eea
child 1840 173b53b28d7c
permissions -rw-r--r--
NewMapWin has become Dialog instead of Window. Therefore it is created dynamically, when there is need for it, instead of keeping one instance in memory. This solution is slower, but more correct than before.
     1 /* -*- C++ -*-
     2  * lemon/lp_cplex.h - Part of LEMON, a generic C++ optimization library
     3  *
     4  * Copyright (C) 2005 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
     5  * (Egervary Research Group on Combinatorial Optimization, EGRES).
     6  *
     7  * Permission to use, modify and distribute this software is granted
     8  * provided that this copyright notice appears in all copies. For
     9  * precise terms see the accompanying LICENSE file.
    10  *
    11  * This software is provided "AS IS" with no warranty of any kind,
    12  * express or implied, and with no claim as to its suitability for any
    13  * purpose.
    14  *
    15  */
    16 
    17 #ifndef LEMON_LP_CPLEX_H
    18 #define LEMON_LP_CPLEX_H
    19 
    20 ///\file
    21 ///\brief Header of the LEMON-CPLEX lp solver interface.
    22 
    23 #include <lemon/lp_base.h>
    24 
    25 extern "C" {
    26 #include <ilcplex/cplex.h>
    27 }
    28 
    29 namespace lemon {
    30 
    31 
    32   /// \brief Interface for the CPLEX solver
    33   /// 
    34   /// This class implements an interface for the CPLEX LP solver.
    35   class LpCplex : public LpSolverBase {
    36 
    37   public:
    38 
    39     typedef LpSolverBase Parent;
    40     
    41     /// \e
    42     int status;
    43     CPXENVptr env;
    44     CPXLPptr lp;
    45 
    46 
    47     /// \e
    48     LpCplex();
    49     /// \e
    50     ~LpCplex();
    51 
    52   protected:
    53     virtual LpSolverBase &_newLp();
    54     virtual LpSolverBase &_copyLp();
    55 
    56     virtual int _addCol();
    57     virtual int _addRow();
    58     virtual void _eraseCol(int i);
    59     virtual void _eraseRow(int i);
    60     virtual void _setRowCoeffs(int i, 
    61 			       int length,
    62                                const int   * indices, 
    63                                const Value   * values );
    64     virtual void _setColCoeffs(int i, 
    65 			       int length,
    66                                const int   * indices, 
    67                                const Value   * values);
    68     virtual void _setCoeff(int row, int col, Value value);
    69     virtual void _setColLowerBound(int i, Value value);
    70     virtual void _setColUpperBound(int i, Value value);
    71 //     virtual void _setRowLowerBound(int i, Value value);
    72 //     virtual void _setRowUpperBound(int i, Value value);
    73     virtual void _setRowBounds(int i, Value lower, Value upper);
    74     virtual void _setObjCoeff(int i, Value obj_coef);
    75     virtual void _clearObj();
    76     ///\e
    77     
    78     virtual SolveExitStatus _solve();
    79 
    80     virtual Value _getPrimal(int i);
    81     virtual Value _getDual(int i);
    82     
    83     virtual Value _getPrimalValue();
    84     
    85     virtual SolutionStatus _getPrimalStatus();
    86     virtual SolutionStatus _getDualStatus();
    87     virtual ProblemTypes _getProblemType();
    88 
    89     
    90     virtual void _setMax();
    91     virtual void _setMin();
    92 
    93   };
    94 } //END OF NAMESPACE LEMON
    95 
    96 #endif //LEMON_LP_CPLEX_H
    97