An open-source library for mathematical programming
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
doc Move core NL reader API to nl.h Mar 30, 2016
include/mp Update fmt version to 3.0.1 Nov 24, 2016
solvers Amended for compatilbity with CPLEX 12.8 May 4, 2018
src Upgrade ASL to version 20161228 Nov 14, 2017
support Drop Ubuntu Precise (End of Life on April 28, 2017) from buildbot Oct 4, 2018
test
thirdparty Update gsl to version 2.5 Aug 2, 2018
.gitattributes Don't include thirdparty projects in the language stats Feb 16, 2016
.gitignore Ignore .vagrant and *~ Aug 26, 2016
.gitmodules Remove sphinx and breathe submodules Mar 13, 2015
.travis.yml Use xcode7.3 on travis Aug 10, 2018
CMakeLists.txt Fix 'Nonexistent include directory' Aug 24, 2017
LICENSE.rst Update LICENSE.rst Aug 26, 2015
README.rst Update README.rst Mar 31, 2016
Vagrantfile Specify mac addresses of docker containers Aug 1, 2018
update-vm.sh Improve update-vm.sh Sep 22, 2016

README.rst

AMPL/MP

https://travis-ci.org/ampl/mp.png?branch=master https://ci.appveyor.com/api/projects/status/91jw051om9q8pwt9

An open-source library for mathematical programming.

Documentation: http://ampl.github.io

Features

Examples

Reading an .nl file:

#include "mp/nl.h"
#include "mp/problem.h"

mp::Problem p;
ReadNLFile("diet.nl", p);

Usage

Binaries for the open-source AMPL solvers for major platforms can be downloaded from the AMPL's Open Source Solvers page. To use a solver with AMPL, extract the binaries from a downloaded archive into the AMPL installation directory.

Building from source

An included CMake build script can be used to build the MP library, solver interfaces and function libraries on a wide range of platforms. You can download CMake for free from http://www.cmake.org/download/.

CMake works by generating native makefiles or project files that can be used in the compiler environment of your choice. The typical workflow starts with:

mkdir build         # Create a directory to hold the build output.
cd build
cmake <path/to/mp>  # Generate native build scripts.

where <path/to/mp> is a path to the mp repository.

If you are on a *nix system, you should now see a Makefile in the current directory. Now you can build MP by running make.

Once MP has been built you can invoke make test to run the tests.

If you use Windows and have Vistual Studio installed, an MP.sln file and several .vcproj files will be created. You can then build them using Visual Studio or msbuild.

On Mac OS X with Xcode installed, an .xcodeproj file will be generated.

Modules

AMPL/MP allows building only parts of the project you are interested in, for example you can choose to build only a single solver interface. This is done with the help of modules which are optional components that can be built separately. Each solver interface and function library is a module.

By default all modules are disabled and only the main MP libraries are built. To enable modules, pass their names as a comma-separated list in the BUILD variable when running CMake:

cmake -DBUILD=gsl,ilogcp .

Use -DBUILD=all to build all modules.

If a module is enabled, its dependencies are automatically downloaded and built when necessary. For example, enabling the gecode module will download the source code of Gecode constraint programming solver, build the solver and its AMPL interface.

Dependencies of some modules cannot be handled automatically due to licensing restrictions. If you enable such module, you should have its dependencies installed on the systems or it will not be built. For example, if you enable the ilogcp module, you should have IBM ILOG CPLEX Optimization Studio installed.

Using Eclipse CDT

You can generate Eclipse CDT project files with CMake:

cmake -G "Eclipse CDT 4 -  Unix Makefiles"

To get rid of semantic errors reported by Indexer add preprocessor symbols _GLIBCPP_USE_NAMESPACES, __GXX_EXPERIMENTAL_CXX0X__ and STAND_ALONE in "Project Properties" / "C/C++ Include Files and Symbols" and rebuild the index.

Building the documentation

To build the documentation you need the following software installed on your system:

First generate makefiles or project files using CMake as described in the previous section. Then compile the doc target/project, for example:

make doc

This will generate the HTML documenation in doc/ampl.github.io.

Links

AMPL home | AMPL book | Discussion group | SolverStudio for Excel

AMPL models by Håkan Kjellerstrand