CombeanJavaBeans for Combinatorial Optimization |
hosted at |
Mission Statement: Combean is a Java framework 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, Combinatorial Optimization, Interfaces, Framework, Graph Theory, Linear Programming, LP, Integer Programming, IP, Operations Research, Open Source.
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.
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):
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.
Combean is available for download at the Sourceforge project page.
There are two variants of the Combean release:
swIMP is in pre-alpha state. The code has been tested with a quite 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 is already quite mature and you may consider using it already in the early stage of the Combean project. The most recent version is v0.1.
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 project.properties and adjust them as needed.
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.
For an overview of the API of the generated wrapper classes, please refer to the Javadoc.