# HG changeset patch # User Alpar Juttner # Date 1373869988 -7200 # Node ID 490d89913a17f55ca9aa6adc684b15e69b567dfb # Parent 473c71baff72fa87fce601589e9ac07e88c3e98d# Parent fc3854d936f7ffcac2129e96360a014663499d4e Merge #446, #457, #465 diff -r 473c71baff72 -r 490d89913a17 CMakeLists.txt --- a/CMakeLists.txt Thu Feb 28 23:45:39 2013 +0100 +++ b/CMakeLists.txt Mon Jul 15 08:33:08 2013 +0200 @@ -61,9 +61,64 @@ FIND_PACKAGE(Doxygen) FIND_PACKAGE(Ghostscript) -FIND_PACKAGE(GLPK 4.33) -FIND_PACKAGE(CPLEX) -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 473c71baff72 -r 490d89913a17 INSTALL --- a/INSTALL Thu Feb 28 23:45:39 2013 +0100 +++ b/INSTALL Mon Jul 15 08:33:08 2013 +0200 @@ -134,11 +134,29 @@ 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 --DCPLEX_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 473c71baff72 -r 490d89913a17 cmake/FindCOIN.cmake --- a/cmake/FindCOIN.cmake Thu Feb 28 23:45:39 2013 +0100 +++ b/cmake/FindCOIN.cmake Mon Jul 15 08:33:08 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 473c71baff72 -r 490d89913a17 cmake/FindCPLEX.cmake --- a/cmake/FindCPLEX.cmake Thu Feb 28 23:45:39 2013 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,40 +0,0 @@ -SET(CPLEX_ROOT_DIR "" CACHE PATH "CPLEX root directory") - -FIND_PATH(CPLEX_INCLUDE_DIR - ilcplex/cplex.h - PATHS "C:/ILOG/CPLEX/include" - PATHS "/opt/ilog/cplex/include" - HINTS ${CPLEX_ROOT_DIR}/include -) -FIND_LIBRARY(CPLEX_LIBRARY - cplex - PATHS "C:/ILOG/CPLEX/lib/msvc7/stat_mda" - PATHS "/opt/ilog/cplex/bin" - HINTS ${CPLEX_ROOT_DIR}/bin - HINTS ${CPLEX_ROOT_DIR}/lib -) - -INCLUDE(FindPackageHandleStandardArgs) -FIND_PACKAGE_HANDLE_STANDARD_ARGS(CPLEX DEFAULT_MSG CPLEX_LIBRARY CPLEX_INCLUDE_DIR) - -FIND_PATH(CPLEX_BIN_DIR - cplex.dll - PATHS "C:/ILOG/CPLEX/bin/x86_win32" - HINTS ${CPLEX_ROOT_DIR}/bin -) - -IF(CPLEX_FOUND) - SET(CPLEX_INCLUDE_DIRS ${CPLEX_INCLUDE_DIR}) - SET(CPLEX_LIBRARIES ${CPLEX_LIBRARY}) - IF(CMAKE_SYSTEM_NAME STREQUAL "Linux") - SET(CPLEX_LIBRARIES "${CPLEX_LIBRARIES};m;pthread") - ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux") -ENDIF(CPLEX_FOUND) - -MARK_AS_ADVANCED(CPLEX_LIBRARY CPLEX_INCLUDE_DIR CPLEX_BIN_DIR) - -IF(CPLEX_FOUND) - SET(LEMON_HAVE_LP TRUE) - SET(LEMON_HAVE_MIP TRUE) - SET(LEMON_HAVE_CPLEX TRUE) -ENDIF(CPLEX_FOUND) diff -r 473c71baff72 -r 490d89913a17 cmake/FindGLPK.cmake --- a/cmake/FindGLPK.cmake Thu Feb 28 23:45:39 2013 +0100 +++ b/cmake/FindGLPK.cmake Mon Jul 15 08:33:08 2013 +0200 @@ -53,9 +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 473c71baff72 -r 490d89913a17 cmake/FindILOG.cmake --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/cmake/FindILOG.cmake Mon Jul 15 08:33:08 2013 +0200 @@ -0,0 +1,102 @@ +FIND_PATH(ILOG_ROOT_DIR + NAMES cplex + DOC "CPLEX STUDIO root directory" + PATHS /opt/ibm/ILOG /usr/local/ibm/ILOG /usr/local/ILOG /usr/local/ilog + PATHS "$ENV{HOME}/ILOG" "$ENV{HOME}/.local/ILOG" + PATHS "$ENV{HOME}/ibm/ILOG" "$ENV{HOME}/.local/ibm/ILOG" + PATHS "C:/Program Files/IBM/ILOG" + PATH_SUFFIXES "CPLEX_Studio126" "CPLEX_Studio125" + "CPLEX_Studio124" "CPLEX_Studio123" "CPLEX_Studio122" + NO_DEFAULT_PATH +) + +IF(WIN32) + IF(MSVC_VERSION STREQUAL "1400") + SET(ILOG_WIN_COMPILER "windows_vs2005") + ELSEIF(MSVC_VERSION STREQUAL "1500") + SET(ILOG_WIN_COMPILER "windows_vs2008") + ELSEIF(MSVC_VERSION STREQUAL "1600") + SET(ILOG_WIN_COMPILER "windows_vs2010") + ELSE() + SET(ILOG_WIN_COMPILER "windows_vs2008") + ENDIF() + IF(CMAKE_CL_64) + SET(ILOG_WIN_COMPILER "x64_${ILOG_WIN_COMPILER}") + SET(ILOG_WIN_PLATFORM "x64_win32") + ELSE() + SET(ILOG_WIN_COMPILER "x86_${ILOG_WIN_COMPILER}") + SET(ILOG_WIN_PLATFORM "x86_win32") + ENDIF() +ENDIF() + +FIND_PATH(ILOG_CPLEX_ROOT_DIR + NAMES include/ilcplex + HINTS ${ILOG_ROOT_DIR}/cplex ${ILOG_ROOT_DIR}/cplex121 + ${ILOG_ROOT_DIR}/cplex122 ${ILOG_ROOT_DIR}/cplex123 + DOC "CPLEX root directory" + NO_DEFAULT_PATH +) + +FIND_PATH(ILOG_CONCERT_ROOT_DIR + NAMES include/ilconcert + HINTS ${ILOG_ROOT_DIR}/concert ${ILOG_ROOT_DIR}/concert29 + DOC "CONCERT root directory" + NO_DEFAULT_PATH +) + +FIND_PATH(ILOG_CPLEX_INCLUDE_DIR + ilcplex/cplex.h + HINTS ${ILOG_CPLEX_ROOT_DIR}/include + NO_DEFAULT_PATH +) + +FIND_PATH(ILOG_CONCERT_INCLUDE_DIR + ilconcert/ilobasic.h + HINTS ${ILOG_CONCERT_ROOT_DIR}/include + NO_DEFAULT_PATH +) + +FIND_LIBRARY(ILOG_CPLEX_LIBRARY + cplex cplex121 cplex122 cplex123 cplex124 + HINTS ${ILOG_CPLEX_ROOT_DIR}/lib/x86_sles10_4.1/static_pic + ${ILOG_CPLEX_ROOT_DIR}/lib/x86-64_sles10_4.1/static_pic + ${ILOG_CPLEX_ROOT_DIR}/lib/x86_debian4.0_4.1/static_pic + ${ILOG_CPLEX_ROOT_DIR}/lib/x86-64_debian4.0_4.1/static_pic + ${ILOG_CPLEX_ROOT_DIR}/lib/${ILOG_WIN_COMPILER}/stat_mda + NO_DEFAULT_PATH + ) + +FIND_LIBRARY(ILOG_CONCERT_LIBRARY + concert + HINTS ${ILOG_CONCERT_ROOT_DIR}/lib/x86_sles10_4.1/static_pic + ${ILOG_CONCERT_ROOT_DIR}/lib/x86-64_sles10_4.1/static_pic + ${ILOG_CONCERT_ROOT_DIR}/lib/x86_debian4.0_4.1/static_pic + ${ILOG_CONCERT_ROOT_DIR}/lib/x86-64_debian4.0_4.1/static_pic + ${ILOG_CONCERT_ROOT_DIR}/lib/${ILOG_WIN_COMPILER}/stat_mda + NO_DEFAULT_PATH + ) + +FIND_FILE(ILOG_CPLEX_DLL + cplex121.dll cplex122.dll cplex123.dll cplex124.dll + HINTS ${ILOG_CPLEX_ROOT_DIR}/bin/${ILOG_WIN_PLATFORM} + NO_DEFAULT_PATH + ) + +INCLUDE(FindPackageHandleStandardArgs) +FIND_PACKAGE_HANDLE_STANDARD_ARGS(ILOG + DEFAULT_MSG ILOG_CPLEX_LIBRARY ILOG_CPLEX_INCLUDE_DIR + ) + +IF(ILOG_FOUND) + SET(ILOG_INCLUDE_DIRS ${ILOG_CPLEX_INCLUDE_DIR} ${ILOG_CONCERT_INCLUDE_DIR}) + SET(ILOG_LIBRARIES ${ILOG_CPLEX_LIBRARY} ${ILOG_CONCERT_LIBRARY}) + IF(CMAKE_SYSTEM_NAME STREQUAL "Linux") + # SET(CPLEX_LIBRARIES "${CPLEX_LIBRARIES};m;pthread") + SET(ILOG_LIBRARIES ${ILOG_LIBRARIES} "m" "pthread") + ENDIF(CMAKE_SYSTEM_NAME STREQUAL "Linux") +ENDIF(ILOG_FOUND) + +MARK_AS_ADVANCED( + ILOG_CPLEX_LIBRARY ILOG_CPLEX_INCLUDE_DIR ILOG_CPLEX_DLL + ILOG_CONCERT_LIBRARY ILOG_CONCERT_INCLUDE_DIR ILOG_CONCERT_DLL + ) diff -r 473c71baff72 -r 490d89913a17 lemon/CMakeLists.txt --- a/lemon/CMakeLists.txt Thu Feb 28 23:45:39 2013 +0100 +++ b/lemon/CMakeLists.txt Mon Jul 15 08:33:08 2013 +0200 @@ -36,7 +36,7 @@ IF(LEMON_HAVE_CPLEX) SET(LEMON_SOURCES ${LEMON_SOURCES} cplex.cc) - INCLUDE_DIRECTORIES(${CPLEX_INCLUDE_DIRS}) + INCLUDE_DIRECTORIES(${ILOG_INCLUDE_DIRS}) ENDIF() IF(LEMON_HAVE_CLP) diff -r 473c71baff72 -r 490d89913a17 lemon/cbc.h --- a/lemon/cbc.h Thu Feb 28 23:45:39 2013 +0100 +++ b/lemon/cbc.h Mon Jul 15 08:33:08 2013 +0200 @@ -16,7 +16,6 @@ * */ -// -*- C++ -*- #ifndef LEMON_CBC_H #define LEMON_CBC_H diff -r 473c71baff72 -r 490d89913a17 lemon/config.h.in --- a/lemon/config.h.in Thu Feb 28 23:45:39 2013 +0100 +++ b/lemon/config.h.in Mon Jul 15 08:33:08 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 473c71baff72 -r 490d89913a17 lemon/cplex.cc --- a/lemon/cplex.cc Thu Feb 28 23:45:39 2013 +0100 +++ b/lemon/cplex.cc Mon Jul 15 08:33:08 2013 +0200 @@ -492,6 +492,17 @@ _message_enabled ? CPX_ON : CPX_OFF); } + void CplexBase::_write(std::string file, std::string format) const + { + if(format == "MPS" || format == "LP") + CPXwriteprob(cplexEnv(), cplexLp(), file.c_str(), format.c_str()); + else if(format == "SOL") + CPXsolwrite(cplexEnv(), cplexLp(), file.c_str()); + else throw UnsupportedFormatError(format); + } + + + // CplexLp members CplexLp::CplexLp() diff -r 473c71baff72 -r 490d89913a17 lemon/cplex.h --- a/lemon/cplex.h Thu Feb 28 23:45:39 2013 +0100 +++ b/lemon/cplex.h Mon Jul 15 08:33:08 2013 +0200 @@ -150,6 +150,8 @@ bool _message_enabled; + void _write(std::string file, std::string format) const; + public: /// Returns the used \c CplexEnv instance @@ -170,6 +172,19 @@ /// Returns the cplex problem object const cpxlp* cplexLp() const { return _prob; } +#ifdef DOXYGEN + /// Write the problem or the solution to a file in the given format + + /// This function writes the problem or the solution + /// to a file in the given format. + /// Trying to write in an unsupported format will trigger + /// \ref UnsupportedFormatError. + /// \param file The file path + /// \param format The output file format. + /// Supportted formats are "MPS", "LP" and "SOL". + void write(std::string file, std::string format = "MPS") const {} +#endif + }; /// \brief Interface for the CPLEX LP solver diff -r 473c71baff72 -r 490d89913a17 lemon/glpk.cc --- a/lemon/glpk.cc Thu Feb 28 23:45:39 2013 +0100 +++ b/lemon/glpk.cc Mon Jul 15 08:33:08 2013 +0200 @@ -582,6 +582,15 @@ } } + void GlpkBase::_write(std::string file, std::string format) const + { + if(format == "MPS") + glp_write_mps(lp, GLP_MPS_FILE, 0, file.c_str()); + else if(format == "LP") + glp_write_lp(lp, 0, file.c_str()); + else throw UnsupportedFormatError(format); + } + GlpkBase::FreeEnvHelper GlpkBase::freeEnvHelper; // GlpkLp members @@ -998,4 +1007,6 @@ const char* GlpkMip::_solverName() const { return "GlpkMip"; } + + } //END OF NAMESPACE LEMON diff -r 473c71baff72 -r 490d89913a17 lemon/glpk.h --- a/lemon/glpk.h Thu Feb 28 23:45:39 2013 +0100 +++ b/lemon/glpk.h Mon Jul 15 08:33:08 2013 +0200 @@ -115,6 +115,8 @@ virtual void _messageLevel(MessageLevel level); + virtual void _write(std::string file, std::string format) const; + private: static void freeEnv(); @@ -144,6 +146,19 @@ ///Returns the variable identifier understood by GLPK. int lpxCol(Col c) const { return cols(id(c)); } +#ifdef DOXYGEN + /// Write the problem or the solution to a file in the given format + + /// This function writes the problem or the solution + /// to a file in the given format. + /// Trying to write in an unsupported format will trigger + /// \ref UnsupportedFormatError. + /// \param file The file path + /// \param format The output file format. + /// Supportted formats are "MPS" and "LP". + void write(std::string file, std::string format = "MPS") const {} +#endif + }; /// \brief Interface for the GLPK LP solver diff -r 473c71baff72 -r 490d89913a17 lemon/lp.h --- a/lemon/lp.h Thu Feb 28 23:45:39 2013 +0100 +++ b/lemon/lp.h Mon Jul 15 08:33:08 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 473c71baff72 -r 490d89913a17 lemon/lp_base.h --- a/lemon/lp_base.h Thu Feb 28 23:45:39 2013 +0100 +++ b/lemon/lp_base.h Mon Jul 15 08:33:08 2013 +0200 @@ -1007,6 +1007,36 @@ public: + ///\e + class UnsupportedFormatError : public Exception + { + std::string _format; + mutable std::string _what; + public: + explicit UnsupportedFormatError(std::string format) throw() + : _format(format) { } + virtual ~UnsupportedFormatError() throw() {} + virtual const char* what() const throw() { + try { + _what.clear(); + std::ostringstream oss; + oss << "lemon::UnsupportedFormatError: " << _format; + _what = oss.str(); + } + catch (...) {} + if (!_what.empty()) return _what.c_str(); + else return "lemon::UnsupportedFormatError"; + } + }; + + protected: + virtual void _write(std::string, std::string format) const + { + throw UnsupportedFormatError(format); + } + + public: + /// Virtual destructor virtual ~LpBase() {} @@ -1555,12 +1585,27 @@ ///Set the sense to maximization void min() { _setSense(MIN); } - ///Clears the problem + ///Clear the problem void clear() { _clear(); rows.clear(); cols.clear(); } - /// Sets the message level of the solver + /// Set the message level of the solver void messageLevel(MessageLevel level) { _messageLevel(level); } + /// Write the problem to a file in the given format + + /// This function writes the problem to a file in the given format. + /// Different solver backends may support different formats. + /// Trying to write in an unsupported format will trigger + /// \ref UnsupportedFormatError. For the supported formats, + /// visit the documentation of the base class of the related backends + /// (\ref CplexBase, \ref GlpkBase etc.) + /// \param file The file path + /// \param format The output file format. + void write(std::string file, std::string format = "MPS") const + { + _write(file.c_str(),format.c_str()); + } + ///@} }; diff -r 473c71baff72 -r 490d89913a17 lemon/lp_skeleton.cc --- a/lemon/lp_skeleton.cc Thu Feb 28 23:45:39 2013 +0100 +++ b/lemon/lp_skeleton.cc Mon Jul 15 08:33:08 2013 +0200 @@ -91,6 +91,8 @@ void SkeletonSolverBase::_messageLevel(MessageLevel) {} + void SkeletonSolverBase::_write(std::string, std::string) const {} + LpSkeleton::SolveExitStatus LpSkeleton::_solve() { return SOLVED; } LpSkeleton::Value LpSkeleton::_getPrimal(int) const { return 0; } diff -r 473c71baff72 -r 490d89913a17 lemon/lp_skeleton.h --- a/lemon/lp_skeleton.h Thu Feb 28 23:45:39 2013 +0100 +++ b/lemon/lp_skeleton.h Mon Jul 15 08:33:08 2013 +0200 @@ -144,6 +144,10 @@ ///\e virtual void _messageLevel(MessageLevel); + + ///\e + virtual void _write(std::string file, std::string format) const; + }; /// \brief Skeleton class for an LP solver interface @@ -222,6 +226,7 @@ ///\e virtual const char* _solverName() const; + }; } //namespace lemon diff -r 473c71baff72 -r 490d89913a17 test/CMakeLists.txt --- a/test/CMakeLists.txt Thu Feb 28 23:45:39 2013 +0100 +++ b/test/CMakeLists.txt Mon Jul 15 08:33:08 2013 +0200 @@ -69,7 +69,7 @@ SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${GLPK_LIBRARIES}) ENDIF() IF(LEMON_HAVE_CPLEX) - SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${CPLEX_LIBRARIES}) + SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${ILOG_LIBRARIES}) ENDIF() IF(LEMON_HAVE_CLP) SET(LP_TEST_LIBS ${LP_TEST_LIBS} ${COIN_CLP_LIBRARIES}) @@ -93,7 +93,7 @@ GET_TARGET_PROPERTY(TARGET_LOC lp_test LOCATION) GET_FILENAME_COMPONENT(TARGET_PATH ${TARGET_LOC} PATH) ADD_CUSTOM_COMMAND(TARGET lp_test POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CPLEX_BIN_DIR}/cplex.dll ${TARGET_PATH} + COMMAND ${CMAKE_COMMAND} -E copy ${ILOG_CPLEX_DLL} ${TARGET_PATH} ) ENDIF() ENDIF() @@ -111,7 +111,7 @@ SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${GLPK_LIBRARIES}) ENDIF() IF(LEMON_HAVE_CPLEX) - SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${CPLEX_LIBRARIES}) + SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${ILOG_LIBRARIES}) ENDIF() IF(LEMON_HAVE_CBC) SET(MIP_TEST_LIBS ${MIP_TEST_LIBS} ${COIN_CBC_LIBRARIES}) @@ -135,7 +135,7 @@ GET_TARGET_PROPERTY(TARGET_LOC mip_test LOCATION) GET_FILENAME_COMPONENT(TARGET_PATH ${TARGET_LOC} PATH) ADD_CUSTOM_COMMAND(TARGET mip_test POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy ${CPLEX_BIN_DIR}/cplex.dll ${TARGET_PATH} + COMMAND ${CMAKE_COMMAND} -E copy ${ILOG_CPLEX_DLL} ${TARGET_PATH} ) ENDIF() ENDIF() diff -r 473c71baff72 -r 490d89913a17 test/lp_test.cc --- a/test/lp_test.cc Thu Feb 28 23:45:39 2013 +0100 +++ b/test/lp_test.cc Mon Jul 15 08:33:08 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;