lemon/lp.h
author Peter Kovacs <kpeter@inf.elte.hu>
Fri, 17 Apr 2009 18:04:36 +0200
changeset 609 e6927fe719e6
parent 461 08d495d48089
child 627 20dac2104519
permissions -rw-r--r--
Support >= and <= constraints in NetworkSimplex (#219, #234)

By default the same inequality constraints are supported as by
Circulation (the GEQ form), but the LEQ form can also be selected
using the problemType() function.

The documentation of the min. cost flow module is reworked and
extended with important notes and explanations about the different
variants of the problem and about the dual solution and optimality
conditions.
     1 /* -*- mode: C++; indent-tabs-mode: nil; -*-
     2  *
     3  * This file is a part of LEMON, a generic C++ optimization library.
     4  *
     5  * Copyright (C) 2003-2008
     6  * Egervary Jeno Kombinatorikus Optimalizalasi Kutatocsoport
     7  * (Egervary Research Group on Combinatorial Optimization, EGRES).
     8  *
     9  * Permission to use, modify and distribute this software is granted
    10  * provided that this copyright notice appears in all copies. For
    11  * precise terms see the accompanying LICENSE file.
    12  *
    13  * This software is provided "AS IS" with no warranty of any kind,
    14  * express or implied, and with no claim as to its suitability for any
    15  * purpose.
    16  *
    17  */
    18 
    19 #ifndef LEMON_LP_H
    20 #define LEMON_LP_H
    21 
    22 #include<lemon/config.h>
    23 
    24 
    25 #ifdef HAVE_GLPK
    26 #include <lemon/glpk.h>
    27 #elif HAVE_CPLEX
    28 #include <lemon/cplex.h>
    29 #elif HAVE_SOPLEX
    30 #include <lemon/soplex.h>
    31 #elif HAVE_CLP
    32 #include <lemon/clp.h>
    33 #endif
    34 
    35 ///\file
    36 ///\brief Defines a default LP solver
    37 ///\ingroup lp_group
    38 namespace lemon {
    39 
    40 #ifdef DOXYGEN
    41   ///The default LP solver identifier
    42 
    43   ///The default LP solver identifier.
    44   ///\ingroup lp_group
    45   ///
    46   ///Currently, the possible values are \c GLPK, \c CPLEX,
    47   ///\c SOPLEX or \c CLP
    48 #define LEMON_DEFAULT_LP SOLVER
    49   ///The default LP solver
    50 
    51   ///The default LP solver.
    52   ///\ingroup lp_group
    53   ///
    54   ///Currently, it is either \c GlpkLp, \c CplexLp, \c SoplexLp or \c ClpLp
    55   typedef GlpkLp Lp;
    56 
    57   ///The default MIP solver identifier
    58 
    59   ///The default MIP solver identifier.
    60   ///\ingroup lp_group
    61   ///
    62   ///Currently, the possible values are \c GLPK or \c CPLEX
    63 #define LEMON_DEFAULT_MIP SOLVER
    64   ///The default MIP solver.
    65 
    66   ///The default MIP solver.
    67   ///\ingroup lp_group
    68   ///
    69   ///Currently, it is either \c GlpkMip or \c CplexMip
    70   typedef GlpkMip Mip;
    71 #else
    72 #ifdef HAVE_GLPK
    73 # define LEMON_DEFAULT_LP GLPK
    74   typedef GlpkLp Lp;
    75 # define LEMON_DEFAULT_MIP GLPK
    76   typedef GlpkMip Mip;
    77 #elif HAVE_CPLEX
    78 # define LEMON_DEFAULT_LP CPLEX
    79   typedef CplexLp Lp;
    80 # define LEMON_DEFAULT_MIP CPLEX
    81   typedef CplexMip Mip;
    82 #elif HAVE_SOPLEX
    83 # define DEFAULT_LP SOPLEX
    84   typedef SoplexLp Lp;
    85 #elif HAVE_CLP
    86 # define DEFAULT_LP CLP
    87   typedef ClpLp Lp;  
    88 #endif
    89 #endif
    90 
    91 } //namespace lemon
    92 
    93 #endif //LEMON_LP_H