[Lemon-commits] Alpar Juttner: Enable/disable options for LP/MIP...
Lemon HG
hg at lemon.cs.elte.hu
Wed Jul 24 11:11:12 CEST 2013
details: http://lemon.cs.elte.hu/hg/lemon/rev/fc3854d936f7
changeset: 1232:fc3854d936f7
user: Alpar Juttner <alpar [at] cs.elte.hu>
date: Sat May 25 06:59:31 2013 +0200
description:
Enable/disable options for LP/MIP backends (#465)
diffstat:
CMakeLists.txt | 61 +++++++++++++++++++++++++++++++++++++++++++++++++--
INSTALL | 48 ++++++++++++++++++++++++++++++++++++++++-
cmake/FindCOIN.cmake | 7 -----
cmake/FindGLPK.cmake | 7 -----
cmake/FindILOG.cmake | 6 -----
lemon/cbc.h | 1 -
lemon/config.h.in | 2 +
lemon/lp.h | 29 +++++++++++------------
test/lp_test.cc | 3 +-
9 files changed, 122 insertions(+), 42 deletions(-)
diffs (259 lines):
diff -r 1782aa72495a -r fc3854d936f7 CMakeLists.txt
--- a/CMakeLists.txt Fri Jul 20 17:09:01 2012 +0200
+++ b/CMakeLists.txt Sat May 25 06:59:31 2013 +0200
@@ -61,9 +61,64 @@
FIND_PACKAGE(Doxygen)
FIND_PACKAGE(Ghostscript)
-FIND_PACKAGE(GLPK 4.33)
-FIND_PACKAGE(ILOG)
-FIND_PACKAGE(COIN)
+
+SET(LEMON_ENABLE_GLPK YES CACHE STRING "Enable GLPK solver backend.")
+SET(LEMON_ENABLE_ILOG YES CACHE STRING "Enable ILOG (CPLEX) solver backend.")
+SET(LEMON_ENABLE_COIN YES CACHE STRING "Enable COIN solver backend.")
+
+IF(LEMON_ENABLE_GLPK)
+ FIND_PACKAGE(GLPK 4.33)
+ENDIF(LEMON_ENABLE_GLPK)
+IF(LEMON_ENABLE_ILOG)
+ FIND_PACKAGE(ILOG)
+ENDIF(LEMON_ENABLE_ILOG)
+IF(LEMON_ENABLE_COIN)
+ FIND_PACKAGE(COIN)
+ENDIF(LEMON_ENABLE_COIN)
+
+IF(GLPK_FOUND)
+ SET(LEMON_HAVE_LP TRUE)
+ SET(LEMON_HAVE_MIP TRUE)
+ SET(LEMON_HAVE_GLPK TRUE)
+ENDIF(GLPK_FOUND)
+IF(ILOG_FOUND)
+ SET(LEMON_HAVE_LP TRUE)
+ SET(LEMON_HAVE_MIP TRUE)
+ SET(LEMON_HAVE_ILOG TRUE)
+ENDIF(ILOG_FOUND)
+IF(COIN_FOUND)
+ SET(LEMON_HAVE_LP TRUE)
+ SET(LEMON_HAVE_MIP TRUE)
+ SET(LEMON_HAVE_CLP TRUE)
+ SET(LEMON_HAVE_CBC TRUE)
+ENDIF(COIN_FOUND)
+
+IF(ILOG_FOUND)
+ SET(DEFAULT_LP "CPLEX")
+ SET(DEFAULT_MIP "CPLEX")
+ELSEIF(COIN_FOUND)
+ SET(DEFAULT_LP "CLP")
+ SET(DEFAULT_MIP "CBC")
+ELSEIF(GLPK_FOUND)
+ SET(DEFAULT_LP "GLPK")
+ SET(DEFAULT_MIP "GLPK")
+ENDIF()
+
+IF(NOT LEMON_DEFAULT_LP OR
+ (NOT ILOG_FOUND AND (LEMON_DEFAULT_LP STREQUAL "CPLEX")) OR
+ (NOT COIN_FOUND AND (LEMON_DEFAULT_LP STREQUAL "CLP")) OR
+ (NOT GLPK_FOUND AND (LEMON_DEFAULT_LP STREQUAL "GLPK")))
+ SET(LEMON_DEFAULT_LP ${DEFAULT_LP} CACHE STRING
+ "Default LP solver backend (GLPK, CPLEX or CLP)" FORCE)
+ENDIF()
+IF(NOT LEMON_DEFAULT_MIP OR
+ (NOT ILOG_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "CPLEX")) OR
+ (NOT COIN_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "CBC")) OR
+ (NOT GLPK_FOUND AND (LEMON_DEFAULT_MIP STREQUAL "GLPK")))
+ SET(LEMON_DEFAULT_MIP ${DEFAULT_MIP} CACHE STRING
+ "Default MIP solver backend (GLPK, CPLEX or CBC)" FORCE)
+ENDIF()
+
IF(DEFINED ENV{LEMON_CXX_WARNING})
SET(CXX_WARNING $ENV{LEMON_CXX_WARNING})
diff -r 1782aa72495a -r fc3854d936f7 INSTALL
--- a/INSTALL Fri Jul 20 17:09:01 2012 +0200
+++ b/INSTALL Sat May 25 06:59:31 2013 +0200
@@ -106,11 +106,57 @@
Build shared library instead of static one. Think twice if you
really want to use this option.
+-DLEMON_DOC_SOURCE_BROWSER=YES
+
+ Include the browsable cross referenced LEMON source code into the
+ doc. It makes the doc quite bloated, but may be useful for
+ developing LEMON itself.
+
+-DLEMON_DOC_USE_MATHJAX=YES
+
+ Use MathJax (http://mathjax.org) for rendering the math formulae in
+ the doc. It of much higher quality compared to the default LaTeX
+ generated static images and it allows copy&paste of the formulae to
+ LaTeX, Open Office, MS Word etc. documents.
+
+ On the other hand, it needs either Internet access or a locally
+ installed version of MathJax to properly render the doc.
+
+-DLEMON_DOC_MATHJAX_RELPATH=DIRECTORY
+
+ The location of the MathJax library. It defaults to
+ http://www.mathjax.org/mathjax, which necessitates Internet access
+ for proper rendering. The easiest way to make it usable offline is
+ to set this parameter to 'mathjax' and copy all files of the MathJax
+ library into the 'doc/html/mathjax' subdirectory of the build
+ location.
+
+ See http://docs.mathjax.org/en/latest/installation.html for more details.
+
+
+-DLEMON_ENABLE_GLPK=NO
+-DLEMON_ENABLE_COIN=NO
+-DLEMON_ENABLE_ILOG=NO
+
+ Enable optional third party libraries. They are all enabled by default.
+
+-DLEMON_DEFAULT_LP=GLPK
+
+ Sets the default LP solver backend. The supported values are
+ CPLEX, CLP and GLPK. By default, it is set to the first one which
+ is enabled and succesfully discovered.
+
+-DLEMON_DEFAULT_MIP=GLPK
+
+ Sets the default MIP solver backend. The supported values are
+ CPLEX, CBC and GLPK. By default, it is set to the first one which
+ is enabled and succesfully discovered.
+
-DGLPK_ROOT_DIR=DIRECTORY
-DCOIN_ROOT_DIR=DIRECTORY
-DILOG_ROOT_DIR=DIRECTORY
- Install root directory prefixes of optional third party libraries.
+ Root directory prefixes of optional third party libraries.
Makefile Variables
==================
diff -r 1782aa72495a -r fc3854d936f7 cmake/FindCOIN.cmake
--- a/cmake/FindCOIN.cmake Fri Jul 20 17:09:01 2012 +0200
+++ b/cmake/FindCOIN.cmake Sat May 25 06:59:31 2013 +0200
@@ -108,10 +108,3 @@
COIN_ZLIB_LIBRARY
COIN_BZ2_LIBRARY
)
-
-IF(COIN_FOUND)
- SET(LEMON_HAVE_LP TRUE)
- SET(LEMON_HAVE_MIP TRUE)
- SET(LEMON_HAVE_CLP TRUE)
- SET(LEMON_HAVE_CBC TRUE)
-ENDIF(COIN_FOUND)
diff -r 1782aa72495a -r fc3854d936f7 cmake/FindGLPK.cmake
--- a/cmake/FindGLPK.cmake Fri Jul 20 17:09:01 2012 +0200
+++ b/cmake/FindGLPK.cmake Sat May 25 06:59:31 2013 +0200
@@ -53,10 +53,3 @@
ENDIF(GLPK_FOUND)
MARK_AS_ADVANCED(GLPK_LIBRARY GLPK_INCLUDE_DIR GLPK_BIN_DIR)
-
-IF(GLPK_FOUND)
- SET(LEMON_HAVE_LP TRUE)
- SET(LEMON_HAVE_MIP TRUE)
- SET(LEMON_HAVE_GLPK TRUE)
-ENDIF(GLPK_FOUND)
-
diff -r 1782aa72495a -r fc3854d936f7 cmake/FindILOG.cmake
--- a/cmake/FindILOG.cmake Fri Jul 20 17:09:01 2012 +0200
+++ b/cmake/FindILOG.cmake Sat May 25 06:59:31 2013 +0200
@@ -100,9 +100,3 @@
ILOG_CPLEX_LIBRARY ILOG_CPLEX_INCLUDE_DIR ILOG_CPLEX_DLL
ILOG_CONCERT_LIBRARY ILOG_CONCERT_INCLUDE_DIR ILOG_CONCERT_DLL
)
-
-IF(ILOG_FOUND)
- SET(LEMON_HAVE_LP TRUE)
- SET(LEMON_HAVE_MIP TRUE)
- SET(LEMON_HAVE_CPLEX TRUE)
-ENDIF(ILOG_FOUND)
diff -r 1782aa72495a -r fc3854d936f7 lemon/cbc.h
--- a/lemon/cbc.h Fri Jul 20 17:09:01 2012 +0200
+++ b/lemon/cbc.h Sat May 25 06:59:31 2013 +0200
@@ -16,7 +16,6 @@
*
*/
-// -*- C++ -*-
#ifndef LEMON_CBC_H
#define LEMON_CBC_H
diff -r 1782aa72495a -r fc3854d936f7 lemon/config.h.in
--- a/lemon/config.h.in Fri Jul 20 17:09:01 2012 +0200
+++ b/lemon/config.h.in Sat May 25 06:59:31 2013 +0200
@@ -6,5 +6,7 @@
#cmakedefine LEMON_HAVE_CPLEX 1
#cmakedefine LEMON_HAVE_CLP 1
#cmakedefine LEMON_HAVE_CBC 1
+#cmakedefine LEMON_DEFAULT_LP @LEMON_DEFAULT_LP@
+#cmakedefine LEMON_DEFAULT_MIP @LEMON_DEFAULT_MIP@
#cmakedefine LEMON_USE_PTHREAD 1
#cmakedefine LEMON_USE_WIN32_THREADS 1
diff -r 1782aa72495a -r fc3854d936f7 lemon/lp.h
--- a/lemon/lp.h Fri Jul 20 17:09:01 2012 +0200
+++ b/lemon/lp.h Sat May 25 06:59:31 2013 +0200
@@ -59,32 +59,31 @@
///The default MIP solver identifier.
///\ingroup lp_group
///
- ///Currently, the possible values are \c GLPK or \c CPLEX
+ ///Currently, the possible values are \c GLPK, \c CPLEX or \c CBC
#define LEMON_DEFAULT_MIP SOLVER
///The default MIP solver.
///The default MIP solver.
///\ingroup lp_group
///
- ///Currently, it is either \c GlpkMip or \c CplexMip
+ ///Currently, it is either \c GlpkMip, \c CplexMip , \c CbcMip
typedef GlpkMip Mip;
#else
-#ifdef LEMON_HAVE_GLPK
-# define LEMON_DEFAULT_LP GLPK
+#if LEMON_DEFAULT_LP == GLPK
typedef GlpkLp Lp;
-# define LEMON_DEFAULT_MIP GLPK
- typedef GlpkMip Mip;
-#elif LEMON_HAVE_CPLEX
-# define LEMON_DEFAULT_LP CPLEX
+#elif LEMON_DEFAULT_LP == CPLEX
typedef CplexLp Lp;
-# define LEMON_DEFAULT_MIP CPLEX
+#elif LEMON_DEFAULT_LP == SOPLEX
+ typedef SoplexLp Lp;
+#elif LEMON_DEFAULT_LP == CLP
+ typedef ClpLp Lp;
+#endif
+#if LEMON_DEFAULT_MIP == GLPK
+ typedef GlpkLp Mip;
+#elif LEMON_DEFAULT_MIP == CPLEX
typedef CplexMip Mip;
-#elif LEMON_HAVE_SOPLEX
-# define DEFAULT_LP SOPLEX
- typedef SoplexLp Lp;
-#elif LEMON_HAVE_CLP
-# define DEFAULT_LP CLP
- typedef ClpLp Lp;
+#elif LEMON_DEFAULT_MIP == CBC
+ typedef CbcMip Mip;
#endif
#endif
diff -r 1782aa72495a -r fc3854d936f7 test/lp_test.cc
--- a/test/lp_test.cc Fri Jul 20 17:09:01 2012 +0200
+++ b/test/lp_test.cc Sat May 25 06:59:31 2013 +0200
@@ -240,8 +240,7 @@
{
LP::DualExpr e,f,g;
- LP::Row p1 = INVALID, p2 = INVALID, p3 = INVALID,
- p4 = INVALID, p5 = INVALID;
+ LP::Row p1 = INVALID, p2 = INVALID;
e[p1]=2;
e[p1]+=2;
More information about the Lemon-commits
mailing list