1Version 4.8
2=============
3
41. Removing -f (format) and -p (precision) option flags. Flatzinc uses
5   instead --format and --precision. Option -f is used to denote free
6   search, based on AFCMaxDeg/AFCMax variable selection method. The
7   default search (no search annotations) still uses the old search
8   method for compatibility reasons.
9
102. Improving debug information print-out for flatzinc.
11
123. Improvement in propagation for XinA constraint.
13
144. Improvement of propagation for ArgMin and ArgMax.
15
165. Generation of IfThenElse constraint instead of Conditional for
17   flatzinc if_then_else_* constraints in cases when it is possible.
18
196. Improvement in pruning of task duration in Cumulative Basic
20   constraint.
21
227. New implementation of counting constraints in flatzinc. Some
23   compile to Atleast and AtMost. Original at_least and at_most are
24   deprecated from version 2.4 of Minizinc.
25
268. New CountVar constraint and its flatzinc interface.
27
289. New global cardinality constraint CountValues and
29   CountValuesBounds. Changes in minizinc library for global
30   cardinality constraints to use these two new constraints.
31
3210. New constraint Channel that generalizes Reified
33    constraint. Available in Java and minizinc. Several reified
34    constraints on the same variable are converted to a single channel
35    constraint in flatzinc.
36
3711. Removing limitation in flatzinc compiler that flatzinc variables
38    must have domains within interval
39    IntDomain.MinInt..IntDomain.MaxInt. First constraints might report
40    arithmetic overflow.
41
4212. Changing Scala compiler to 2.13.1 and making related code changes.
43
4413. Not recognized search options in flatzinc are ignored instead of
45    aborting computation.
46
4714. Changing IntDomain.divIntBounds method to use double instead of floats
48    for bounds calculations (better precision).
49
5015. Constraints XplusYplusQeqZ, XplusYplusCeqZ and XplusYplusQeqC are
51    removed. Use SumInt instead.
52
5316. Additional CountBounds constraint added in flatzinc translation of
54    global_cardinality_low_up_closed if domain consistency annotation
55    is present (GCC does bounds consistency only).
56
5717. Bug corrections and performance improvements.
58
59Version 4.7
60=============
61
621. Implementation of restart search both in JaCoP and flatzinc (uses
63   standard minizinc annotation).
64
652. Implementation of priority search both in JaCoP and in flatzinc
66   (uses annotation priority_search; check JaCoP specific library
67   definition at jacop.mzn for the definition).
68
693. Making WeightedDegree variable selection method working correctly;
70   available in flatzinc as dom_w_deg. Adding new variable selection
71   methods based on accumulated failure count (AFC) and pruning
72   activity; defined in flatzinc also.
73
744. Time-out in flatzinc is changed to be specified in milliseconds (to
75   be compatible with minizinc options).
76
775. New distance step option for search with cost function specified as
78   FloatVar. Available in both Java and flatzinc.
79
806. Small corrections in pom.xml to use right version of Scala.
81
827. Restructuring of minizinc library with the new method introduced in
83   Minizinc 2.3. It uses fzn_*.mzn files to define JaCoP specific
84   global constraint
85
868. Definitions in redefintions.mzn and implementation of half-reified
87   constraints, that is minizinc constraints with the name *_imp. Implementation
88   of JaCoP constraint Implies.
89
909. Definitions and implementation of fzn_if_then_else_* constraints in
91   flatzinc JaCoP library and in Java (constraint Conditional).
92
9310. Implementation of Member constraint and making it available from
94    flatzinc (added into the JaCoP library).
95
9611. Flatzinc annotation "priority(k)" defining constraint priority
97    (0..4) where 0 is the highest and 4 the lowest priority of a constraint.
98
9912. New format for methods toString() for depth first search
100    methods. Flatzinc compiler prints search in debug mode.
101
10213. Bug corrections.
103
104Version 4.6
105=============
106
1071. Replacing buggy Lex constraint for sets with simple but correct
108   AltB and AleB. Both constraints implement lexical order between
109   sets using either "<" or "<=" relations. Lex is kept for
110   compatibility.
111   Constraints AltB and AleB are primitive and can be used as
112   parameters to other constraints. Implementation of flatzinc
113   set_lt_reif and set_le_reif.
114
1152. SumInt, SumBool, LinearInt, LinearIntDom and LinearFloat does not
116   need Store parameter any longer.
117
1183. Fix of null pointer exception in Binpacking constraint. It is
119   sometimes present if a bin variable is ground when constraint is
120   imposed. Improving performance of Binpacking constraint by running
121   computationally expensive lower bound computations only when
122   constraint is fix-point.
123
1244. New constraint for symmetry breaking, ValuePrecede.
125
1265. Implementation of ElementFloatVariable and ElementSetVariable as
127   well as related flatzinc predicates array_var_float_element
128   array_var_set_element.
129
1306. New version of Alldiff constraints that uses new algorithm with
131   complexity O(n logn) instead of O(n^2).
132
1337. Improvements in subcircuit constraint. It applies computationally
134   expensive dominance pruning if SCC did not pruned anything.
135
1368. New primitive constraints AtLeast and AtMost. Adding generation of
137   these constraints and their reified versions for flatzinc.
138
1399. Adding print-out of intermediate statistics for search (search nodes
140   and execution time) to flatzinc when option -v is given.
141
14210. Adding JaCoP solver configuration file, 'org.jacop.msc', for
143    minizinc 2.2 (both stand-alone and IDE) and fzn-jacop script to be
144    used to call JaCoP solve.
145
14611. New print-out of statistics for flatzinc that follows minizinc 2.2
147    standard.
148
14912. Definition of flatzinc library global constraint
150    alldifferent_except0 using global_cardinality_low_up_closed.
151    Related changes of generation of JaCoP GCC constraint.
152
15313. Bug fix in sequential search when there is float_search after
154    set_search.
155
156Version 4.5
157=============
158
1591. Performance improvements and identification of the same items in
160   Binpacking constraint.
161
1622. Correcting definitions of bin_packing and bin_packing_capa in JaCoP
163    flatzinc library.
164
1653. New constructor for LinearInt and LInearIntDom that makes it easier
166   to define it. Makes it possible to specify result as IntVar.
167
1684. New constraint SumFloat and new constructor for LinearFloat. Makes
169   it possible to specify result as FloatVar.
170
1715. New JaCoP specific variable selection options in flatzinc
172   (smallest_max, smallest_most_constrained, smallest_first_fail). It
173   requires to include jacop.mzn in minizinc program.
174
1756. Adding soft_all_different_int and soft_global_cardinality_int to
176   flatzinc. It requires to include jacop.mzn in minizinc program.
177
1787. Printing BooleanVar when store is printed.
179
1808. Adding possibility to Scala wrapper to define element constraint
181   on a list of BoolVar as array access.
182
1839. Adding floating-point constraints log2 and log10 to flatzinc to
184   JaCoP compiler.
185
18610. Two new classes for debugging and statistics gathering.
187   VariableTrace prints out variables prunings during search.
188   FailConstraintsStatistics gather number of fails for each
189   constraints and class of constraints.
190
19111. New cumulative constraints. CumulativeBasic does time-tabling
192    propagation, Cumulative does time-tabling and edge finding
193    propagation, and CumulativeUnary is a specialized version of unary
194    resources and does in addition to two previous propagations
195    not-first-not-last, detectable and overload propagations. All
196    propagations, except time-tabling, are done on binary trees and
197    have the following complexities, where n is the number of tasks
198    and k is the number of distinct resource values for tasks. Edge
199    finding O(k*n*logn), not-first-not-last, detectable and overload
200    O(n*logn).
201
20212. New, more efficient implementation of Diffn constraint. Added
203    Nooveralp constraint implementing basic non-overlapping
204    conditions for rectangles and DiffnDecomposed implemented as three
205    constraints: Nooverlap and two CumulativeBasic constraints in
206    direction X and Y.
207
20813. New Table and SimpleTable (number of table entries =< 64)
209    constraints based on compact-table representation.
210
21114. Calls to new cumulative, diffn and table constraints in Scala wrapper.
212
21315. New method for constraint generation for flatzinc.
214
21516. Making JaCoP compatible with Scala 2.12.
216
21717. Improvement in pruning for MinSimple and MaxSimple.
218
21918. Bug fixes:
220   - Changing comparator method in LinearFloat that
221     IllegalArgumentException is not reported.
222   - Correcting bugs in AndBool, OrBool and AndBoolSimple.
223   - Correcting a bug when a constraint needs information of changed
224     variables and is a parameter to other constraint, for example
225     Reified, Xor.
226   - Bug fix when reified BoolClause is generated in falzinc. The case
227     when BoolClause fails and reified variable is false.
228   - Bug fix in SumInt that stopped the propagator from computing a
229     fix-point in some situations.
230   - Bug fix in method inComplement that did not generated event
231     "BOUND" when bounds in the domain was changed (generated "ANY"
232     instead).
233
23419. Different Maven profiles for testing (commit, push, release) that
235    will execute different lengths tests in Maven test phase using
236    Minizinc tests stored in src/test/fz/ directory.
237
23820. Various code cleaning based on complaints from findbugs, Intelij IDE,
239    and Sonar.
240
24121. Adding workaround for a bug in Geost caused by too eager ignoring
242    execution of propagation when constraint is not consistent.
243
24422. Extending testing suites by adding thousands of minizinc based tests,
245    as well as some unit tests for domain classes. Adding fznFileGenerator
246    skrypt to quickly categorize new minizinc problems into time categories
247    to be used by future tests.
248
24923. Cleaning up design around Constraints. Refactoring a lot of code from
250    particular constraints into common functionality in Constraint.
251
252Version 4.4
253===========
254
2551. New selection for search variables in minizinc. Only output
256   variables are selected by default.
257
2582. Adding additional pass to the flatzinc compiler. bool2int does not
259   generate the equality constraints on both variables. Only the first
260   variable is used in the model and the second one as the alias for
261   the first one. Decreases the number of generated constraints.
262
2633. Sum and SumWeight are deprecated and SumInt, SumBool or LinearInt
264   should be used instead.
265
2664. New circuit and subcircuit constraint definitions in minizinc that
267   accept arbitrary indexes (not always starting from 1).
268
2695. New constraint SumBool.
270
2716. Correcting a bug in OrBool constraint.
272
2737. Xor of Linear constraint corrected. Linear is deprecated and
274   LinearInt should be used instead.
275
2768. Correcting a bug in GCC.
277
2789. Improvements and corrections in Linear, LinearInt, SumInt,
279   LinearIntDom and LinearFloat.
280
28110. Bug fixes and improvements.
282
283Version 4.3
284===========
2851. Implementation of constraints ArgMin and ArgMax as well connection to
286   flatzinc constraints arg_min_int and arg_max_int.
287
2882. Correcting implementation of Diff2 and Disjoint. Currently Diff2
289   implements non-strict version of diffn constraint (minizinc constraint
290   diffn_nonstrict) that makes it possible to pack zero-width rectangles
291   anywhere. Disjoint implements a strict version of diffn constraint
292   (minizinc diffn constraint). It requires that zero-width rectangles
293   does not overlap with any other rectangle.
294
2953. Implementation of primitive constraint BoolClause implementing flatzinc
296   constraint bool_clause.
297
2984. Sets of integer with bounds 1..0 are treated by flatzinc parser as
299   empty sets. This implements a way minizinc 2.0 represents empty sets.
300
3015. Adding int_pow build-in predicate to flatzinc interpreter.
302
3036. LexOrder global constraints accepts vectors of different sizes.
304
3057. Performance improvement for SumWeightDom.
306
3078. Performance improvement for ElementInteger and two new constraints
308   ElementIntegerFast and ElementVariableFast that implement a
309   straightforward pruning method.
310
3119. New primitive constraints LinearInt and SumInt that implement
312   pruning methods from paper "Bounds Consistency Techniques for Long
313   Linear Constraints" by Warwick Harvey and Joachim Schimpf.
314
31510. Fixing performance bug in IntervalBasedBacktrackableManager.
316    Unnecessary call to checkRemoveInvariant outside assert statement.
317
31811. Adding option --bound (-b) to flatzinc parser that enforces use of bounds
319    consistency for constraints (instead of domain, even for constraints
320    annotated with "::domain").
321
32212. Adding SAT solver to JaCoP and connecting it to flatzinc
323    interpreter. The use of SAT solver in flatzinc is controlled by
324    option -sat. If the option is specified the SAT solver is used for
325    all bool_* constraints, otherwise CP constraints are used.
326
32713. Improving performance of Max and Min constraints. Specially for
328    large lists of varibales.
329
33014. Bug fixes.
331
332Version 4.2
333===========
3341. Support for minizinc 2.0
3352. Constraint Geost avaible is now from minizinc.
3363. Implementation of Solution-Guided Multi-Point Constructive Search.
3374. Improvements in minimization method for floating-point variables.
338
339Version 4.1.1
340===========
341
3421. New global constraint LexOrder that defines lexicographical order
343   between two vectors of IntVar. Vectors must be of the same size.
3442. Implementation of a loader for flazinc models and related examples. The
345   loader makes it possible to load the model and then define own search
346   methods as well as use all variables defined in the model and their values.
3473. Performance improvements in AndBool and OrBool. it is no longer needed
348   to scan the whole list for achieving consistency.
3494. Checking for overflow in Sum and improvement in detecting overflow for
350   addition.
3515. Since domain consistency is computationally expensive minizinc uses
352   domain consistency for linear constraints only when constrained are
353   annotated ":: domain" and the size of maximal domains is <= 4 and
354   there is no more than 2 variables.
355
356Version 4.1
357===========
358
3591. New floating point variables and constraints on these variables.
360
3612. Flatzinc interface for JaCoP's floating point constraints.
362
3633. Scala interface for floating point constraints.
364
3654. Fixing a bug in knapsack constraints when large numbers are used.
366
3675. Implementing intersection method between SmallDenseDomain and BoundDomain.
368
369Version 4.0
370===========
371
3721. Maven support and new directory structure. The package has changed name from JaCoP to org.jacop and files are placed in the new directory structure.
373
3742. Experimental feature - stochastic variables and constraints - is moved to feature branch as it still requires additional testing.
375   It is excluded from this release, but we encourage contribution in this branch (examples/tests in particular) to help us make it
376   quicker a part of the next release.
377
3783. Experimental feature SAT solver - JaSAT - is moved to experimental feature branch as its performance and integration with JaCoP still
379   requires extra work. It is excluded from this release, but we encourage contribution in this branch to help us make it quicker a part
380    of the next release.
381
3824. Adding constraint SumWeightDom that implements domain consistency
383   for weighted sum of linear terms.
384
3855. New primitive constraint Linear and its use in flatzinc.
386
3876. New global constraint Subcircuit.
388
3897. Adding additional propagation to Min and Max constraint. It
390   propagates in situations when one variable on the list is lowest
391   (greatest). It enforces that this variable from the list is equal
392   min (max) variable.
393
3948. Print of statistics for flatzinc (org.jacop.fz.Fz2jacop) after Ctrl-C.
395
3969. Updated JaCoP guide to reflect new features.
397
39810. Bug fixes.
399
400Version 3.2
401=============
402
4031. Fixes few bugs
4042. Provides an interface from Scala to JaCoP. Examples using Scala are provided in ExamplesScala package.
405
406Version 3.1.2
407=============
408
409The release of JaCoP version 3.1.2 fixes several bugs and makes JaCoP compatible with minizinc v.1.4.
410
4111. Compatibility changes for minizinc 1.4.
4122. Bug fix of reification in several primitive set constraints that made pruning working correctly.
4133. New method for pruning length of rectangles in Diff/Diff2 constraints.
4144. Several small bug fixes.
4155. Bug fix in search to make limit on a number of solutions work correctly (specially for sequence search).
416
417Version 3.1.1
418=============
419
4201. Changes to bo compatible with minizinc v. 1.3.
4212. New pruning methods for multiplication and division constraints, icluding div and mod.
4223. Bug fix in Among constraint.
4234. Bug fix in SmallDenseDomain.
424
425
426Version 3.1
427===========
428
429This release fixes few bugs as well as provides a new Binpacking constraint.
430
431The Binpacking constraint allows modeling of problems exhibiting bin
432packing problem structure. The addition of this constraint introduced
433changes to minizinc/fz library in JaCoP since the definitions of
434bin_packing.mzn, bin_packin_capa.mzn and bin_packing_load.mzn have
435been added. The JaCoP guide has been updated to explain how to use
436Binpacking constraint.
437
438Version 3.0
439===========
440
441We have just released JaCoP 3.0 final. Since the previous release
442(RC2) we have fixed one rarely triggering bug in ElementInteger
443constraint, as well as added code supporting generation of data for
444CP-viz framework. Here is the list of most important changes since
445version 2.4.
446
4471) The introduction of Network Flow constraint, which allows efficient
448  modeling of problems with network flow structure. The constraint
449  allows to specify minimum cost flow problem in terms of finite
450  domain variables.  It uses network simplex algorithm as an
451  propagator for network-like structure. It is a very expressive
452  constraint where arc flow and arc unit costs can be specified by
453  variables.
454
4552) The introduction of set package forced changes in the design of
456  core interfaces. There are IntVar and SetVar classes which inherit
457  from Var class. This change allowed to refactor and improve set package
458  so it is designed in cleaner and more efficient manner.
459
4603) The introduction of special domain representation SmallDenseDomain,
461  which uses bits within a long primitive type to encode small
462  domains of range not larger than 64.
463
4644) The introduction of Soft-alldifferent as well as Soft-GCC global
465  constraints. The soft-alldifferent constraint implements Variable
466  and Decomposition based violation metrics. The soft-gcc constraint
467  implements value based violation metric. Both are decomposed constraints
468  based on network flow constraint.
469
4705) Examples have been updated by moving multiple solving functionality
471  from main function to test function, so user can easily see what is
472  the best model just by looking at main function. BIBD example has
473  been added.  Examples with Set variables have been updated to
474  reflect the changes.
475
4766) A number of bug fixes and changes in flatzinc interface to better
477  comply with minizinc 1.1. We have also added into minizinc
478  predicates networkflow that uses newly introduced JaCoP Network
479  Flow constraint.
480
4817) A number of minor API changes to improve intuitiveness of use
482  (e.g. order of arguments in constructors).
483
4848) The JaCoP guide has been updated to reflect the changes and additions
485  to the newest version.
486
487Version 2.4.2
488=============
489
490The main reason for this release is change of Minizinc standard, the
491newest version handles Minizinc 1.1.
492
493Version 2.4.1
494=============
495
496???
497
498Version 2.4
499===========
500
501The version 2.4 has a number of new features in addition to some bug
502fixes. The most important additions in this version are:
503
504The flatzinc interface that makes it possible to run minizinc programs
505using JaCoP. The distribution contains number of different minizinc
506examples.
507
508Geometrical constraint, geost, based on pruning algorithms originally
509proposed by Nicolas Beldiceanu et al. This constraint makes it
510possible to define placement problems of non-convex objects in
511k-dimensional space.
512
513Knapsack constraint, which is based on the work published by Irit
514Katriel et al. We extend the original work in number of ways, for
515example by making it possible to use non-boolean quantity variables.
516
517Set constraints defining typical operation on sets using set interval
518variables.
519
520Version 2.3
521===========
522
523As with previous releases, JaCoP focuses on ease of use, efficiency,
524and modeling power by providing more and more global constraints.
525
526In JaCoP 2.3 you'll notice:
527
528Number of new global constraints implemented, namely Among, GCC,
529Regular, two new variants of ExtensionalSupport constraint (STR, MDD),
530Stretch, and Sequence constraints.
531
532Redesigned search functionality making it possible to express search
533as by designing search plugins and transforming available search.
534
535Redesigned part of the JaCoP core focusing on domains, making it
536easier to add new domains representations.
537
538Significantly improved Java Doc API making code even better
539documented.
540
541Number of new examples explaining how to apply CP technology.
542
543
544Version JaCoP 2.2
545=================
546
547
548Version JaCoP 2.1
549=================
550
551Version JaCoP 1.7
552=================
553
554Version JaCoP 1.3
555=================
556