MiniZinc version 1.2 released
MiniZinc version 1.2 has been released (download). From NEWS:
G12 MiniZinc Distribution 1.2
-----------------------------
* CP-Viz supportWe 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 tutorialWe 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 redesignedWe 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 converterWe 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/3float_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/2int_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/2set_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_closedBugs 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.