The MMCFClass Project

MMCFClass is an abstract (pure virtual) base C++ class which defines the interface between a generic Multicommodity Min Cost Flow (MMCF) problem solver, or, more in general, a solver of problems with the MMCF structure "plus or minus" some variables and/or constraints, and the application programs. The interface tackles some of the most common needs that an application might have, and provides an abstract layer which make applications independent from the details of the particular solver that is used. A set of "virtualized" data types is used to provide the some flexibility in choosing the type (integer or floating-point) and the precision of the numbers (costs, flows, indices ...), although this solution is not really elegant and satisfactory and changes are foreseen in a future.

Rather than to set a standard right away, the attempt here is to make a first step towards a better standardization, providing some initial pieces and seeing if there is enough interest to carry this idea forward; thus, we would very much appreciate to hear comments about MMCFClass. Sure thing is, such an abstract layer may help faster dissemination and use of results in the field of algorithms for Multicommodity-type problems, such as Network Design ones. In case you might be interested in developing an algorithm which conforms to the interface, or porting an existing one, a distribution of the MMCFClass alone is available. Please let us know of any such development, so that we can list your code together with the ones in this page.

The currently available codes that have been developed or ported under the MMCFClass interface are:

All these codes use the Graph service C++ class for MMCF-type problems solvers to read descriptions of the instances from file(s), in various formats, or from memory, possibly modify and pre-process them and make them available in memory to the solver in an unique way, independently from the original format.