PetterS / easy-IP

C++ modelling library for integer programming

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

This library has been merged into monolith and will not be updated further here.

Build Status

This is an experimental modelling library for integer (and linear) programming. Example programs look like this:

int main()
{
	IP ip;
	auto x = ip.add_vector(5, IP::Binary);

	ip.add_objective( -2*x[0] - 5*x[1] - x[2] - 3*x[3] - x[4] );

	ip.add_constraint( x[0] + x[1] + x[2] + x[3] + x[4] <= 3 );

	ip.solve();

	for (auto xi : x) {
		cout << xi << endl;
	}
}

and

int main()
{
	IP ip;
	auto x = ip.add_boolean();
	auto y = ip.add_boolean();
	auto z = ip.add_boolean();
	auto w = ip.add_boolean();
	auto u = ip.add_boolean();

	ip.add_constraint( ( x ||  y ||  z) &&
	                   ( z ||  w ||  u) &&
	                   (!x || !y || !w) &&
	                   (!x || !y || !u) &&
	                   (!x ||  z)         );

	ip.solve();

	cout << x << " " << y << " " << z << " "
	     << w << " " << u << endl;
}

Requirements

Ubuntu

To install Cbc and its dependencies on Ubuntu, issue the following command:

sudo apt-get install coinor-libcbc-dev coinor-libclp-dev coinor-libosi-dev coinor-libcgl-dev

CMake should then find and build everything.

About

C++ modelling library for integer programming

License:BSD 2-Clause "Simplified" License


Languages

Language:C++ 93.4%Language:CMake 5.7%Language:Python 0.9%