lemon/lp.h
author Peter Kovacs <kpeter@inf.elte.hu>
Tue, 15 Mar 2011 19:32:21 +0100
changeset 936 ddd3c0d3d9bf
parent 627 20dac2104519
child 1064 fc3854d936f7
permissions -rw-r--r--
Implement the scaling Price Refinement heuristic in CostScaling (#417)
instead of Early Termination.

These two heuristics are similar, but the newer one is faster
and not only makes it possible to skip some epsilon phases, but
it can improve the performance of the other phases, as well.
     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-2010
     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 LEMON_HAVE_GLPK
    26 #include <lemon/glpk.h>
    27 #elif LEMON_HAVE_CPLEX
    28 #include <lemon/cplex.h>
    29 #elif LEMON_HAVE_SOPLEX
    30 #include <lemon/soplex.h>
    31 #elif LEMON_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 LEMON_HAVE_GLPK
    73 # define LEMON_DEFAULT_LP GLPK
    74   typedef GlpkLp Lp;
    75 # define LEMON_DEFAULT_MIP GLPK
    76   typedef GlpkMip Mip;
    77 #elif LEMON_HAVE_CPLEX
    78 # define LEMON_DEFAULT_LP CPLEX
    79   typedef CplexLp Lp;
    80 # define LEMON_DEFAULT_MIP CPLEX
    81   typedef CplexMip Mip;
    82 #elif LEMON_HAVE_SOPLEX
    83 # define DEFAULT_LP SOPLEX
    84   typedef SoplexLp Lp;
    85 #elif LEMON_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