« Google CP Solver: A much faster Nonogram solver using DefaultSearch | Main | MiniZinc version 1.2: More about CP-Viz and some models changed »

MiniZinc version 1.2 released

MiniZinc version 1.2 has been released (download). From NEWS:


G12 MiniZinc Distribution 1.2
-----------------------------
* CP-Viz support

We have added support for visualizing MiniZinc models using CP-Viz to
the FlatZinc interpreter's FD backend.

See the ``Visualizing MiniZinc models with CP-Viz'' guide in the doc
directory for further details.


* New MiniZinc tutorial

We have added a new MiniZinc tutorial. It introduces the MiniZinc language
in much greater depth than the old tutorial and includes chapters on
predicates, search, and effective modelling practices.


* XML-FlatZinc redesigned

We have redesigned the XML representation of FlatZinc. The new version
is much less verbose than previous version of XML-FlatZinc. The conversion
tools, fzn2xml and xml2fzn, have been updated to work with new version.

Note that the new version of XML-FlatZinc is *not* compatible with previous
versions of XML-FlatZinc.


* FlatZinc to XCSP converter

We have added a new tool, fzn2xcsp, that converts FlatZinc model instances
into XCSP 2.1 format. The MiniZinc globals library contains a new set of
solver-specific constraints in the directory "xcsp" for use with models that
are going to be converted into XCSP.


Changes to the MiniZinc language:

* The following built-in operation has been removed from MiniZinc:

int: dom_size(array[$T] of var int)


Changes to the FlatZinc language:

* The following built-in constraints have been removed from FlatZinc:

bool_clause_reif/3
bool_ge/2
bool_ge_reif/2
bool_gt/2
bool_gt_reif/2
bool_left_imp/3
bool_right_imp/3
bool_ne/2
bool_ne_reif/3

float_ge/2
float_ge_reif/3
float_gt/2
float_gt_reif/3
float_lin_ge/3
float_lin_ge_reif/4
float_lin_gt/3
float_lin_gt_reif/4
float_minus/2
float_negate/2

int_ge/2
int_ge_reif/3
int_gt/2
int_gt_reif/3
int_lin_ge/3
int_lin_ge_reif/4
int_lin_gt/3
int_lin_gt_reif/4
int_lin_lt/3
int_lin_lt_reif/4
int_minus/3
int_negate/2

set_ge/2
set_ge_reif/3
set_gt/2
set_gt_reif/3
set_superset/2
set_superset_reif/3

* Constrained type-insts for parameters are no longer supported in FlatZinc.
For example, the following parameter declarations are no longer allowed:

1..10: p = 4;
1.0..10.0: f = 5.0;
set of {2, 5, 6} = {2, 5};
array[1..2] of set of 1..5 = [{}, {3}];

Constrained type-insts may still appear in variable declarations and
also as the argument types in predicate declarations.


Changes to the G12 MiniZinc-to-FlatZinc converter:

* We have added a FlatZinc optimisation pass to mzn2fzn. This pass is
enabled by default. Turning the optimiser off (see the '--no-optimise'
option) results in faster conversion, but may leave certain obvious
simplifications for the backend to handle. In particular, unoptimised
FlatZinc models are likely to contain many intermediate variables with
known values.

* mzn2fzn supports a new command line option that allows model data to
be specified directly on the command line. The new option is
'--cmdline-data', or '-D 'for short. An example of its use is:

mzn2fzn -D "n = 4;" queens.mzn

The above causes the parameter assignment "n = 4;" to be included
when flattening queens.mzn.


Changes to the G12 MiniZinc interpreter:

* The deprecated 1-pass MiniZinc interpreter, minizinc, has been removed from
the distribution.


Changes to the G12 FlatZinc interpreter:

* "indomain_random" is now supported as a value choice method for integer
search in the FD backend.

* We have significantly improved the worst-case complexity of the element
constraint in G12/FD.


Other changes in this release:

* The problems from the 2010 MiniZinc challenge are now included in the
MiniZinc benchmark suite.

* The following new global constraints have been added to the MiniZinc
library:

bin_packing
bin_packing_capa
bin_packing_load

* We have modified the interface to the global_cardinality constraint
so that it conforms more closely to the description in the Global
Constraint Catalog. The new interface is:

global_cardinality(array[int] of var int: x,
array[int] of int: cover,
array[int] of var int: counts);

The old definition of the global_cardinality constraint is still
available under the name global_cardinality_old, but it is now
deprecated and will be removed in a future release.

* We have added "closed" versions of the global_cardinality and
global_cardinality_low_up constraints. In the closed versions
the decision variables are restricted to taking their values from
the cover. The closed forms are named:

global_cardinality_closed
global_cardinality_low_up_closed

Bugs fixed in this release:

* Flattening of expressions containing the built-in operation dom_size/1
is now supported. [Bug #158]

* A bug that caused mzn2fzn to erroneously report that model was inconsistent
if the condition of an if-then-else was false has been fixed. [Bug #158]

* Output annotations are now attached to decision variables that only occur
in the output expression in the where clause of a comprehension. [Bug #160]

* mzn2fzn now outputs all parameter declarations before any variable
declarations, as the FlatZinc specification requires.

* A bug that caused mzn2fzn to erroneously treat assignments to string
parameters as a source of model unsatisfiability has been fixed. [Bug #170]

* The FlatZinc interpreter now emits an error if overloaded predicate
declarations are encountered.

Note: There are a few changes in this version which may break existing model, for example that
global_cardinality now has 3 arguments instead of 2 (one may use global_cardinality_old instead, but it is deprecated). During the next days I will update my MiniZinc models to comply to this version.