JavaBeans for Combinatorial Optimization


Groovy mathematical modelling language

hosted at
Get Combean at Fast, secure and Free Open Source software downloads


About Combean  Grooml  License  Features  Environment  Download  Installation  Documentation  Support   

About Combean

Mission Statement of Combean: Combean is a Java framework (including some Groovy code) for combinatorial structures like graphs or linear programs and optimization algorithms working with these structures. The objective of Combean is to integrate existing proven optimization packages as well as new implementations through a set of lean Java interfaces. Using a JavaBeans-based configuration mechanism, solvers for real-world optimization problems can be generated by plugging together the best-performing components. Combean as 'glue' between optimization packages leads to more interoperable, adaptable and flexible solutions.

You shall find Combean useful if you want to achieve one of the following objectives:

Combean works very well together with its sister project swIMP. swIMP makes existing C or C++ optimization codes available under Java and thus largely increases the set of available solvers for Combean. You can use swIMP if you are working on a POSIX-compatible UNIX platform. In particular, swIMP provides a Java-wrapper for the Open Solver Interface of the COIN-OR-project that allows access to numerous well-known solvers, like Cplex, XPRESS, GLPK or Clp.

Keywords: Combean, swIMP, Java, Groovy, Combinatorial Optimization, Interfaces, Framework, Graph Theory, Linear Programming, LP, Integer Programming, IP, MIP, Operations Research, Mathematical Modelling Language, Open Source.

back to top

Grooml (Groovy mathematical modelling language)

Grooml is a part of Combean. It provides an interpreter for a simple algebraic modelling language (currently LP- and MIP-models are supported; in the future this may be extended to QPs etc.). The Grooml-models can be solved with all solvers that are supported by Combean.

Grooml is written in Groovy. It uses several dynamic object orientation features of Groovy (closures, pretended methods and properties, operator overloading, etc.) for defining a domain-specific language for modelling mathematical programs. Even though Grooml-models look very much like models in other mathematical modelling languages, they are pure Groovy code, which can be compiled to class-files for the Java virtual machine and which is fully interoperable with other Groovy and Java code. Thus, Grooml integrates mathematical programming with a modern general-purpose programming language and the wealth of tools and libraries in the Java and Groovy world.

To get started with Grooml, have a look at the Grooml manual (pdf-version)

back to top


Combean is distributed under the GNU General Public License.

The interfaces for combinatorial structures and optimization algorithms and some utility classes are also distributed binary form under a permissive license that allows you to redistribute it and to combine it with closed-source code. The purpose of this is to allow owners of commercial closed-source code to write wrappers based on the Combean interfaces, e.g., in order to provide access to commercial solvers for Combean users.

The documentation is distributed under the GNU Free Documentation License

back to top


Interfaces for combinatorial structures and optimization algorithms

One main contribution of Combean is a set of interfaces for combinatorial data structures, like various kinds of graphs, and optimization algorithms, like shortest paths, flows or linear programming. The classes in Combean collaborate only through these interfaces such that the actual implementation can be easily exchanged.

The interfaces for linear programming are already quite mature, whereas the interfaces for graph theoretic problems are still under ongoing development and likely to change.

Wrappers to existing libraries

Currently, Combean works together with the following libraries (in brackets you find the version with which the current release of Combean has been tested and a short description of the license):

Convenient modelling of linear programs

Combean provides a framework for the transformation of problems in a specific application domain into linear programming models that can then be loaded into and solved by standard linear programming solvers. The Combean documentation contains a detailed example how to use this feature.

An even more convenient way for modelling LPs and MIPs is provided by the modelling language Grooml that works on top of that framework.

Facts about the Combean source code

This is what Ohloh has to say about Combean:

back to top


The Java-code has been compiled and tested under Version 1.5.0 of Sun Java 2 Platform, Standard Edition (J2SE) .

In addition to a Java runtime environment, you need some third-party jars in your CLASSPATH (some of which are not part of the Combean distribution for licensing reasons). Since the full list of dependencies is quite long, please read it first and decide which of them you really need. Typically, if you only want to use Combean and you are not going to modify the Combean source code, you only need very few additional software packages. In this case we recommend to install Groovy, Jakarta Commons, Log4j, as well as the mathematical programming software packages OR-Objects, QSOpt, swIMP and COIN-OR (for details please see below).

Dependencies which are required for running Combean

Mathematical optimization codes that can be used with Combean

Dependencies which are required for running the Combean test suite

Dependencies which are required for rebuilding Combean

The development and build process uses the following tools (the version with which the build process has been tested is included in brackets):


This product includes software developed by Vladimir R. Bossicard as well as other contributors (
back to top


Combean is available for download at the Sourceforge project page.

There are two variants of the Combean release:

see also the description of the licenses.

Combean is in alpha state. The code has been tested with a comprehensive automatic test suite and is supposed to run rather stable. The API may still be subject to heavy refactoring and major planned features (especially graph theoretic algorithms) are still missing. However, the part of the software that deals with LP models and the Grooml modelling language are already quite mature and usable by 'Non-Combean hackers'.

back to top


Building and installing Combean

Please note: Combean is distributed with ready-made jar files. So, if you do not change the Combean source, you can simple put the class files in your CLASSPATH and ignore the rest of this section.

The Combean jar-file is generated by executing ant build in the project root directory.

Combean automatically detects which packages that Combean provides wrappers for are installed (see the Features for a complete list). The command ant showfeatures show you which packages Combean has detected and for which the wrappers have been compiled and included in the jar-file.

After ant build has been executed, you find the jar-file in the dist-directory. It is ready for use. Make sure to include it in your CLASSPATH.

If some dependencies cannot be resolved during the build, please have a look at the paths defined in and adjust them as needed.

Running the automatic test suite

If you have all packages installed that the automatic test suite depends on (see the list of dependencies), you can verify the content of the jar-file by running the automatic test suite. This is done by executing ant testjar.

back to top


Combean comes with the following documentation:

Getting started

The following detailed descriptions of features of Combean are available:
back to top


If you need support, please feel free to contact the project through the Sourceforge support tracker. We will do our best to answer in a timely manner.
back to top