lemon/lp.h
author Peter Kovacs <kpeter@inf.elte.hu>
Tue, 24 Mar 2009 00:18:25 +0100
changeset 596 8c3112a66878
parent 461 08d495d48089
child 622 20dac2104519
permissions -rw-r--r--
Use XTI implementation instead of ATI in NetworkSimplex (#234)

XTI (eXtended Threaded Index) is an imporved version of the widely
known ATI (Augmented Threaded Index) method for storing and updating
the spanning tree structure in Network Simplex algorithms.

In the ATI data structure three indices are stored for each node:
predecessor, thread and depth. In the XTI data structure depth is
replaced by the number of successors and the last successor
(according to the thread index).
     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