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