Differences between revisions 17 and 102 (spanning 85 versions)
Revision 17 as of 2014-07-24 15:10:31
Size: 5188
Comment: updated variable names for issue444
Revision 102 as of 2023-10-12 12:21:52
Size: 0
Editor: GabiRoeger
Comment: Info moved to repository (and streamlined)
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
Back to [[Doc/Heuristic]].

= LP solver support =

Some configurations of the search component of Fast Downward, such as optimal cost partitioning for landmark heuristics, require a linear programming (LP) solver and will complain if the planner has not been built with support for such a solver.

== Instructions for building Fast Downward with LP support ==

To enable LP support in Fast Downward, you need the [[https://projects.coin-or.org/Osi|Open Solver Interface]] (OSI) and (optionally but recommended) an external solver such as CPLEX installed on your system (see below). Once OSI is installed, you can build Fast Downward with LP support by calling make with the option {{{DOWNWARD_USE_LP=1}}}. This option can be either set as an environment variable or given to make in the commandline. If OSI is not installed in {{{/opt/coin}}}, you also need to set {{{DOWNWARD_COIN_ROOT}}} to its installation path.

{{{
make distclean
make DOWNWARD_USE_LP=1 DOWNWARD_COIN_ROOT=/path/to/coin
}}}


== Installing CPLEX ==

IBM offers a [[http://www-304.ibm.com/ibm/university/academic/pub/page/ban_ilog_programming|free academic license]] that includes access to CPLEX.
Once you are registered, you can download a binary from the member area of the [[http://www-304.ibm.com/ibm/university/academic/member/page/mem_login|Academic Initiative Website]]. Execute the binary and follow the guided installation. If you want to install in a global location, you have to execute the installer as {{{root}}}.

After the installation, set the following environment variables (adapt the paths if you did not install in the default location):
{{{
export DOWNWARD_CPLEX_INCDIR=/opt/ibm/ILOG/CPLEX_Studio1251/cplex/include/ilcplex
export DOWNWARD_CPLEX_LIBDIR=/opt/ibm/ILOG/CPLEX_Studio1251/cplex/lib/x86_sles10_4.1/static_pic
}}}

== Installing the Open Solver Interface on Linux ==

These instructions apply to COIN/OSI 0.103.0, which was the last version that was bundled with Fast Downward. Newer versions from http://www.coin-or.org/download/source/Osi/ should work, too. If you experience problems, please [[HomePage#contact|let us know]].

OSI provides a common interface to different LP solvers. OSI must be compiled '''after''' installing the solver. If you install a solver later, repeat the installation steps of OSI.
We assume in the following that CPLEX and Gurobi are installed and the environment variables {{{DOWNWARD_CPLEX_INCDIR}}}, {{{DOWNWARD_CPLEX_LIBDIR}}}, {{{DOWNWARD_GUROBI_INCDIR}}} and {{{DOWNWARD_GUROBI_LIBDIR}}} are set up correctly. We only tested CPLEX so far. Only include options for the solvers you have installed.

{{{#!highlight bash
wget http://www.coin-or.org/download/source/Osi/Osi-0.103.0.tgz
tar xvzf Osi-0.103.0.tgz
cd Osi-0.103.0

sudo ./configure CC="gcc" CFLAGS="-m32 -pthread -Wno-long-long" \
                 CXX="g++" CXXFLAGS="-m32 -pthread -Wno-long-long" \
                 LDFLAGS="-L$DOWNWARD_CPLEX_LIBDIR -L$DOWNWARD_GUROBI_LIBDIR" \
                 --without-lapack --enable-static=yes \
                 --prefix="/opt/coin" \
                 --with-cplex-incdir=$DOWNWARD_CPLEX_INCDIR --with-cplex-lib="-lcplex -lm" \
                 --with-gurobi-incdir=$DOWNWARD_GUROBI_INCDIR --with-gurob-lib="-lgurobi"
sudo make
sudo make install
cd ..
rm -rf Osi-0.103.0
rm Osi-0.103.0.tgz
}}}

After installation, set the environment variable {{{DOWNWARD_COIN_ROOT}}} to the prefix you used in the call to {{{./configure}}}.

== Installing the Open Solver Interface on Mac OS X ==

The installation above has been reported to fail on Mac OS X due to a bug in the {{{CoinUtils}}} configure script. (See [[http://issues.fast-downward.org/issue295|issue295]].) If you run into this problem, try downloading the [[attachment:coinutils-configure.patched|patched file]] attached to this page, make it executable, and replace the file {{{Osi-0.103.0/CoinUtils/configure}}} with it:

{{{#! highlight bash
    cp Dowloads/coinutils-configure.patched Osi-0.103.0/CoinUtils/configure
    chmod +x Osi-0.103.0/CoinUtils/configure
}}}

Otherwise, the instructions are identical to the Linux instructions above with the following changes:
 * Replace {{{-m32}}} with {{{-arch i386}}}.
 * Replace {{{--enable-static=yes}}} with {{{--enable-static=no}}}.

== If LP setup fails ==

The LP solver has a number of dependencies which might not be installed on your system. If for some reason the LP setup step fails, we would appreciate if you could attempt to troubleshoot it yourself.

If the configure step fails for COIN/OSI, have a look at their [[https://projects.coin-or.org/BuildTools/wiki/user-troubleshooting|troubleshooting page]].
If you get warnings about unresolved references with CPLEX, visit their [[http://www-01.ibm.com/support/docview.wss?uid=swg21399926|help pages]].

If after troubleshooting you can get the LP package to work, please do let us know of your problem and its solution so that we can improve these instructions. If you still cannot get it to work, we may be able to provide some help, but note that the LP solver is an external package not developed by us.