lemon/lp_cplex.h
author hegyi
Thu, 05 Jan 2006 12:30:09 +0000
changeset 1878 409a31271efd
parent 1840 173b53b28d7c
child 1895 5b01801efbc0
permissions -rw-r--r--
Several changes. \n If new map is added to mapstorage it emits signal with the name of the new map. This was important, because from now on not only tha mapwin should be updated. \n Furthermore algobox gets a pointer to mapstorage instead of only the mapnames from it. This is important because without it it would be complicated to pass all of the required maps to algobox.
alpar@1381
     1
/* -*- C++ -*-
ladanyi@1435
     2
 * lemon/lp_cplex.h - Part of LEMON, a generic C++ optimization library
alpar@1381
     3
 *
alpar@1875
     4
 * Copyright (C) 2006 Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
alpar@1381
     5
 * (Egervary Research Group on Combinatorial Optimization, EGRES).
alpar@1381
     6
 *
alpar@1381
     7
 * Permission to use, modify and distribute this software is granted
alpar@1381
     8
 * provided that this copyright notice appears in all copies. For
alpar@1381
     9
 * precise terms see the accompanying LICENSE file.
alpar@1381
    10
 *
alpar@1381
    11
 * This software is provided "AS IS" with no warranty of any kind,
alpar@1381
    12
 * express or implied, and with no claim as to its suitability for any
alpar@1381
    13
 * purpose.
alpar@1381
    14
 *
alpar@1381
    15
 */
alpar@1381
    16
alpar@1381
    17
#ifndef LEMON_LP_CPLEX_H
alpar@1381
    18
#define LEMON_LP_CPLEX_H
alpar@1381
    19
alpar@1381
    20
///\file
alpar@1381
    21
///\brief Header of the LEMON-CPLEX lp solver interface.
alpar@1381
    22
alpar@1381
    23
#include <lemon/lp_base.h>
alpar@1398
    24
alpar@1381
    25
extern "C" {
alpar@1381
    26
#include <ilcplex/cplex.h>
alpar@1381
    27
}
alpar@1381
    28
alpar@1381
    29
namespace lemon {
alpar@1381
    30
alpar@1381
    31
alpar@1398
    32
  /// \brief Interface for the CPLEX solver
alpar@1381
    33
  /// 
alpar@1398
    34
  /// This class implements an interface for the CPLEX LP solver.
alpar@1381
    35
  class LpCplex : public LpSolverBase {
alpar@1381
    36
alpar@1381
    37
  public:
alpar@1381
    38
alpar@1381
    39
    typedef LpSolverBase Parent;
alpar@1381
    40
    
alpar@1381
    41
    /// \e
alpar@1381
    42
    int status;
alpar@1381
    43
    CPXENVptr env;
alpar@1381
    44
    CPXLPptr lp;
alpar@1381
    45
alpar@1381
    46
alpar@1381
    47
    /// \e
alpar@1381
    48
    LpCplex();
alpar@1381
    49
    /// \e
alpar@1381
    50
    ~LpCplex();
alpar@1381
    51
alpar@1381
    52
  protected:
alpar@1381
    53
    virtual LpSolverBase &_newLp();
alpar@1381
    54
    virtual LpSolverBase &_copyLp();
alpar@1381
    55
alpar@1381
    56
    virtual int _addCol();
alpar@1381
    57
    virtual int _addRow();
athos@1432
    58
    virtual void _eraseCol(int i);
athos@1432
    59
    virtual void _eraseRow(int i);
alpar@1381
    60
    virtual void _setRowCoeffs(int i, 
alpar@1381
    61
			       int length,
alpar@1381
    62
                               const int   * indices, 
alpar@1381
    63
                               const Value   * values );
alpar@1381
    64
    virtual void _setColCoeffs(int i, 
alpar@1381
    65
			       int length,
alpar@1381
    66
                               const int   * indices, 
alpar@1381
    67
                               const Value   * values);
athos@1431
    68
    virtual void _setCoeff(int row, int col, Value value);
alpar@1381
    69
    virtual void _setColLowerBound(int i, Value value);
alpar@1381
    70
    virtual void _setColUpperBound(int i, Value value);
athos@1405
    71
//     virtual void _setRowLowerBound(int i, Value value);
athos@1405
    72
//     virtual void _setRowUpperBound(int i, Value value);
alpar@1381
    73
    virtual void _setRowBounds(int i, Value lower, Value upper);
alpar@1381
    74
    virtual void _setObjCoeff(int i, Value obj_coef);
alpar@1381
    75
    virtual void _clearObj();
alpar@1381
    76
    ///\e
alpar@1381
    77
    
alpar@1381
    78
    virtual SolveExitStatus _solve();
alpar@1381
    79
    virtual Value _getPrimal(int i);
marci@1787
    80
    virtual Value _getDual(int i);
alpar@1381
    81
    virtual Value _getPrimalValue();
marci@1840
    82
    virtual bool _isBasicCol(int i);
alpar@1381
    83
    
alpar@1381
    84
    virtual SolutionStatus _getPrimalStatus();
athos@1460
    85
    virtual SolutionStatus _getDualStatus();
athos@1460
    86
    virtual ProblemTypes _getProblemType();
alpar@1381
    87
alpar@1381
    88
    
alpar@1381
    89
    virtual void _setMax();
alpar@1381
    90
    virtual void _setMin();
alpar@1381
    91
alpar@1381
    92
  };
alpar@1381
    93
} //END OF NAMESPACE LEMON
alpar@1381
    94
alpar@1381
    95
#endif //LEMON_LP_CPLEX_H
alpar@1381
    96