MINION is a new constraint solver, which is very fast and scales well as problem size increases. Empirical results on standard benchmarks show orders of magnitude performance gains over state-of-the-art constraint toolkits. These gains increase with problem size --- MINION delivers scalable constraint solving.
MINION is a general-purpose constraint solver, with an expressive input language based on the common constraint modelling device of matrix models. Focussing on matrix models supports a lean, highly-optimized implementation. This contrasts with current constraint toolkits, which, in order to provide ever more modelling and solving options, have become progressively more complex at the cost of both performance and usability.
MINION is a black box from the user point of view, deliberately providing few options. This, combined with its raw speed, makes MINION a substantial step towards Puget's `Model and Run' constraint solving paradigm.
MINION is still in the beta stage of development. Bugs can be expected. However we endeavor to fix bugs promptly after they have been reported.
- The following bugs, which could have produced incorrect answers, have been fixed:
- The 'pow' constraint was confused by domains which contained '0'.
- Using integers close to 2^32 could occasionally produce incorrect results.
- The table constraint containing 1 tuple over no variables was considered false, not true. The following bugs, which could not produce incorrect errors, have been fixed:
- Arrays containing no variables crashed Minion.
- Many constraints crashed when given arrays of length 0.
- Table constraints caused crashes when the length of tuples is not equal to the number of variables. The following improvements have been made to Minion, some of which have been in previous versions but are now correctly documented:
- All constraints can now be reified.
- An efficient method of calculating the 'or' of a list of constraints has been added.
- Efficient implementations of alldiff and gcc (global cardinality constraint) have been added.
- A number of other binary and unary constraints have been...