this repo has no description
1#
2# Main authors:
3# Christian Schulte <schulte@gecode.org>
4#
5# Copyright:
6# Christian Schulte, 2005
7#
8# This file is part of Gecode, the generic constraint
9# development environment:
10# http://www.gecode.org
11#
12# Permission is hereby granted, free of charge, to any person obtaining
13# a copy of this software and associated documentation files (the
14# "Software"), to deal in the Software without restriction, including
15# without limitation the rights to use, copy, modify, merge, publish,
16# distribute, sublicense, and/or sell copies of the Software, and to
17# permit persons to whom the Software is furnished to do so, subject to
18# the following conditions:
19#
20# The above copyright notice and this permission notice shall be
21# included in all copies or substantial portions of the Software.
22#
23# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
24# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
25# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
26# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
27# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
28# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
29# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
30#
31
32#
33# This file contains entries for changelogs
34#
35# There are two kinds of entries: one marking releases and the others
36# being actual entries.
37#
38# All the lines for describing entries must start at the beginning.
39#
40# A release is described as follows:
41# [RELEASE]
42# Version: <version string>
43# Date: <when release>
44# [DESCRIPTION]
45# ... All the text up to the next [ENTRY] is included
46# as description
47#
48# An entry is described as follows:
49# [ENTRY]
50# Module:
51# kernel|search|int|set|cpltset|example|minimodel|iter|support|
52# driver|test|gist|flatzinc|other
53# What: bug|documentation|performance|new|removed|change
54# Rank: minor|major
55# Bug: <optional, for number from bugzilla>
56# Issue: <optional, for number from github>
57# Thanks: <optional, who reported etc>
58# [DESCRIPTION]
59# ... All the text up to the next [ENTRY] or [RELEASE] is included
60# as description
61# [MORE]
62# ... If a more section is included, then it will be displayed as an
63# optional section in the html page.
64#
65
66[RELEASE]
67Version: 6.3.1
68Date: 2020-??-??
69[DESCRIPTION]
70Let's see.
71
72[RELEASE]
73Version: 6.3.0
74Date: 2020-??-??
75[DESCRIPTION]
76Let's see.
77
78[ENTRY]
79Module: other
80What: change
81Rank: major
82[DESCRIPTION]
83Gecode now requires C++ 11, the support for compiling without C++ 11
84has been removed.
85
86[ENTRY]
87Module: kernel
88What: change
89Rank: minor
90[DESCRIPTION]
91Make the region pool thread local.
92[MORE]
93When running tests in parallel, having a shared pool for regions took too much
94time on macOS. This change makes the pool into a thread_local instead.
95
96[ENTRY]
97Module: flatzinc
98What: change
99Rank: minor
100Thanks: Jip J. Dekker
101[DESCRIPTION]
102Automatically generate and install a MiniZinc solver configuration and
103install MiniZinc library into the share/minizinc/gecode standard location.
104
105[ENTRY]
106Module: int
107What: new
108Rank: minor
109[DESCRIPTION]
110Add versions of element constraints with offsets, to enable fast domain
111consistent index set transformations.
112
113[ENTRY]
114Module: flatzinc
115What: change
116Rank: minor
117[DESCRIPTION]
118Use element-with-offset and 2d element propagators instead of performing
119index transformations in MiniZinc.
120
121[ENTRY]
122Module: flatzinc
123What: change
124Rank: minor
125[DESCRIPTION]
126Accept combined -cp-profiler flag for activating CP-Profiler and always
127send information to profiler.
128
129[ENTRY]
130Module: driver
131What: change
132Rank: minor
133[DESCRIPTION]
134Accept combined -cp-profiler flag for activating CP-Profiler instead of
135using separate script mode.
136
137[ENTRY]
138Module: test
139What: bug
140Rank: minor
141[DESCRIPTION]
142Fix testing for IntAction, BoolAction, SetAction, FloatAction with
143merit functions.
144
145[ENTRY]
146Module: flatzinc
147What: change
148Issue: 77
149Rank: minor
150[DESCRIPTION]
151Move parser.tab.hh to parser.tab.hpp, Bison's standard location. This
152ensures that the generated implementation file is compatible with
153Bison 3.7.
154
155[ENTRY]
156Module: flatzinc
157What: bug
158Issue: 61
159Rank: minor
160[DESCRIPTION]
161Fix fzn_table_bool and fzn_table_bool_reif predicates, which had
162incorrect types.
163
164[ENTRY]
165Module: other
166What: change
167Rank: minor
168Issue: 63
169Thanks: Markus Elfring
170[DESCRIPTION]
171Remove usages of reserved identifiers such as __GECODE_KERNEL_HH__ and
172_View.
173[MORE]
174Gecode used to use include guards of the form __GECODE_KERNEL_HH__.
175Using a double underscore in an identifier is reserved, and thus
176undefined behaviour. Use guards of the form GECODE_KERNEL_HH instead.
177Similarly, names with a single leading underscore followed by a
178capital letter are also reserved, and usage is thus undefined
179behaviour, and are removed.
180
181[ENTRY]
182Module: flatzinc
183What: new
184Rank: minor
185[DESCRIPTION]
186Add MiniZinc constraint names to FlatZinc errors when applicable and
187available.
188[MORE]
189A constraint name is specified in MiniZinc using a string annotation
190"my name" on the constraint item, and is translated into FlatZinc
191using the mzn_constraint_name("my name").
192
193[ENTRY]
194Module: flatzinc
195What: bug
196Rank: minor
197[DESCRIPTION]
198The cumulative constraint now respects the semantics of the MiniZinc
199definition for 0-duration tasks.
200
201[ENTRY]
202Module: flatzinc
203What: bug
204Rank: minor
205[DESCRIPTION]
206The roots and int_set_channel constraints now work for empty sets and arrays.
207
208[ENTRY]
209Module: flatzinc
210What: change
211Rank: minor
212[DESCRIPTION]
213The MiniZinc global constraint library has been updated for MiniZinc
214version 2.3.0 and higher, taking advantage of the new library
215structure that separates the modelling-level definition of a predicate
216from the solver-level one.
217
218[ENTRY]
219Module: minimodel
220What: change
221Rank: minor
222Thanks: Marco Correia
223[DESCRIPTION]
224Do not require that cost for FloatMinimizeSpace (use the maximum
225instead) and FloatMaximizeSpace (use the minimum instead) must be
226assigned.
227
228[ENTRY]
229Module: kernel
230What: bug
231Rank: minor
232Thanks: Konstantin Popov
233[DESCRIPTION]
234Fixed crash when killing the last propagator in a space.
235
236[ENTRY]
237Module: example
238What: bug
239Rank: minor
240Thanks: Florian Fontan
241[DESCRIPTION]
242Do not use size-based symmetry breaking together with CDBF.
243
244[ENTRY]
245Module: kernel
246What: change
247Rank: minor
248Thanks: John W. Spirent
249[DESCRIPTION]
250Some small changes to compile with MSVC 2015 again.
251
252[ENTRY]
253Module: int
254What: change
255Rank: minor
256Thanks: John W. Spirent
257[DESCRIPTION]
258Some small changes to compile with MSVC 2015 again.
259
260[ENTRY]
261Module: set
262What: change
263Rank: minor
264Thanks: John W. Spirent
265[DESCRIPTION]
266Some small changes to compile with MSVC 2015 again.
267
268[ENTRY]
269Module: set
270What: bug
271Rank: minor
272Thanks: Mats Carlsson
273[DESCRIPTION]
274Fix bool-set channel propagator to work correctly when posted
275with a fixed set variable.
276
277[ENTRY]
278Module: flatzinc
279What: change
280Rank: minor
281Thanks: Jip J. Dekker
282[DESCRIPTION]
283Update the error produced by the FlatZinc parser when an integer
284literal is outside Gecode's integer limits.
285
286[ENTRY]
287Module: flatzinc
288What: change
289Rank: minor
290[DESCRIPTION]
291The number of nodes and failures is now of type unsigned long
292long int. Time is now consistently of type double.
293
294[ENTRY]
295Module: driver
296What: change
297Rank: minor
298[DESCRIPTION]
299The number of propagations, nodes, and failures is now of type
300unsigned long long int. Time is now consistently of type double.
301
302[ENTRY]
303Module: search
304What: change
305Rank: minor
306[DESCRIPTION]
307The number of nodes and failures in statistics is now of type
308unsigned long long int. Time is now consistently of type double.
309
310[ENTRY]
311Module: kernel
312What: change
313Rank: minor
314[DESCRIPTION]
315The number of propagations in statistics is now of type unsigned
316long long int.
317
318[ENTRY]
319Module: search
320What: bug
321Rank: minor
322[DESCRIPTION]
323The linear cutoff generator started at zero rather than at the
324scale factor.
325
326[ENTRY]
327Module: kernel
328What: new
329Rank: minor
330[DESCRIPTION]
331For action-based branching heuristics, one can now define whether
332failure, propagation, or both should be considered.
333
334[RELEASE]
335Version: 6.2.0
336Date: 2019-04-12
337[DESCRIPTION]
338The release enables half-reification in FlatZinc, fixes
339indeterminstic behavior for shared branching criteria, and fixes
340several aspects for general tracers. It is recommended to upgrade
341as soon as possible.
342
343[ENTRY]
344Module: flatzinc
345What: change
346Rank: minor
347Thanks: Jip J. Dekker
348[DESCRIPTION]
349Enable support for half-reified constraints in the Gecode MiniZinc
350library. Half-reified constraints are used when a MiniZinc
351expression has to be reified and is detected to be in a positive
352context. If no Half-reified constraint has been made available by
353solver, the full reification will be used. Half-reifed constraints
354in the MiniZinc solver library are declared in the same way as
355reified constraints, but are appended by "_imp" instead of "_reif".
356
357[ENTRY]
358Module: kernel
359What: bug
360Rank: major
361[DESCRIPTION]
362For the combination of some constraints (min, max, nvalues, and
363some constraints over Boolean variables) with shared variable
364selection branching (that is, AFC, Action, and CHB) the behavior
365of Gecode was indeterminstic. The indeterminism was based on
366using memory addresses for determining the order of variables in
367some propagators which in turn affected which propagator might
368record failure first and hence influenced the branching decisions.
369
370[ENTRY]
371Module: int
372What: bug
373Rank: major
374[DESCRIPTION]
375For the combination of binpacking and linear constraints with
376shared variable selection branching (that is, AFC, Action, and
377CHB) the behavior of Gecode was indeterminstic. The indeterminism
378was based on using memory addresses for determining the order of
379variables which in turn affected which propagator might record
380failure first and hence influenced the branching decisions.
381
382[ENTRY]
383Module: example
384What: new
385Rank: minor
386[DESCRIPTION]
387Added job-shop scheduling example.
388
389[ENTRY]
390Module: int
391What: new
392Rank: minor
393[DESCRIPTION]
394Added order constraint for two unary scheduling tasks.
395
396[ENTRY]
397Module: flatzinc
398What: new
399Rank: minor
400[DESCRIPTION]
401Support minimum_arg_bool and maximum_arg_bool constraints.
402
403[ENTRY]
404Module: flatzinc
405What: change
406Rank: minor
407[DESCRIPTION]
408Use native offset calculation instead of additional constraints
409for argmin/argmax constraints.
410
411[ENTRY]
412Module: int
413What: new
414Rank: minor
415[DESCRIPTION]
416Add BoolVar versions of argmax and argmin.
417
418[ENTRY]
419Module: kernel
420What: change
421Rank: major
422Thanks: Conrad Drescher
423[DESCRIPTION]
424The logic for recording events for general tracers was seriously
425broken as events after a call to status() have been ignored.
426
427[ENTRY]
428Module: float
429What: bug
430Rank: minor
431Thanks: Kurt Van Den Branden
432[DESCRIPTION]
433Restore floating point rounding mode under Windows.
434
435[ENTRY]
436Module: kernel
437What: change
438Rank: minor
439Thanks: Conrad Drescher
440[DESCRIPTION]
441Added TE_POST for default arguments for general tracers.
442
443[ENTRY]
444Module: search
445What: removed
446Rank: minor
447[DESCRIPTION]
448The special constructors for PBS with up to four SEB's have been
449removed. Use the SEBs class instead.
450
451[ENTRY]
452Module: int
453What: new
454Rank: major
455[DESCRIPTION]
456Variables to be assigned during search can now be selected with
457all available selection criteria available for branching.
458
459[ENTRY]
460Module: int
461What: new
462Rank: minor
463[DESCRIPTION]
464Omitting the variable selection criterion is equivalent to
465INT_VAR_NONE().
466
467[ENTRY]
468Module: set
469What: new
470Rank: major
471[DESCRIPTION]
472Variables to be assigned during search can now be selected with
473all available selection criteria available for branching.
474
475[ENTRY]
476Module: set
477What: new
478Rank: minor
479[DESCRIPTION]
480Omitting the variable selection criterion is equivalent to
481SET_VAR_NONE().
482
483[ENTRY]
484Module: float
485What: new
486Rank: major
487[DESCRIPTION]
488Variables to be assigned during search can now be selected with
489all available selection criteria available for branching.
490
491[ENTRY]
492Module: float
493What: new
494Rank: minor
495[DESCRIPTION]
496Omitting the variable selection criterion is equivalent to
497FLOAT_VAR_NONE().
498
499
500[RELEASE]
501Version: 6.1.1
502Date: 2019-02-14
503[DESCRIPTION]
504This release fixes a number of minor issues and adds post events
505to general tracers.
506
507[ENTRY]
508Module: flatzinc
509What: bug
510Rank: minor
511[DESCRIPTION]
512Change table and regular predicates to take 1d arrays as arguments.
513Otherwise the generated FlatZinc does not typecheck.
514
515[ENTRY]
516Module: flatzinc
517What: bug
518Rank: minor
519[DESCRIPTION]
520Add colon to statistics output to conform with FlatZinc specification.
521
522[ENTRY]
523Module: kernel
524What: bug
525Rank: minor
526Thanks: Conrad Drescher
527[DESCRIPTION]
528Use locks to guard mutexes in case tracers throw exceptions.
529
530[ENTRY]
531Module: search
532What: bug
533Rank: minor
534Thanks: Conrad Drescher
535[DESCRIPTION]
536Use locks to guard mutexes in case tracers throw exceptions.
537
538[ENTRY]
539Module: minimodel
540What: bug
541Rank: minor
542Thanks: Conrad Drescher
543[DESCRIPTION]
544exp(0.0) now correctly evaluates to 1.0 (and not 0.0).
545
546[ENTRY]
547Module: int
548What: changed
549Rank: minor
550Thanks: Jens Krueger
551[DESCRIPTION]
552All constructors and the bool test operator of IntSet have been
553made explicit to avoid unintended behavior.
554
555[ENTRY]
556Module: other
557What: new
558Rank: minor
559Thanks: Jip J. Dekker
560[DESCRIPTION]
561Added installation target to the CMake configuration.
562
563[ENTRY]
564Module: other
565What: change
566Rank: minor
567[DESCRIPTION]
568Fix compilation problems with the Microsoft Visual Studio IDE
569which uses -permissive- as default, rather than -permissive as
570cl.exe does.
571
572[ENTRY]
573Module: kernel
574What: new
575Rank: major
576[DESCRIPTION]
577General tracers now support post events, see MPG for details.
578
579[ENTRY]
580Module: other
581What: change
582Rank: minor
583Thanks: Jip J. Dekker
584[DESCRIPTION]
585Removed the use of glibc macros in the architecture selection
586process of the boost interval library. This allows for the
587compilation on unix machines based on a different implementation
588of the C library.
589
590[ENTRY]
591Module: example
592What: new
593Rank: minor
594Author: Samuel Gagnon
595[DESCRIPTION]
596Added example for magic squares with pre-filled instances.
597
598[ENTRY]
599Module: kernel
600What: bug
601Rank: minor
602Author: Conrad Drescher, Patrick Zimmer
603[DESCRIPTION]
604Fixed potential deadlock when memory has been exhausted.
605
606[RELEASE]
607Version: 6.1.0
608Date: 2018-10-17
609[DESCRIPTION]
610This release adds reified extensional constraints; support for
611negative tables; experimental support for counting-based search
612(thanks to Samuel Gagnon); and support for standard C++
613initializer lists. In addition, the release has lots of bug fixes
614and performance improvements. It is highly recommended to switch
615as soon as possible!
616
617[ENTRY]
618Module: search
619What: change
620Rank: minor
621[DESCRIPTION]
622Support for the CPProfiler is now enabled by default.
623
624[ENTRY]
625Module: int
626What: change
627Rank: minor
628Thanks: Sara Frimodig
629[DESCRIPTION]
630The default propagation for unary has been too weak (likely to
631hurt Gecode in the MiniZinc competitions of 2017 and 2018),
632now the default is back to maximal propagation.
633
634[ENTRY]
635Module: minimodel
636What: bug
637Rank: minor
638Thanks: Matthias Balzer
639[DESCRIPTION]
640Take exponent into account for float expressions with pow
641and nroot.
642
643[ENTRY]
644Module: kernel
645What: change
646Rank: minor
647Thanks: Rui Machado, Jens Krüger
648[DESCRIPTION]
649The alignment of memory allocated from a Region is now as
650prescribed by the maximum of std::max_align_t and
651GECODE_MEMORY_ALIGNMENT (which can be re-defined). Please also check
652MPG for a tip on alignment of memory handeled by Gecode.
653
654[ENTRY]
655Module: flatzinc
656What: new
657Rank: major
658[DESCRIPTION]
659Added native support for reified extensional table constraints.
660
661[ENTRY]
662Module: int
663What: new
664Rank: major
665[DESCRIPTION]
666Added support for reified extensional table constraints.
667
668[ENTRY]
669Module: int
670What: new
671Rank: major
672[DESCRIPTION]
673Added support for negative table for extensional table
674constraints.
675
676[ENTRY]
677Module: int
678What: bug
679Rank: major
680[DESCRIPTION]
681Fixed scheduling for Boolean variables (funnily, only occured
682with a newly added propagator).
683
684[ENTRY]
685Module: kernel
686What: bug
687Rank: minor
688[DESCRIPTION]
689Added missing definitions for declarations of creating Home
690objects from spaces with propagator and brancher groups.
691
692[ENTRY]
693Module: int
694What: new
695Rank: major
696Author: Samuel Gagnon
697[DESCRIPTION]
698Added experimental support for counting-based search. It can be
699enabled by running configure with --enable-cbs. See
700examples/qcp.cpp for an example.
701
702[ENTRY]
703Module: minimodel
704What: bug
705Rank: major
706Thanks: Robin Eklind
707[DESCRIPTION]
708Fixed fall through bug for set expressions.
709
710[ENTRY]
711Module: int
712What: performance
713Rank: minor
714[DESCRIPTION]
715Improved performance of tuple-set extensional constraints by
716maybe 15-20% through reordering loops.
717
718[ENTRY]
719Module: flatzinc
720What: change
721Rank: minor
722[DESCRIPTION]
723Add -t command line option to fzn-gecode, to support new unified
724time limit command line option for FlatZinc solvers.
725
726[ENTRY]
727Module: kernel
728What: change
729Rank: major
730[DESCRIPTION]
731The function shared() for testing whether a view occurs in an
732array or whether two arrays contain at least on shared view is no
733a simple function and not a member function (which means, use
734shared(x,y) instead of x.shared(y)).
735
736[ENTRY]
737Module: kernel
738What: removed
739Rank: major
740[DESCRIPTION]
741Variables cannot any longer be compared by same() and
742before(). If you want to compare two variables x and y whether
743they are identical, use x.varimp() == y.varimp().
744
745[ENTRY]
746Module: int
747What: removed
748Rank: major
749[DESCRIPTION]
750Variables cannot any longer be compared by same() and
751before(). If you want to compare two variables x and y whether
752they are identical, use x.varimp() == y.varimp().
753
754[ENTRY]
755Module: set
756What: removed
757Rank: major
758[DESCRIPTION]
759Variables cannot any longer be compared by same() and
760before(). If you want to compare two variables x and y whether
761they are identical, use x.varimp() == y.varimp().
762
763[ENTRY]
764Module: float
765What: removed
766Rank: major
767[DESCRIPTION]
768Variables cannot any longer be compared by same() and
769before(). If you want to compare two variables x and y whether
770they are identical, use x.varimp() == y.varimp().
771
772[ENTRY]
773Module: kernel
774What: change
775Rank: major
776[DESCRIPTION]
777Views now are compared by the standard C++ operators "==", "!=",
778and "<" (this replaces the same and before functions).
779
780[ENTRY]
781Module: int
782What: change
783Rank: major
784[DESCRIPTION]
785Views now are compared by the standard C++ operators "==", "!=",
786and "<" (this replaces the same and before functions).
787
788[ENTRY]
789Module: set
790What: change
791Rank: major
792[DESCRIPTION]
793Views now are compared by the standard C++ operators "==", "!=",
794and "<" (this replaces the same and before functions).
795
796[ENTRY]
797Module: float
798What: change
799Rank: major
800[DESCRIPTION]
801Views now are compared by the standard C++ operators "==", "!=",
802and "<" (this replaces the same and before functions).
803
804[ENTRY]
805Module: kernel
806What: bug
807Rank: minor
808[DESCRIPTION]
809The SharedArray class now has an equality operator. This fixes
810a problem in the FlatZinc interpreter, which is keeping a hash
811set of arrays that relies on the equality test.
812
813[ENTRY]
814Module: int
815What: change
816Rank: major
817[DESCRIPTION]
818The add function of TupleSet now supports standard initializer
819lists but do not any longer support variable argument lists (as
820the combination is really confusing).
821
822[ENTRY]
823Module: int
824What: change
825Rank: major
826[DESCRIPTION]
827IntArgs now support standard initializer lists but do not any
828longer support variable argument lists (as the combination is
829really confusing). Now one can write IntArgs c({1,2,3}) for
830example.
831
832[ENTRY]
833Module: int
834What: new
835Rank: minor
836[DESCRIPTION]
837DFAs now support standard initializer lists.
838
839[ENTRY]
840Module: int
841What: new
842Rank: minor
843[DESCRIPTION]
844IntSets now support standard initializer lists, for both
845individual elements (for example, IntSet s({1,2,3})) as well as
846ranges (for example, IntSet s({{1,2},{6,9}})).
847
848[ENTRY]
849Module: int
850What: new
851Rank: minor
852[DESCRIPTION]
853Integer and Boolean variable argument arrays now support standard
854initializer lists.
855
856[ENTRY]
857Module: set
858What: new
859Rank: minor
860[DESCRIPTION]
861Set variable argument arrays now support standard initializer
862lists.
863
864[ENTRY]
865Module: float
866What: new
867Rank: minor
868[DESCRIPTION]
869Float variable argument arrays now support standard initializer
870lists.
871
872[ENTRY]
873Module: search
874What: change
875Rank: major
876[DESCRIPTION]
877SEBs now support standard initializer lists but do not any
878longer support variable argument lists (as the combination is
879really confusing).
880
881
882[RELEASE]
883Version: 6.0.1
884Date: 2018-05-21
885[DESCRIPTION]
886Contains a number of small fixes and one large fix for float
887variables (basically, minimodel using float variables would
888always lead to overflow and hence throw an exception).
889
890[ENTRY]
891Module: float
892What: change
893Rank: major
894Thanks: Kurt Van Den Branden
895[DESCRIPTION]
896All constraints over float variables now constrain their
897variables when being posted to avoid overflow.
898
899[ENTRY]
900Module: float
901What: change
902Rank: minor
903[DESCRIPTION]
904The interval for a float value is now printed between "[" and
905"]", whereas the interval for a float variable is printed between
906"[[" and "]]".
907
908[ENTRY]
909Module: float
910What: bug
911Rank: minor
912[DESCRIPTION]
913Float values could not be printed.
914
915[ENTRY]
916Module: minimodel
917What: bug
918Rank: minor
919Thanks: Matthias Balzer
920[DESCRIPTION]
921Fixed strict inequalities for Float relations.
922
923[ENTRY]
924Module: support
925What: bug
926Rank: minor
927Thanks: Kari Pahula
928[DESCRIPTION]
929Fixed compilation problem on 32 bit platforms.
930
931[ENTRY]
932Module: flatzinc
933What: bug
934Rank: minor
935Thanks: Jip J. Dekker
936[DESCRIPTION]
937Fixed the initialisation of the random number generator for the
938FlatZinc executable. This fix ensures the generator is always
939initialised.
940
941[ENTRY]
942Module: support
943What: change
944Rank: minor
945[DESCRIPTION]
946Detect is os_unfair_lock is available at runtime, in order to be able
947to support older versions of macOS in the same binaries.
948
949[ENTRY]
950Module: flatzinc
951What: change
952Rank: minor
953[DESCRIPTION]
954Add support for annotations to control restart strategy.
955
956[RELEASE]
957Version: 6.0.0
958Date: 2018-02-23
959[DESCRIPTION]
960This major release fixes many bugs, adds quite some new
961functionality, and changes how cloning works (most likely the
962biggest change we ever did to %Gecode): the Boolean share argument
963is not any longer needed (see how to change your programs in
964\ref PageHowToChange_6 "How to Change to Gecode 6.0.0"). The added
965functionality includes experimental support for the CPProfiler,
966classes for lexicographic optimization (where the cost is defined
967by an array of variables), a new much faster implementation of
968extensional constraints using tuple sets, and support for tracing
969search engines.
970
971[ENTRY]
972Module: search
973What: bug
974Rank: minor
975[DESCRIPTION]
976The statistics for parallel search engines was wrong.
977
978[ENTRY]
979Module: search
980What: bug
981Rank: major
982[DESCRIPTION]
983Fixed several race conditions during the termination of parallel
984search engines.
985
986[ENTRY]
987Module: support
988What: change
989Rank: minor
990[DESCRIPTION]
991Replace deprecated OSSpinLock with os_unfair_lock on newer versions
992of macOS.
993
994[ENTRY]
995Module: search
996What: bug
997Rank: major
998[DESCRIPTION]
999A sequential portfolio ignored stop objects in certain cases.
1000
1001[ENTRY]
1002Module: flatzinc
1003What: change
1004Rank: minor
1005[DESCRIPTION]
1006Share tables for extensional (table) constraints, DFAs for regular
1007constraints, and arrays of constants for element constraints.
1008
1009[ENTRY]
1010Module: flatzinc
1011What: change
1012Rank: minor
1013[DESCRIPTION]
1014Change default propagation level to bounds propagation for global
1015cardinality constraints.
1016
1017[ENTRY]
1018Module: support
1019What: change
1020Rank: minor
1021[DESCRIPTION]
1022Bitsets now use 64 bit integers on all 64 bit architectures.
1023
1024[ENTRY]
1025Module: search
1026What: new
1027Rank: major
1028Author: Kevin Leo, Maxim Shishmarev
1029[DESCRIPTION]
1030Added experimental support for the CPProfiler, see MPG for
1031details. This is only enabled, if Gecode has been configured with
1032the option --enable-cpprofiler.
1033
1034[ENTRY]
1035Module: driver
1036What: new
1037Rank: major
1038[DESCRIPTION]
1039A new mode "-mode cpprofiler" and several command-line arguments
1040-cpprofiler-* have been added to connect Gecode to the
1041CPProfiler. For more details, see MPG.
1042
1043[ENTRY]
1044Module: driver
1045What: change
1046Rank: major
1047[DESCRIPTION]
1048No hyphen must be given for a command line switch and both "-"
1049and "--" are automatically added.
1050
1051[ENTRY]
1052Module: int
1053What: change
1054Rank: minor
1055[DESCRIPTION]
1056When posting a simple linear constraint (only two variables with
1057unit coefficients) with default integer propagation level, a
1058domain consistent propagator is posted. Now a domain consistent
1059propagator is always posted if the right-hand side constant is
1060zero and otherwise if the computations required can be done with
1061normal integers.
1062
1063[ENTRY]
1064Module: float
1065What: bug
1066Rank: minor
1067Thanks: Matthias Balzer
1068[DESCRIPTION]
1069Linear constraints now check whether constant coefficients have
1070mixed signs (include zero) and throw an exception if yes.
1071
1072[ENTRY]
1073Module: float
1074What: bug
1075Rank: major
1076Thanks: Matthias Balzer
1077[DESCRIPTION]
1078Linear constraints now check properly for numerical overflow.
1079
1080[ENTRY]
1081Module: flatzinc
1082What: change
1083Rank: minor
1084[DESCRIPTION]
1085Add redefinition of disjunctive_strict in terms of cumulative.
1086
1087[ENTRY]
1088Module: driver
1089What: new
1090Rank: major
1091Thanks: Roberto Castañeda Lozano
1092[DESCRIPTION]
1093Added IntLexMinimizeScript and IntLexMaximizeScript for
1094lexicographic optimization.
1095
1096[ENTRY]
1097Module: minimodel
1098What: new
1099Rank: major
1100Thanks: Roberto Castañeda Lozano
1101[DESCRIPTION]
1102Added IntLexMinimizeSpace and IntLexMaximizeSpace for
1103lexicographic optimization.
1104
1105[ENTRY]
1106Module: driver
1107What: removed
1108Rank: minor
1109[DESCRIPTION]
1110Removed the deprecated classes MinimizeScript and MaximizeScript
1111(use IntMinimizeScript and IntMaximizeScript instead).
1112
1113[ENTRY]
1114Module: minimodel
1115What: removed
1116Rank: minor
1117[DESCRIPTION]
1118Removed the deprecated classes MinimizeSpace and MaximizeSpace
1119(use IntMinimizeSpace and IntMaximizeSpace instead).
1120
1121[ENTRY]
1122Module: int
1123What: new
1124Rank: major
1125Author: Linnea Ingmar
1126[DESCRIPTION]
1127Tuple sets can be initialized from DFAs (and hence regular
1128expressions).
1129
1130[ENTRY]
1131Module: int
1132What: bug
1133Rank: minor
1134Thanks: Peter Stuckey
1135[DESCRIPTION]
1136Perform unsharing even in failed spaces to avoid exceptions in
1137later constraint posting.
1138
1139[ENTRY]
1140Module: minimodel
1141What: new
1142Rank: major
1143Author: Matthias Balzer
1144[DESCRIPTION]
1145Added reified dom-expressions.
1146
1147[ENTRY]
1148Module: minimodel
1149What: new
1150Rank: major
1151Author: Matthias Balzer
1152[DESCRIPTION]
1153Added relations between integer and set expressions.
1154
1155[ENTRY]
1156Module: flatzinc
1157What: bug
1158Rank: major
1159Thanks: Andreas Schutt
1160[DESCRIPTION]
1161Fix syntax errors in definitions of global cardinality predicates.
1162
1163[ENTRY]
1164Module: flatzinc
1165What: change
1166Rank: minor
1167[DESCRIPTION]
1168Make mzn-gecode script use mzn-fzn if minizinc driver is not present.
1169
1170[ENTRY]
1171Module: flatzinc
1172What: change
1173Rank: minor
1174Thanks: Andreas Schutt
1175[DESCRIPTION]
1176Add support for int_pow predicate.
1177
1178[ENTRY]
1179Module: int
1180What: change
1181Rank: minor
1182[DESCRIPTION]
1183Changed accuracy of delta information for integer views (now, all
1184values between new and old lower/upper bound are reported as
1185being discarded).
1186
1187[ENTRY]
1188Module: int
1189What: bug
1190Rank: minor
1191[DESCRIPTION]
1192Tuple sets used for Boolean variables are allowed to contain only
1193zeros and ones as values.
1194
1195[ENTRY]
1196Module: int
1197What: removed
1198Rank: major
1199[DESCRIPTION]
1200Removed IPL_SPEED and IPL_MEMORY as they are not any longer needed.
1201
1202[ENTRY]
1203Module: int
1204What: change
1205Rank: major
1206[DESCRIPTION]
1207Re-implemented tuple sets for simplicity and ease of use. Please
1208see MPG for details.
1209
1210[ENTRY]
1211Module: int
1212What: change
1213Rank: major
1214Author: Linnea Ingmar
1215[DESCRIPTION]
1216Replaced extensional implementation by a single implementation
1217based on the compact-table propagator described in:
1218J. Demeulenaere et. al., Compact-Table: Efficiently filtering
1219table constraints with reversible sparse bit-sets, CP 2016. Pages
1220207-223, LNCS, Springer, 2016. The extensional propagator runs up
1221to ten times faster than the old implementations.
1222
1223[ENTRY]
1224Module: kernel
1225What: bug
1226Rank: major
1227[DESCRIPTION]
1228Fixed virtual method table overwrite bug for Action and CHB.
1229
1230[ENTRY]
1231Module: search
1232What: bug
1233Rank: major
1234[DESCRIPTION]
1235Fixed double deletion bug in parallel portfolio-based search.
1236
1237[ENTRY]
1238Module: int
1239What: bug
1240Rank: minor
1241Thanks: Massimo Morara
1242[DESCRIPTION]
1243Fixed printing of group information for tracing.
1244
1245[ENTRY]
1246Module: float
1247What: bug
1248Rank: minor
1249Thanks: Massimo Morara
1250[DESCRIPTION]
1251Fixed printing of group information for tracing.
1252
1253[ENTRY]
1254Module: set
1255What: bug
1256Rank: minor
1257Thanks: Massimo Morara
1258[DESCRIPTION]
1259Fixed printing of group information for tracing.
1260
1261[ENTRY]
1262Module: kernel
1263What: new
1264Rank: minor
1265[DESCRIPTION]
1266Now it can be controlled by an Boolean argument whether AFC
1267information between spaces is shared or not.
1268
1269[ENTRY]
1270Module: int
1271What: new
1272Rank: minor
1273[DESCRIPTION]
1274Now it can be controlled by an Boolean argument whether AFC
1275information between spaces is shared or not.
1276
1277[ENTRY]
1278Module: set
1279What: new
1280Rank: minor
1281[DESCRIPTION]
1282Now it can be controlled by an Boolean argument whether AFC
1283information between spaces is shared or not.
1284
1285[ENTRY]
1286Module: float
1287What: new
1288Rank: minor
1289[DESCRIPTION]
1290Now it can be controlled by an Boolean argument whether AFC
1291information between spaces is shared or not.
1292
1293[ENTRY]
1294Module: int
1295What: bug
1296Rank: major
1297Thanks: Conrad Drescher
1298[DESCRIPTION]
1299The bounds propagator for abs is now bounds consistent.
1300
1301[ENTRY]
1302Module: set
1303What: new
1304Rank: minor
1305Thanks: Conrad Drescher
1306[DESCRIPTION]
1307Added checks to avoid posting set relation propagators in case
1308their variables are in fact the same.
1309
1310[ENTRY]
1311Module: search
1312What: bug
1313Rank: minor
1314[DESCRIPTION]
1315Fixed a potential memory leak for restart-based search when the
1316root space was failed.
1317
1318[ENTRY]
1319Module: kernel
1320What: removed
1321Rank: minor
1322[DESCRIPTION]
1323Choices do not need to implement a size function.
1324
1325[ENTRY]
1326Module: flatzinc
1327What: change
1328Rank: major
1329Thanks: Maxim Shishmarev
1330[DESCRIPTION]
1331Added support for tracing search engines.
1332
1333[ENTRY]
1334Module: flatzinc
1335What: bug
1336Rank: minor
1337Thanks: Andreas Schutt
1338[DESCRIPTION]
1339Fixed declarations of table_int and table_bool constraints.
1340
1341[ENTRY]
1342Module: kernel
1343What: change
1344Rank: major
1345[DESCRIPTION]
1346Shared handles and objects used to implement most shared data
1347structures in Gecode are thread safe now. In most cases they are
1348lock free.
1349
1350[ENTRY]
1351Module: kernel
1352What: change
1353Rank: major
1354[DESCRIPTION]
1355The Boolean share argument during cloning is not any longer needed.
1356
1357[ENTRY]
1358Module: kernel
1359What: bug
1360Rank: minor
1361[DESCRIPTION]
1362During unsharing of AFC information also the propagator
1363identifiers were changed.
1364
1365[ENTRY]
1366Module: kernel
1367What: change
1368Rank: major
1369[DESCRIPTION]
1370The unsharing of AFC information during cloning is not any longer
1371needed as it happens automatically when a new AFC object is
1372created.
1373
1374[ENTRY]
1375Module: kernel
1376What: new
1377Rank: minor
1378[DESCRIPTION]
1379Regions can be freed without destroying them. Consult MPG for
1380details.
1381
1382[ENTRY]
1383Module: kernel
1384What: change
1385Rank: major
1386[DESCRIPTION]
1387Regions are now created independently of a space and the policy
1388using several regions simultaneously has changed. Consult MPG for
1389details.
1390
1391[ENTRY]
1392Module: search
1393What: bug
1394Rank: major
1395[DESCRIPTION]
1396Fixed a race condition in portfolio-based search.
1397
1398[ENTRY]
1399Module: int
1400What: bug
1401Rank: major
1402[DESCRIPTION]
1403For Boolean variables, an initialized BoolCHB in branching was ignored.
1404
1405[ENTRY]
1406Module: driver
1407What: bug
1408Rank: minor
1409[DESCRIPTION]
1410The -slice commandline option for sequential portfolios is not
1411ignored any longer.
1412
1413
1414[RELEASE]
1415Version: 5.1.0
1416Date: 2017-04-18
1417[DESCRIPTION]
1418This is a rather major release, fixing a number of bugs and
1419adding quite a number of new features. Some of the features
1420require changes to your models.
1421
1422In more detail: extended tracing so that all propagator
1423executions and commit operations can be traced; renamed activity
1424to action to avoid confusion with activity in SAT (and fixed that
1425action information is also recorded during failure); added CHB
1426(conflict-history based branching) heuristic; optimized AFC; all
1427functions taken as arguments by Gecode are now based on
1428std::function-types; instead of branching with INT_VAR_* and
1429INT_VAL_* for Boolean variables, BOOL_VAR_* and BOOL_VAL_* must
1430be used. There are a number of additional changes, so you might
1431want to read the whole changelog.
1432
1433[ENTRY]
1434Module: flatzinc
1435What: bug
1436Rank: minor
1437[DESCRIPTION]
1438Some FlatZinc constraints were not guarded with assertions, which could make
1439Gecode crash on incorrect models.
1440
1441[ENTRY]
1442Module: kernel
1443What: removed
1444Rank: minor
1445[DESCRIPTION]
1446Choices do not need to implement a size() member function (unused
1447since years).
1448
1449[ENTRY]
1450Module: float
1451What: bug
1452Rank: major
1453[DESCRIPTION]
1454The right-hand side of a linear constraint was a number rather
1455than a value (FloatNum rather than FloatVal) leading to rounding
1456errors.
1457
1458[ENTRY]
1459Module: search
1460What: bug
1461Rank: major
1462[DESCRIPTION]
1463Fixed crashes in sequential and parallel portfolios using
1464parallel or restart-based best solution search engines as assets.
1465
1466[ENTRY]
1467Module: kernel
1468What: new
1469Rank: major
1470[DESCRIPTION]
1471Trace recorders have been renamed to variable (or view) trace
1472recorders. New trace recorders have been added that can trace
1473all propagate and commit operations. See MPG for details.
1474
1475[ENTRY]
1476Module: kernel
1477What: new
1478Rank: minor
1479[DESCRIPTION]
1480Tracing now also records failure-events, see MPG for details.
1481
1482[ENTRY]
1483Module: int
1484What: new
1485Rank: minor
1486[DESCRIPTION]
1487Tracing now also records failure-events, see MPG for details.
1488
1489[ENTRY]
1490Module: float
1491What: new
1492Rank: minor
1493[DESCRIPTION]
1494Tracing now also records failure-events, see MPG for details.
1495
1496[ENTRY]
1497Module: set
1498What: new
1499Rank: minor
1500[DESCRIPTION]
1501Tracing now also records failure-events, see MPG for details.
1502
1503[ENTRY]
1504Module: int
1505What: changed
1506Rank: minor
1507Thanks: Conrad Drescher
1508[DESCRIPTION]
1509When posting a simple linear constraint (only two variables with
1510unit coefficients) with default integer propagation level, a
1511domain consistent propagator is posted.
1512
1513[ENTRY]
1514Module: int
1515What: removed
1516Rank: minor
1517[DESCRIPTION]
1518The integer value selections INT_VAL_NEAR_MIN(),
1519INT_VAL_NEAR_MAX(), INT_VAL_NEAR_INC(), and INT_VAL_NEAR_DEC()
1520have been removed. It is much better to use LNS (large
1521neighbourhood search), see MPG for details.
1522
1523[ENTRY]
1524Module: set
1525What: new
1526Rank: minor
1527[DESCRIPTION]
1528Added reified versions of relation constraints between a set and
1529an integer variable.
1530
1531[ENTRY]
1532Module: example
1533What: change
1534Rank: minor
1535[DESCRIPTION]
1536The Social golfers example now includes a model variant that uses
1537integer distinct for ensuring all player-pairs are distinct.
1538
1539[ENTRY]
1540Module: kernel
1541What: change
1542Rank: minor
1543[DESCRIPTION]
1544Replaced initialized() function by operator bool() for RND,
1545Action, AFC, CHB.
1546
1547[ENTRY]
1548Module: set
1549What: new
1550Rank: minor
1551[DESCRIPTION]
1552Added reified cardinality() constraint.
1553
1554[ENTRY]
1555Module: kernel
1556What: change
1557Rank: minor
1558[DESCRIPTION]
1559Disabled propagators can be disabled again (convenience).
1560
1561[ENTRY]
1562Module: other
1563What: change
1564Rank: major
1565[DESCRIPTION]
1566Gecode requires now at least the Microsoft Visual Studio 2013 compiler.
1567
1568[ENTRY]
1569Module: kernel
1570What: new
1571Rank: major
1572[DESCRIPTION]
1573Added support for CHB (conflict-history based branching)
1574heuristic for branching.
1575
1576[ENTRY]
1577Module: int
1578What: new
1579Rank: major
1580[DESCRIPTION]
1581Added support for CHB (conflict-history based branching)
1582heuristic for branching. See MPG for details.
1583
1584[ENTRY]
1585Module: set
1586What: new
1587Rank: major
1588[DESCRIPTION]
1589Added support for CHB (conflict-history based branching)
1590heuristic for branching. See MPG for details.
1591
1592[ENTRY]
1593Module: float
1594What: new
1595Rank: major
1596[DESCRIPTION]
1597Added support for CHB (conflict-history based branching)
1598heuristic for branching. See MPG for details.
1599
1600[ENTRY]
1601Module: kernel
1602What: changed
1603Rank: minor
1604[DESCRIPTION]
1605Do not count number of weakly monotonic propagators, nobody used
1606it anyway.
1607
1608[ENTRY]
1609Module: kernel
1610What: bug
1611Rank: major
1612[DESCRIPTION]
1613Computing the afc for an assigned variable would crash.
1614
1615[ENTRY]
1616Module: kernel
1617What: change
1618Rank: major
1619[DESCRIPTION]
1620Reimplemented the infrastructure to record AFC, much simpler and
1621much faster.
1622
1623[ENTRY]
1624Module: kernel
1625What: change
1626Rank: major
1627[DESCRIPTION]
1628Renamed Activity to Action to avoid confusion with activity in SAT.
1629
1630[ENTRY]
1631Module: int
1632What: change
1633Rank: major
1634[DESCRIPTION]
1635Renamed Activity to Action to avoid confusion with activity in SAT.
1636
1637[ENTRY]
1638Module: set
1639What: change
1640Rank: major
1641[DESCRIPTION]
1642Renamed Activity to Action to avoid confusion with activity in SAT.
1643
1644[ENTRY]
1645Module: float
1646What: change
1647Rank: major
1648[DESCRIPTION]
1649Renamed Activity to Action to avoid confusion with activity in SAT.
1650
1651[ENTRY]
1652Module: kernel
1653What: change
1654Rank: major
1655[DESCRIPTION]
1656Variable implementations are not allowed to return a failed
1657modification event directly (such as in return ME_INT_FAILED;),
1658they need to call the function fail() instead (such as in return
1659fail(home);).
1660
1661[ENTRY]
1662Module: kernel
1663What: change
1664Rank: major
1665[DESCRIPTION]
1666Activity for branching was not counted when propagation lead to a
1667failed space, this is done now. The activity of a variable is now
1668by default initialized to 1. That makes activity actually
1669useful...
1670
1671[ENTRY]
1672Module: kernel
1673What: change
1674Rank: major
1675[DESCRIPTION]
1676Variable implementations do not need to define cancel()
1677functions, the kernel provides generic implementations (this only
1678matters for users implementing their own variables). Also cleaned
1679up some inlining mess which reduces object code size by around
168010%.
1681
1682[ENTRY]
1683Module: kernel
1684What: bug
1685Rank: major
1686[DESCRIPTION]
1687In certain situations the AFC could be incremented twice (could
1688only have occured for linear constraints with Boolean variables
1689and sequence constraints).
1690
1691[ENTRY]
1692Module: int
1693What: changed
1694Rank: major
1695[DESCRIPTION]
1696All branching functions (merit, value, commit, tie-breaking
1697limit, filter, print) can now be of std::function type.
1698
1699[ENTRY]
1700Module: set
1701What: changed
1702Rank: major
1703[DESCRIPTION]
1704All branching functions (merit, value, commit, tie-breaking
1705limit, filter, print) can now be of std::function type.
1706
1707[ENTRY]
1708Module: float
1709What: changed
1710Rank: major
1711[DESCRIPTION]
1712All branching functions (merit, value, commit, tie-breaking
1713limit, filter, print) can now be of std::function type.
1714
1715[ENTRY]
1716Module: kernel
1717What: changed
1718Rank: major
1719[DESCRIPTION]
1720All branching functions (merit, value, commit, tie-breaking
1721limit, filter, print) can now be of std::function type.
1722
1723[ENTRY]
1724Module: int
1725What: change
1726Rank: major
1727[DESCRIPTION]
1728Branching on Boolean variables now requires to use BOOL_VAR_...()
1729and BOOL_VAL_...() functions instead of the INT_... variants.
1730
1731[ENTRY]
1732Module: int
1733What: change
1734Rank: major
1735[DESCRIPTION]
1736Functions passed to wait() and when() can now be of std::function type.
1737
1738[ENTRY]
1739Module: float
1740What: change
1741Rank: major
1742[DESCRIPTION]
1743Functions passed to wait() can now be of std::function type.
1744
1745[ENTRY]
1746Module: set
1747What: change
1748Rank: major
1749[DESCRIPTION]
1750Functions passed to wait() can now be of std::function type.
1751
1752[ENTRY]
1753Module: flatzinc
1754What: bug
1755Rank: minor
1756[DESCRIPTION]
1757Add assertions to regular constraint definition to avoid posting with
1758invalid arguments.
1759
1760[ENTRY]
1761Module: flatzinc
1762What: bug
1763Rank: minor
1764Thanks: David Hotham
1765[DESCRIPTION]
1766Fix parser to work with newer versions of GCC compiler.
1767
1768[ENTRY]
1769Module: support
1770What: new
1771Rank: minor
1772[DESCRIPTION]
1773Added an abstraction RunJobs for executing several jobs in
1774parallel (not officially supported).
1775
1776[ENTRY]
1777Module: float
1778What: new
1779Rank: minor
1780[DESCRIPTION]
1781Added if-then-else constraint (called ite) also for float
1782variables.
1783
1784[ENTRY]
1785Module: set
1786What: new
1787Rank: minor
1788[DESCRIPTION]
1789Added if-then-else constraint (called ite) also for set
1790variables.
1791
1792[ENTRY]
1793Module: int
1794What: new
1795Rank: minor
1796[DESCRIPTION]
1797Added if-then-else constraint (called ite) also for Boolean
1798variables.
1799
1800[ENTRY]
1801Module: int
1802What: new
1803Rank: minor
1804[DESCRIPTION]
1805Relations between arrays now support also a mix between integer
1806(or Boolean) variable array and integer array.
1807
1808[ENTRY]
1809Module: other
1810What: change
1811Rank: minor
1812[DESCRIPTION]
1813Enable C++11 standard on compilers that need an explicit switch. Can be
1814switched off using --disable-cpp11 during configuration.
1815
1816
1817[RELEASE]
1818Version: 5.0.0
1819Date: 2016-10-25
1820[DESCRIPTION]
1821This release adds a number of new features and fixes many bugs
1822(some rather serious), so it is recommended to switch as soon as
1823possible to this release. Some highlights are: re-added limited
1824discrepancy search (LDS); added sequential and parallel
1825portfolio-based search (PBS); added support for groups of
1826propagators and branchers; added extensive tracing functionality
1827based on groups; propagators can be disabled and re-enabled;
1828support for arbitrary memory allocators; changed the notion of
1829"integer consistency level" to the more expressive concept
1830"integer propagation level".
1831
1832It is recommended to read the new Chapter in MPG on groups and
1833tracing.
1834
1835As the interfaces has changed, please consult
1836\ref PageHowToChange_5 "How to Change to Gecode 5.0.0".
1837
1838[ENTRY]
1839Module: set
1840What: bug
1841Rank: minor
1842[DESCRIPTION]
1843Fixed some idempotency problems in the n-ary union and weight propagators.
1844
1845[ENTRY]
1846Module: float
1847What: new
1848Rank: minor
1849[DESCRIPTION]
1850Added relax() function for relaxed assignment of float variables
1851from a previous solution, see MPG for details.
1852
1853[ENTRY]
1854Module: set
1855What: new
1856Rank: minor
1857[DESCRIPTION]
1858Added relax() function for relaxed assignment of set variables
1859from a previous solution, see MPG for details.
1860
1861[ENTRY]
1862Module: int
1863What: new
1864Rank: minor
1865[DESCRIPTION]
1866Added relax() function for relaxed assignment of integer and
1867Boolean variables from a previous solution, see MPG for details.
1868
1869[ENTRY]
1870Module: driver
1871What: new
1872Rank: minor
1873[DESCRIPTION]
1874The probability for relaxing variables in LNS can be passed with
1875the -relax commandline option.
1876
1877[ENTRY]
1878Module: int
1879What: bug
1880Rank: major
1881Thanks: Roberto Castañeda Lozano
1882[DESCRIPTION]
1883The domain consistent dom() constraint for integer ranges was
1884only bounds consistent...
1885
1886[ENTRY]
1887Module: minimodel
1888What: bug
1889Rank: minor
1890Thanks: Matthias Balzer
1891[DESCRIPTION]
1892Export BoolExpr::Misc for linking.
1893
1894[ENTRY]
1895Module: kernel
1896What: change
1897Rank: minor
1898Thanks: Matthias Balzer
1899[DESCRIPTION]
1900Do not declare new and delete of ArgArrayBase as private to
1901support the use of placement new.
1902
1903[ENTRY]
1904Module: driver
1905What: new
1906Rank: minor
1907[DESCRIPTION]
1908The discrepancy limit for Limited Discrepancy Search (LDS) can be
1909passed with the -d-l commandline option.
1910
1911[ENTRY]
1912Module: search
1913What: new
1914Rank: major
1915[DESCRIPTION]
1916Limited Discrepancy Search (LDS) added. Please see MPG for
1917details.
1918
1919[ENTRY]
1920Module: flatzinc
1921What: bug
1922Rank: major
1923Thanks: Mats Carlsson
1924[DESCRIPTION]
1925Fix the FlatZinc parser for cases where variables were aliased to a fixed
1926variable.
1927
1928[ENTRY]
1929Module: kernel
1930What: bug
1931Rank: major
1932Thanks: Matthias Balzer
1933[DESCRIPTION]
1934Fixed memory leak for regions (occured for many large allocation
1935requests).
1936
1937[ENTRY]
1938Module: float
1939What: bug
1940Rank: major
1941Thanks: Filip Konvicka
1942[DESCRIPTION]
1943Enable optimized rounding only if MSVC does not use SSE,
1944otherwise things really go wrong (necessary for MSVC 2015).
1945
1946[ENTRY]
1947Module: kernel
1948What: new
1949Rank: minor
1950[DESCRIPTION]
1951Added additional propagation cost level record() which is
1952reserved for propagators that record information but do not
1953propagate.
1954
1955[ENTRY]
1956Module: float
1957What: new
1958Rank: minor
1959[DESCRIPTION]
1960Added channeling constraint between float and Boolean variable.
1961
1962[ENTRY]
1963Module: float
1964What: bug
1965Rank: minor
1966Thanks: Matthias Balzer
1967[DESCRIPTION]
1968FloatValArgs erroneously inherited from PrimArgArray, now it
1969inherits from ArgArray.
1970
1971[ENTRY]
1972Module: minimodel
1973What: bug
1974Rank: minor
1975Thanks: Matthias Balzer
1976[DESCRIPTION]
1977Fixed memory leak in constructor for Boolean element expression.
1978
1979[ENTRY]
1980Module: minimodel
1981What: bug
1982Rank: minor
1983Thanks: Matthias Balzer
1984[DESCRIPTION]
1985Fixed special case handling for sqr and pow functions.
1986
1987[ENTRY]
1988Module: minimodel
1989What: bug
1990Rank: minor
1991Thanks: Matthias Balzer
1992[DESCRIPTION]
1993Removed bogus declarations of comparison operators between
1994Boolean variables and float expressions.
1995
1996[ENTRY]
1997Module: kernel
1998What: new
1999Rank: minor
2000[DESCRIPTION]
2001Propagators and branchers now have a fixed identity available by
2002id() member functions.
2003
2004[ENTRY]
2005Module: kernel
2006What: new
2007Rank: minor
2008Thanks: Gilles Pesant
2009[DESCRIPTION]
2010Added an iterator SubscribedPropagators that iterates over the
2011subscribed propagators of views and variable implementations.
2012
2013[ENTRY]
2014Module: kernel
2015What: change
2016Rank: minor
2017Thanks: Mirko Rahn
2018[DESCRIPTION]
2019Do not use local classes as this would require C++-11.
2020
2021[ENTRY]
2022Module: int
2023What: bug
2024Rank: minor
2025[DESCRIPTION]
2026Fix n-ary lq/le propagator when used on arrays with variables occurring
2027multiply.
2028
2029[ENTRY]
2030Module: kernel
2031What: removed
2032Rank: major
2033[DESCRIPTION]
2034Removed brancher handles, they are subsumed by brancher groups.
2035
2036[ENTRY]
2037Module: other
2038What: bug
2039Rank: minor
2040[DESCRIPTION]
2041Fixed many small quirks in propagator rewriting, where the
2042information on which propagator is rewritten was omitted.
2043
2044[ENTRY]
2045Module: driver
2046What: new
2047Rank: minor
2048[DESCRIPTION]
2049Trace flags can be passed on the commandline.
2050
2051[ENTRY]
2052Module: float
2053What: new
2054Rank: major
2055[DESCRIPTION]
2056Added support for tracing propagation, please see MPG for details.
2057
2058[ENTRY]
2059Module: set
2060What: new
2061Rank: major
2062[DESCRIPTION]
2063Added support for tracing propagation, please see MPG for details.
2064
2065[ENTRY]
2066Module: int
2067What: new
2068Rank: major
2069[DESCRIPTION]
2070Added support for tracing propagation, please see MPG for details.
2071
2072[ENTRY]
2073Module: kernel
2074What: new
2075Rank: major
2076[DESCRIPTION]
2077Added support for tracing propagation, please see MPG for details.
2078
2079[ENTRY]
2080Module: kernel
2081What: new
2082Rank: major
2083[DESCRIPTION]
2084All constraint post functions should now use the macro
2085GECODE_POST at their start: it will check for failure but also
2086will set group information useful for tracing.
2087
2088[ENTRY]
2089Module: kernel
2090What: bug
2091Rank: minor
2092[DESCRIPTION]
2093Some Gecode macros made the assumption that they can only be used
2094inside the Gecode namespace. Fixed.
2095
2096[ENTRY]
2097Module: kernel
2098What: new
2099Rank: major
2100[DESCRIPTION]
2101Added groups of branchers (class BrancherGroup) by which
2102groups of branchers can be controlled. See MPG for details.
2103
2104[ENTRY]
2105Module: kernel
2106What: new
2107Rank: major
2108[DESCRIPTION]
2109Added groups of propagators (class PropagatorGroup) by which
2110groups of propagators can be controlled. See MPG for details.
2111
2112[ENTRY]
2113Module: kernel
2114What: new
2115Rank: major
2116[DESCRIPTION]
2117Propagators can now be disabled and enabled (through
2118PropagatorGroups). See MPG for details.
2119
2120[ENTRY]
2121Module: kernel
2122What: new
2123Rank: major
2124[DESCRIPTION]
2125All propagators must implement a virtual member function
2126reschedule() that can be used to reschedule a propagator according
2127to its subscriptions. See MPG for more details.
2128
2129[ENTRY]
2130Module: kernel
2131What: new
2132Rank: major
2133[DESCRIPTION]
2134All variable implementation must implement an additional
2135reschedule() function that can be used to reschedule a propagator
2136according to its subscriptions. See MPG for more details.
2137
2138[ENTRY]
2139Module: kernel
2140What: change
2141Rank: minor
2142[DESCRIPTION]
2143The iterators over all propagators and branchers of a space are
2144not any longer accessible. Please use group iterators instead.
2145
2146[ENTRY]
2147Module: kernel
2148What: change
2149Rank: minor
2150[DESCRIPTION]
2151The member functions propagators() and branchers() of the class
2152Space have been removed as they can be expressed with groups.
2153
2154[ENTRY]
2155Module: other
2156What: bug
2157Rank: minor
2158Thanks: Mirko Rahn
2159[DESCRIPTION]
2160Made copy constructor for search engines private to trigger
2161compiler error when trying to copy a search engine.
2162
2163[ENTRY]
2164Module: other
2165What: bug
2166Rank: minor
2167Thanks: Mirko Rahn
2168[DESCRIPTION]
2169Fixed some linking issues for static linking.
2170
2171[ENTRY]
2172Module: support
2173What: new
2174Rank: major
2175[DESCRIPTION]
2176Gecode supports now arbitrary memory allocators (the behavior can
2177be controlled by the commandline options -enable-allocator and
2178-disable-allocator). For more details, please see MPG.
2179
2180[ENTRY]
2181Module: kernel
2182What: change
2183Rank: minor
2184Thanks: Conrad Drescher
2185[DESCRIPTION]
2186Added destructor to NGL class to avoid warnings.
2187
2188[ENTRY]
2189Module: kernel
2190What: bug
2191Rank: minor
2192Thanks: Matthias Balzer
2193[DESCRIPTION]
2194Fixed wrong type declaration in region_allocator::deallocate().
2195
2196[ENTRY]
2197Module: float
2198What: bug
2199Rank: minor
2200Thanks: Conrad Drescher, Patrick Berg
2201[DESCRIPTION]
2202Fixed two infinite recursion bugs in related to use of hull().
2203
2204[ENTRY]
2205Module: flatzinc
2206What: bug
2207Rank: minor
2208[DESCRIPTION]
2209Add missing declaration for bool_clause_reif builtin.
2210
2211[ENTRY]
2212Module: flatzinc
2213What: bug
2214Rank: minor
2215Thanks: Tommy Persson
2216[DESCRIPTION]
2217FlatZinc interpreter now does not try to post constraints if there was a
2218syntax error during parsing.
2219
2220[ENTRY]
2221Module: minimodel
2222What: bug
2223Rank: minor
2224Thanks: Roberto Castañeda Lozano, Matthias Balzer
2225[DESCRIPTION]
2226Fixed posting of Boolean element expressions and relations.
2227
2228[ENTRY]
2229Module: minimodel
2230What: bug
2231Rank: minor
2232Thanks: Joseph Scott
2233[DESCRIPTION]
2234Fixed printing of regular expressions.
2235
2236[ENTRY]
2237Module: int
2238What: new
2239Rank: minor
2240[DESCRIPTION]
2241Added distinct-except-constant constraint.
2242
2243[ENTRY]
2244Module: int
2245What: new
2246Rank: minor
2247[DESCRIPTION]
2248Added distinct with optional variables.
2249
2250[ENTRY]
2251Module: flatzinc
2252What: change
2253Rank: minor
2254[DESCRIPTION]
2255Add support for the alldifferent_except_0 constraint by rewriting to a
2256global cardinality constraint.
2257
2258[ENTRY]
2259Module: flatzinc
2260What: change
2261Rank: minor
2262[DESCRIPTION]
2263The simple LNS using relax_and_reconstruct can now take an optional third
2264argument that is used as an initial solution.
2265
2266[ENTRY]
2267Module: search
2268What: change
2269Rank: minor
2270[DESCRIPTION]
2271The restart meta search engine must be used with the
2272branch-and-bound engine for best solution search.
2273
2274[ENTRY]
2275Module: search
2276What: change
2277Rank: minor
2278[DESCRIPTION]
2279For meta search engines, the order of template arguments has been
2280changed: the first is the script type, the second is the engine
2281type.
2282
2283[ENTRY]
2284Module: kernel
2285What: new
2286Rank: minor
2287[DESCRIPTION]
2288All branchers of a space can be killed by
2289BrancherGroup::all.kill(home). This is the default for the master()
2290function when using portfolio search.
2291
2292[ENTRY]
2293Module: kernel
2294What: new
2295Rank: major
2296[DESCRIPTION]
2297The clone() function takes an additional optional argument that defines
2298whether AFC information is shared among clones.
2299
2300[ENTRY]
2301Module: driver
2302What: new
2303Rank: minor
2304[DESCRIPTION]
2305The number of assets to use for portfolio-based search can be
2306passed on the commandline as -assets.
2307
2308[ENTRY]
2309Module: search
2310What: new
2311Rank: major
2312[DESCRIPTION]
2313Portfolio-based search has been added (both sequential and
2314parallel). Please see "Modeling and Programming with Gecode" for
2315details.
2316
2317[ENTRY]
2318Module: kernel
2319What: change
2320Rank: major
2321[DESCRIPTION]
2322The master() and slave() configuration functions has been changed
2323as they are now also used for portfolio-based search. Please see
2324"Modeling and Programming with Gecode" for details.
2325
2326[ENTRY]
2327Module: support
2328What: new
2329Rank: minor
2330[DESCRIPTION]
2331Classes can now inherit from HeapAllocated when using the Gecode
2332heap object for memory management.
2333
2334[ENTRY]
2335Module: search
2336What: bug
2337Rank: minor
2338[DESCRIPTION]
2339The restart engine would not properly delete some data structures
2340when being deleted.
2341
2342[ENTRY]
2343Module: int
2344What: new
2345Rank: minor
2346[DESCRIPTION]
2347Added some additional propagation to circuit and path
2348constraints, based on: Kathryn Glenn Francis, Peter Stuckey,
2349Explaining Circuit Propagation, Constraints (2014) 19:1-29.
2350
2351[ENTRY]
2352Module: kernel
2353What: new
2354Rank: minor
2355Thanks: Joseph Scott
2356[DESCRIPTION]
2357Missing = SUBSCRIBE annotations for modification events are
2358properly reported.
2359
2360[ENTRY]
2361Module: int
2362What: new
2363Rank: major
2364[DESCRIPTION]
2365The unary constraint now can also perform time-tabling propagation.
2366
2367[ENTRY]
2368Module: int
2369What: new
2370Rank: major
2371[DESCRIPTION]
2372The level of propagation of the cumulative constraint can now be
2373controlled via the integer propagation level argument. Please
2374consult Modeling and Programming with Gecode for details.
2375
2376[ENTRY]
2377Module: int
2378What: new
2379Rank: major
2380[DESCRIPTION]
2381The level of propagation of the unary constraint can now be
2382controlled via the integer propagation level argument. Please
2383consult Modeling and Programming with Gecode for details.
2384
2385[ENTRY]
2386Module: int
2387What: change
2388Rank: minor
2389[DESCRIPTION]
2390The selection for extensional table constraints whether to
2391optimize for speed or memory is now controlled by the integer
2392propagation level argument. The old argument of type
2393ExtensionalPropKind has been removed (the type has been removed
2394as well).
2395
2396[ENTRY]
2397Module: driver
2398What: change
2399Rank: major
2400[DESCRIPTION]
2401The commandline option -icl (for integer consistency level) has
2402been replaced by -ipl (for integer propagation level). All new
2403levels can be specified by a comma separated list as argument to
2404-ipl.
2405
2406[ENTRY]
2407Module: int
2408What: change
2409Rank: major
2410[DESCRIPTION]
2411The integer consistency level (IntConLevel) has been renamed to
2412integer propagation level (IntPropLevel). Additional levels for
2413speed, memory, basic, and advanced propagation have been added.
2414See Modeling and Programming with Gecode for details.
2415
2416[ENTRY]
2417Module: int
2418What: bug
2419Rank: major
2420Thanks: Kish Shen
2421[DESCRIPTION]
2422The count constraint with INT_GR relation was broken (off-by-one error).
2423
2424[ENTRY]
2425Module: example
2426What: change
2427Rank: minor
2428Thanks: Ananja Muddukrishna
2429[DESCRIPTION]
2430The bin-packing model did not use a best-fit solution for the
2431upper bound, but only a first-fit.
2432
2433[ENTRY]
2434Module: int
2435What: performance
2436Rank: minor
2437Thanks: Kish Shen
2438[DESCRIPTION]
2439Some count constraints are now optimized in case its arguments are
2440assigned.
2441
2442[ENTRY]
2443Module: other
2444What: change
2445Rank: minor
2446[DESCRIPTION]
2447Compiles with Visual Studio 2015.
2448
2449[ENTRY]
2450Module: int
2451What: bug
2452Rank: minor
2453Thanks: Kish Shen
2454[DESCRIPTION]
2455The binpacking constraint works even if all items are of size zero.
2456
2457[ENTRY]
2458Module: int
2459What: bug
2460Rank: minor
2461Thanks: Kish Shen
2462[DESCRIPTION]
2463Constrain bin variables even for zero-sized items in binpacking constraint.
2464
2465[ENTRY]
2466Module: flatzinc
2467What: bug
2468Rank: minor
2469[DESCRIPTION]
2470Fix a bug in the parser when parsing float variable domains.
2471
2472[ENTRY]
2473Module: int
2474What: new
2475Rank: minor
2476Thanks: Kish Shen
2477[DESCRIPTION]
2478Added variant of argmin and argmax with offset.
2479
2480[ENTRY]
2481Module: flatzinc
2482What: change
2483Rank: minor
2484Thanks: Pete Nightingale
2485[DESCRIPTION]
2486Make bounds propagation the default for global cardinality constraints
2487in FlatZinc.
2488
2489[ENTRY]
2490Module: flatzinc
2491What: change
2492Rank: minor
2493[DESCRIPTION]
2494Add support for generating the FlatZinc parser using bison version 3.
2495
2496[ENTRY]
2497Module: flatzinc
2498What: bug
2499Rank: major
2500Thanks: Andrea Rendl
2501[DESCRIPTION]
2502Fix branching on introduced variables, which could sometimes lead to
2503unassigned variables appearing in the output.
2504
2505[ENTRY]
2506Module: flatzinc
2507What: bug
2508Rank: minor
2509Thanks: Jean-Noël Monette
2510[DESCRIPTION]
2511Improve error messages in FlatZinc for some type errors.
2512
2513
2514[RELEASE]
2515Version: 4.4.0
2516Date: 2015-03-20
2517[DESCRIPTION]
2518This release fixes some bugs and improves some search-related aspects.
2519
2520Note that you will have to change all scripts that inherit from
2521the pre-defined script classes (Script, IntMinimizeScript,
2522IntMaximizeScript, FloatMinimizeScript, FloatMaximizeScript). The
2523change is easy: in your constructor you have to add a call to the
2524constructor of the pre-defined script class with the command line
2525options as argument. Just check any of the Gecode example for how
2526it is done.
2527
2528
2529[ENTRY]
2530Module: flatzinc
2531What: new
2532Rank: minor
2533Thanks: Mark Manser
2534[DESCRIPTION]
2535An option -step now can pass an improvement step for
2536optimization of float problems.
2537
2538[ENTRY]
2539Module: driver
2540What: change
2541Rank: major
2542[DESCRIPTION]
2543All scripts now must call the constructor of their base class
2544with an option argument.
2545
2546Note that you will have to change your models by a call to the
2547constructor of the script class with an option argument!
2548
2549[ENTRY]
2550Module: driver
2551What: new
2552Rank: minor
2553Thanks: Mark Manser
2554[DESCRIPTION]
2555An option -step now can pass an improvement step to scripts of
2556type FloatMinimizeScript and FloatMaximizeScript.
2557
2558[ENTRY]
2559Module: minimodel
2560What: new
2561Rank: minor
2562Thanks: Mark Manser
2563[DESCRIPTION]
2564The classes FloatMinimizeSpace and FloatMaximizeSpace can be
2565created with an improvement step for optimization.
2566
2567[ENTRY]
2568Module: flatzinc
2569What: bug
2570Rank: minor
2571Thanks: Ahmed Kamal
2572[DESCRIPTION]
2573Added support for missing builtins array_float_element
2574(by decomposition), float_lin_lt and float_lin_lt_reif.
2575
2576[ENTRY]
2577Module: search
2578What: new
2579Rank: minor
2580[DESCRIPTION]
2581Added functions to Stop class that can create common stop objects.
2582
2583[ENTRY]
2584Module: search
2585What: new
2586Rank: minor
2587[DESCRIPTION]
2588Exposed class definitions for common cutoff generators.
2589
2590[ENTRY]
2591Module: flatzinc
2592What: bug
2593Rank: minor
2594Thanks: Håkan Kjellerstrand
2595[DESCRIPTION]
2596LNS could fail when the search was restarted before finding the first solution.
2597
2598[ENTRY]
2599Module: search
2600What: bug
2601Rank: major
2602Thanks: Håkan Kjellerstrand
2603[DESCRIPTION]
2604Fix memory leak in the DFS and BAB search engines that could make restart-based
2605search run out of memory very quickly.
2606
2607[ENTRY]
2608Module: driver
2609What: new
2610Rank: minor
2611[DESCRIPTION]
2612Added option -seed for passing a seed to random number generators.
2613
2614[ENTRY]
2615Module: example
2616What: new
2617Rank: minor
2618[DESCRIPTION]
2619Added quasigroup completion benchmarks.
2620
2621[ENTRY]
2622Module: search
2623What: performance
2624Rank: minor
2625[DESCRIPTION]
2626Delay efforts for restarting until it is really needed after a
2627solution has been found.
2628
2629
2630[RELEASE]
2631Version: 4.3.3
2632Date: 2015-01-20
2633[DESCRIPTION]
2634This release adds support for LNS to FlatZinc, adds support for
2635MiniZinc 2, fixes a number of bugs and some new constraints.
2636
2637[ENTRY]
2638Module: flatzinc
2639What: new
2640Rank: minor
2641[DESCRIPTION]
2642Added support for arg_min and arg_max constraints.
2643
2644[ENTRY]
2645Module: int
2646What: new
2647Rank: minor
2648[DESCRIPTION]
2649Added argmin and argmax constraints.
2650
2651[ENTRY]
2652Module: search
2653What: bug
2654Rank: major
2655Thanks: Zichen Zhu
2656[DESCRIPTION]
2657Now no-goods are extracted properly in case a solution is found.
2658
2659[ENTRY]
2660Module: flatzinc
2661What: change
2662Rank: minor
2663[DESCRIPTION]
2664Add support for the MiniZinc 2 min/max builtins. The Gecode MiniZinc library
2665is now compatible with both MiniZinc 1.6 and 2.0.
2666
2667[ENTRY]
2668Module: search
2669What: change
2670Rank: minor
2671[DESCRIPTION]
2672Change the slave function for meta search engines to return whether the search
2673in the slave is going to be complete. This is necessary for example in LNS,
2674where completing the search in the slave does not mean that the overall search
2675is finished.
2676
2677[ENTRY]
2678Module: flatzinc
2679What: new
2680Rank: major
2681[DESCRIPTION]
2682Make a simple form of LNS accessible from FlatZinc. To use it, include
2683gecode.mzn and add the relax_and_reconstruct search annotation defined in
2684that file.
2685
2686[ENTRY]
2687Module: set
2688What: bug
2689Rank: minor
2690Thanks: Farshid Hassani Bijarbooneh
2691[DESCRIPTION]
2692The channeling propagator between a SetVar and an array of BoolVars
2693propagated incorrectly when posted on a fixed SetVar.
2694
2695[ENTRY]
2696Module: flatzinc
2697What: new
2698Rank: minor
2699[DESCRIPTION]
2700Support dom_w_deg search annotation.
2701
2702[ENTRY]
2703Module: flatzinc
2704What: change
2705Rank: minor
2706[DESCRIPTION]
2707Search on objective function variable after all other variables (but
2708still before introduced variables).
2709
2710[ENTRY]
2711Module: flatzinc
2712What: bug
2713Rank: minor
2714Thanks: Mats Carlsson
2715[DESCRIPTION]
2716Fix special case detection for cumulatives constraint, could sometimes
2717incorrectly turn a cumulatives into a disjunctive constraint.
2718
2719[ENTRY]
2720Module: flatzinc
2721What: bug
2722Rank: minor
2723Thanks: Björn Böttcher
2724[DESCRIPTION]
2725Fix behavior of -a command line option for satisfaction problems.
2726
2727[ENTRY]
2728Module: flatzinc
2729What: bug
2730Rank: minor
2731Thanks: Chris Mears
2732[DESCRIPTION]
2733Fix default search annotation for float objectives.
2734
2735[ENTRY]
2736Module: flatzinc
2737What: bug
2738Rank: minor
2739Thanks: Willem Van Onsem
2740[DESCRIPTION]
2741Install parser.tab.hh header.
2742
2743[ENTRY]
2744Module: flatzinc
2745What: new
2746Rank: minor
2747[DESCRIPTION]
2748Add support for gecode_schedule_cumulative_optional constraint.
2749
2750
2751[RELEASE]
2752Version: 4.3.2
2753Date: 2014-11-06
2754[DESCRIPTION]
2755Fixed major bug in and added extensive tests for the FlatZinc
2756interpreter. If you are using Gecode with FlatZinc you should
2757definitely upgrade!
2758
2759[ENTRY]
2760Module: test
2761What: new
2762Rank: major
2763[DESCRIPTION]
2764Added long-overdue tests for the FlatZinc interpreter.
2765
2766[ENTRY]
2767Module: other
2768What: bug
2769Rank: minor
2770Thanks: Alex Elliott
2771[DESCRIPTION]
2772Fix cmake build file to work better when building with Qt.
2773
2774[ENTRY]
2775Module: flatzinc
2776What: bug
2777Rank: major
2778Thanks: Jean-Noël Monette
2779[DESCRIPTION]
2780Fixed major bug that would cause the FlatZinc interpreter to crash
2781on most models.
2782
2783[RELEASE]
2784Version: 4.3.1
2785Date: 2014-10-22
2786[DESCRIPTION]
2787This release fixes some minor issues and a major bug for the
2788FlatZinc interpreter. It considerably extends restart-based
2789search so that it supports LNS (Large Neighborhood Search).
2790
2791[ENTRY]
2792Module: search
2793What: change
2794Rank: major
2795[DESCRIPTION]
2796The restart-based search engine has been made more powerful: the
2797master() and slave() configuration functions have been extended
2798and get more information about each restart and the engine always
2799maintains the last solution found. In particulae, the engine is
2800now powerful enough to support LNS (Large Neighborhood
2801Search). For details, please see MPG.
2802
2803[ENTRY]
2804Module: search
2805What: change
2806Rank: minor
2807[DESCRIPTION]
2808The interface of cutoff generators has been extended in that it
2809now offers current value access (operator()()) as well as
2810increment (operator++()).
2811
2812[ENTRY]
2813Module: search
2814What: new
2815Rank: minor
2816[DESCRIPTION]
2817Added a cutoff generator that merges the values of two cutoff generators.
2818
2819[ENTRY]
2820Module: other
2821What: bug
2822Rank: minor
2823Thanks: Pierre Talbot
2824[DESCRIPTION]
2825Gecode can now be used together with boost without conflicts.
2826
2827[ENTRY]
2828Module: other
2829What: new
2830Rank: minor
2831Thanks: Petter Strandmark
2832[DESCRIPTION]
2833Added support for building examples with CMake.
2834
2835[ENTRY]
2836Module: minimodel
2837What: bug
2838Rank: minor
2839Thanks: Léonard Benedetti
2840[DESCRIPTION]
2841Removed potentially undefined behavior for regular expressions.
2842
2843[ENTRY]
2844Module: flatzinc
2845What: bug
2846Rank: major
2847Thanks: Mats Carlsson
2848[DESCRIPTION]
2849Fixed FlatZinc aliasing detection on array variables that
2850introduced incorrect aliases between variables.
2851
2852[ENTRY]
2853Module: flatzinc
2854What: bug
2855Rank: minor
2856Thanks: Frank Imeson
2857[DESCRIPTION]
2858Fixed parser for integer literals to generate error message when
2859integers are out of bounds.
2860
2861[ENTRY]
2862Module: flatzinc
2863What: bug
2864Rank: minor
2865Thanks: Peter Nightingale
2866[DESCRIPTION]
2867Fixed the FlatZinc interpreter to accept empty arrays as arguments in
2868annotations.
2869
2870[ENTRY]
2871Module: flatzinc
2872What: bug
2873Rank: minor
2874Thanks: Carleton Coffrin
2875[DESCRIPTION]
2876Fixed the behaviour for the -n and -a command line options for
2877optimisation models.
2878
2879
2880[RELEASE]
2881Version: 4.3.0
2882Date: 2014-08-28
2883[DESCRIPTION]
2884This release fixes a large number of both minor and major bugs,
2885has some improvements for FlatZinc, and adds multi-dimensional
2886bin-packing.
2887
2888[ENTRY]
2889Module: other
2890What: bug
2891Rank: minor
2892Thanks: Victor Zverovich, Tony Kelman
2893[DESCRIPTION]
2894Various fixes for CMake:
2895 - Set the output directory for runtime target files (executables and DLLs) to bin/ subdirectory of the project's binary directory to avoid collisions when Gecode is used as a subproject.Improve suppression of warnings.
2896 - Add GECODE_USE_QT variable which specifies whether to use Qt. Qt is used if GECODE_USE_QT is TRUE or unset.
2897 - Prevent linker warnings on MSVC.
2898 - Use per-target instead of global include directories. This simplifies use of Gecode as a subproject because add_target_libraries(<target> <gecode-lib>) now sets the necessary include directories for <target> in addition to link dependencies.
2899 - Fix to fully link internal dependencies needed for creating DLLs: https://github.com/ampl/gecode/pull/2
2900 .
2901
2902[ENTRY]
2903Module: flatzinc
2904What: change
2905Rank: minor
2906[DESCRIPTION]
2907The --free command line option has been renamed to -f to comply with other
2908FlatZinc solvers.
2909
2910[ENTRY]
2911Module: flatzinc
2912What: performance
2913Rank: minor
2914[DESCRIPTION]
2915The diffn constraint now posts additional implied cumulative constraints
2916to strengthen propagation.
2917
2918[ENTRY]
2919Module: flatzinc
2920What: bug
2921Rank: minor
2922[DESCRIPTION]
2923Added unshare constraints to all constraints that need them. Without unsharing,
2924variables occurring multiply in the same FlatZinc arrays could lead to the
2925FlatZinc interpreter aborting with an error.
2926
2927[ENTRY]
2928Module: flatzinc
2929What: performance
2930Rank: minor
2931[DESCRIPTION]
2932Treat equality constraints in FlatZinc as aliases instead of posting
2933propagators, and post simple domain constraints before more complex
2934propagators to help post the most efficient versions.
2935
2936[ENTRY]
2937Module: example
2938What: new
2939Rank: minor
2940Thanks: Stefano Gualandi, Brian Kell, Willem-Jan Van Hoeve
2941[DESCRIPTION]
2942Added example for multi-dimensional bin-packing
2943constraint. Thanks to Brian and Willem-Jan for allowing us to use
2944their data set.
2945
2946[ENTRY]
2947Module: int
2948What: new
2949Rank: major
2950Author: Stefano Gualandi
2951[DESCRIPTION]
2952Added multi-dimensional bin-packing constraint.
2953
2954[ENTRY]
2955Module: kernel
2956What: change
2957Rank: minor
2958Thanks: Kish Shen
2959[DESCRIPTION]
2960Allow 0.0 as decay value.
2961
2962[ENTRY]
2963Module: other
2964What: bug
2965Rank: minor
2966Thanks: Roland Stigge
2967[DESCRIPTION]
2968Added patch for PowerPC (downstream patch from Debian).
2969
2970[ENTRY]
2971Module: other
2972What: bug
2973Rank: minor
2974Thanks: David Rijsman
2975[DESCRIPTION]
2976Added missing boost header files.
2977
2978[ENTRY]
2979Module: test
2980What: bug
2981Rank: minor
2982Thanks: Victor Zverovich
2983[DESCRIPTION]
2984Removed uninitialized access.
2985
2986[ENTRY]
2987Module: set
2988What: bug
2989Rank: minor
2990Thanks: Victor Zverovich
2991[DESCRIPTION]
2992Removed compiler warning.
2993
2994[ENTRY]
2995Module: float
2996What: bug
2997Rank: minor
2998Thanks: Victor Zverovich
2999[DESCRIPTION]
3000Removed compiler warning.
3001
3002[ENTRY]
3003Module: flatzinc
3004What: bug
3005Rank: minor
3006Thanks: Victor Zverovich
3007[DESCRIPTION]
3008Fixed FlatZinc interpreter to compile with clang in C++11 mode.
3009
3010[ENTRY]
3011Module: int
3012What: bug
3013Rank: minor
3014Thanks: Bauke Conijn
3015[DESCRIPTION]
3016Re-enabled parts of not-first-not-last propagation for unary with
3017optional tasks.
3018
3019[ENTRY]
3020Module: flatzinc
3021What: bug
3022Rank: minor
3023[DESCRIPTION]
3024Catch exceptions and print proper error message.
3025
3026[ENTRY]
3027Module: minimodel
3028What: bug
3029Rank: major
3030[DESCRIPTION]
3031Fixed posting of set relations involving constants.
3032
3033[ENTRY]
3034Module: int
3035What: bug
3036Rank: major
3037Thanks: Roberto Castañeda Lozano, Gabriel Hjort Blindell
3038[DESCRIPTION]
3039In extremely rare cases, the bounds-consistent distinct (and
3040hence all other distinct propagators as they use the
3041bounds-consistent one internally) propagator could suffer from
3042numerical overflow.
3043
3044[ENTRY]
3045Module: kernel
3046What: bug
3047Rank: minor
3048Thanks: Roberto Castañeda Lozano
3049[DESCRIPTION]
3050The function brancher did not return a handle.
3051
3052[ENTRY]
3053Module: int
3054What: bug
3055Rank: minor
3056Thanks: Duane Leslie
3057[DESCRIPTION]
3058No-good literals for greater-or-equal did not prune as much as they should.
3059
3060
3061[RELEASE]
3062Version: 4.2.1
3063Date: 2013-11-05
3064[DESCRIPTION]
3065This release fixes several major bugs and adds some minor
3066improvements.
3067
3068[ENTRY]
3069Module: other
3070What: change
3071Rank: minor
3072[DESCRIPTION]
3073Compiles with MSVC 2013.
3074
3075[ENTRY]
3076Module: search
3077What: bug
3078Rank: major
3079Thanks: Roberto Castañeda Lozano
3080[DESCRIPTION]
3081Fix for restart-based search when the master does not have a branching.
3082
3083[ENTRY]
3084Module: search
3085What: bug
3086Rank: major
3087Thanks: Roberto Castañeda Lozano
3088[DESCRIPTION]
3089Restart-based search did not work when the cutoff limit did not
3090strictly increase.
3091
3092[ENTRY]
3093Module: search
3094What: new
3095Rank: minor
3096Thanks: Roberto Castañeda Lozano
3097[DESCRIPTION]
3098Added support for a repeat cutoff generator.
3099
3100[ENTRY]
3101Module: int
3102What: performance
3103Rank: minor
3104Thanks: Anne Meyer
3105[DESCRIPTION]
3106Fix performance of domain consistent element for the case that the result
3107variable is assigned.
3108
3109[ENTRY]
3110Module: int
3111What: bug
3112Rank: major
3113Thanks: Bauke Conijn
3114[DESCRIPTION]
3115Fixed incorrect propagation in sortedness with permutation variables.
3116
3117[ENTRY]
3118Module: int
3119What: bug
3120Rank: major
3121Thanks: Duane Leslie
3122[DESCRIPTION]
3123Fixed cumulative constraint for 0-usage tasks.
3124
3125[ENTRY]
3126Module: int
3127What: bug
3128Rank: major
3129Thanks: Duane Leslie
3130[DESCRIPTION]
3131Fixed special case check for cumulative that would wrongly classify
3132some instances as disjunctive.
3133
3134[ENTRY]
3135Module: int
3136What: bug
3137Rank: major
3138Thanks: Kish Shen
3139[DESCRIPTION]
3140The nroot constraint now propagates correctly for negative
3141numbers when the exponent is odd.
3142
3143[ENTRY]
3144Module: other
3145What: bug
3146Rank: minor
3147[DESCRIPTION]
3148Fix CMake to also build FlatZinc and Driver correctly.
3149
3150[ENTRY]
3151Module: flatzinc
3152What: bug
3153Rank: minor
3154[DESCRIPTION]
3155Fixed bug in auxiliary variable branching.
3156
3157[ENTRY]
3158Module: minimodel
3159What: new
3160Rank: minor
3161Thanks: Philippe Kezirian
3162[DESCRIPTION]
3163The sum of IntArgs can now be computed similarly to the sum of
3164IntVarArgs.
3165
3166[ENTRY]
3167Module: kernel
3168What: new
3169Rank: minor
3170Thanks: Kish Shen
3171[DESCRIPTION]
3172Activity information can now be initialized with a branch merit function.
3173
3174[ENTRY]
3175Module: int
3176What: new
3177Rank: minor
3178Thanks: Kish Shen
3179[DESCRIPTION]
3180Activity information can now be initialized with a branch merit function.
3181
3182[ENTRY]
3183Module: set
3184What: new
3185Rank: minor
3186Thanks: Kish Shen
3187[DESCRIPTION]
3188Activity information can now be initialized with a branch merit function.
3189
3190[ENTRY]
3191Module: float
3192What: new
3193Rank: minor
3194Thanks: Kish Shen
3195[DESCRIPTION]
3196Activity information can now be initialized with a branch merit function.
3197
3198
3199
3200[RELEASE]
3201Version: 4.2.0
3202Date: 2013-07-19
3203[DESCRIPTION]
3204This release adds no-goods from restarts, removes memory
3205statistics (but Gecode can be configured for more accurate
3206statistics), and fixes a number of bugs.
3207
3208[ENTRY]
3209Module: iter
3210What: bug
3211Rank: minor
3212Thanks: Farshid Hassani Bijarbooneh, Joseph Scott
3213[DESCRIPTION]
3214Fixed segfault in NaryUnion iterator.
3215
3216[ENTRY]
3217Module: kernel
3218What: new
3219Rank: minor
3220[DESCRIPTION]
3221Added configure switch --enable-peakheap that adds support for
3222memory statistics to the kernel. This comes with a runtime overhead,
3223but provides more accurate information than the previous search
3224engine based statistics.
3225
3226[ENTRY]
3227Module: search
3228What: removed
3229Rank: major
3230[DESCRIPTION]
3231Removed memory statistics from the search engines. The reason is
3232that the figures were too inaccurate (memory for shared data
3233structure, caches, etc were not counted) and computing the
3234figures was complicated. This feature is replaced by a configure
3235switch that enables peak memory tracking based on operating system
3236information.
3237
3238[ENTRY]
3239Module: kernel
3240What: change
3241Rank: minor
3242Thanks: Kish Shen
3243[DESCRIPTION]
3244Low-level support for AFC is now public.
3245
3246[ENTRY]
3247Module: search
3248What: new
3249Rank: minor
3250[DESCRIPTION]
3251Search options have an additional field nogoods_limit that
3252defines too which depth a search tree is inspected for no-goods.
3253
3254[ENTRY]
3255Module: kernel
3256What: change
3257Rank: minor
3258[DESCRIPTION]
3259The master() member function used during restart-based search now
3260takes an additional no-goods argument. The default master()
3261function posts no-goods (only effective when enabled in
3262Search::Options). See MPG for details.
3263
3264[ENTRY]
3265Module: driver
3266What: new
3267Rank: minor
3268[DESCRIPTION]
3269When using restart-based search, the use of no-goods from
3270restarts can be switched on/off with the -nogoods command line
3271option and the depth limit for extraction of no-goods with the
3272-nogoods-limit command line option.
3273
3274[ENTRY]
3275Module: search
3276What: new
3277Rank: major
3278[DESCRIPTION]
3279Added support for no-goods from restarts, see Modeling and
3280Programming with Gecode for details.
3281
3282Note that also entails that the statistics will report different
3283a different peak depth than in previous releases of Gecode when
3284using no-goods.
3285
3286[ENTRY]
3287Module: flatzinc
3288What: new
3289Rank: minor
3290[DESCRIPTION]
3291Added support for value_precede_int and value_precede_set constraints.
3292
3293[ENTRY]
3294Module: flatzinc
3295What: bug
3296Rank: major
3297Thanks: Chris Mears
3298[DESCRIPTION]
3299Fixed a memory leak in FlatZincSpace and a few more in the FlatZinc
3300parser.
3301
3302[ENTRY]
3303Module: flatzinc
3304What: bug
3305Rank: minor
3306Thanks: Chris Mears
3307[DESCRIPTION]
3308Fixed a bug in implicit search heuristic that could lead to a
3309segmentation fault when minimizing an array element.
3310
3311[ENTRY]
3312Module: other
3313What: bug
3314Rank: minor
3315Thanks: Victor Zverovich
3316[DESCRIPTION]
3317Fixes link error for CMake with MSVC.
3318
3319
3320[RELEASE]
3321Version: 4.1.0
3322Date: 2013-07-01
3323[DESCRIPTION]
3324This release adds a really useful feature and the required
3325infrastructure to Gist (it now can show information on the
3326alternatives in a search tree), has some new features, and fixes
3327quite a number of bugs (some of which are quite serious, in
3328particular for: LDSB, restart-based search, and FlatZinc).
3329
3330[ENTRY]
3331Module: driver
3332What: bug
3333Rank: minor
3334Thanks: Vincent Barichard
3335[DESCRIPTION]
3336Fixed a race condition when using parallel search.
3337
3338[ENTRY]
3339Module: set
3340What: bug
3341Rank: minor
3342[DESCRIPTION]
3343Fixed SET_VAR_ACTIVITY_SIZE_MIN/MAX, which used to compute
3344size/activity instead of activity/size.
3345
3346[ENTRY]
3347Module: kernel
3348What: performance
3349Rank: minor
3350[DESCRIPTION]
3351Implement the AFC search heuristic using FastMutex, which greatly
3352improves parallel search performance on Mac OS X when using AFC.
3353
3354[ENTRY]
3355Module: support
3356What: new
3357Rank: minor
3358[DESCRIPTION]
3359Added FastMutex class that is implemented using spin locks on
3360some platforms.
3361
3362[ENTRY]
3363Module: int
3364What: bug
3365Rank: minor
3366Thanks: Victor Zverovich
3367[DESCRIPTION]
3368Fixed INT_VALUES_MAX() branching (INT_VALUES_MIN() was used instead).
3369
3370[ENTRY]
3371Module: float
3372What: bug
3373Rank: minor
3374[DESCRIPTION]
3375Fixed FLOAT_VAR_ACTIVITY_SIZE_MIN/MAX, which used to compute
3376size/activity instead of activity/size.
3377
3378[ENTRY]
3379Module: example
3380What: new
3381Rank: minor
3382Thanks: Stefano Gualandi
3383[DESCRIPTION]
3384Added LDSB-based symmetry breaking to graph coloring example.
3385
3386[ENTRY]
3387Module: flatzinc
3388What: bug
3389Rank: minor
3390Thanks: Peter Nightingale
3391[DESCRIPTION]
3392Fixed printing of float variables to be compatible with MiniZinc output.
3393
3394[ENTRY]
3395Module: flatzinc
3396What: bug
3397Rank: minor
3398Thanks: Peter Nightingale
3399[DESCRIPTION]
3400Fixed a segmentation fault when using FlatZinc with float variables
3401that have initializers.
3402
3403[ENTRY]
3404Module: set
3405What: bug
3406Rank: major
3407Thanks: Stefano Gualandi
3408[DESCRIPTION]
3409Fixed crash due to combination of LDSB and Activity.
3410
3411[ENTRY]
3412Module: int
3413What: bug
3414Rank: major
3415Thanks: Stefano Gualandi
3416[DESCRIPTION]
3417Fixed crash due to combination of LDSB and Activity.
3418
3419[ENTRY]
3420Module: int
3421What: bug
3422Rank: major
3423[DESCRIPTION]
3424The internal representation of integer variable domains could leak
3425memory to the space.
3426
3427[ENTRY]
3428Module: flatzinc
3429What: new
3430Rank: major
3431[DESCRIPTION]
3432The FlatZinc interpreter now supports float variables as objective
3433functions.
3434
3435[ENTRY]
3436Module: gist
3437What: new
3438Rank: major
3439[DESCRIPTION]
3440Gist now can show information on the alternatives in a search tree,
3441using the new menu options "Label branches" and "Label path".
3442
3443[ENTRY]
3444Module: float
3445What: bug
3446Rank: minor
3447[DESCRIPTION]
3448Random value selection for float branchings was not declared with
3449the right types.
3450
3451[ENTRY]
3452Module: set
3453What: new
3454Rank: major
3455[DESCRIPTION]
3456Set branchings now take an optional argument for a
3457user-defined print function. See MPG for details.
3458
3459[ENTRY]
3460Module: float
3461What: new
3462Rank: major
3463[DESCRIPTION]
3464Float branchings now take an optional argument for a
3465user-defined print function. See MPG for details.
3466
3467[ENTRY]
3468Module: int
3469What: new
3470Rank: major
3471[DESCRIPTION]
3472Integer and Boolean branchings now take an optional argument for a
3473user-defined print function. See MPG for details.
3474
3475[ENTRY]
3476Module: kernel
3477What: new
3478Rank: major
3479[DESCRIPTION]
3480Branchers now support a print() member function.
3481
3482[ENTRY]
3483Module: flatzinc
3484What: new
3485Rank: minor
3486[DESCRIPTION]
3487Added {int,bool,set,float}_default_search annotations. These can be used
3488on solve items to declare the default search strategy for the respective
3489variable types.
3490
3491[ENTRY]
3492Module: minimodel
3493What: bug
3494Rank: minor
3495Thanks: Roberto Castañeda Lozano
3496[DESCRIPTION]
3497Boolean expressions could lead to a segfault when initialized
3498with default constructor.
3499
3500[ENTRY]
3501Module: kernel
3502What: new
3503Rank: minor
3504[DESCRIPTION]
3505Both AFC and Activity can be changed by a set() function.
3506
3507[ENTRY]
3508Module: int
3509What: new
3510Rank: minor
3511[DESCRIPTION]
3512Added if-then-else constraint (called ite) for integer variables.
3513
3514[ENTRY]
3515Module: driver
3516What: new
3517Rank: minor
3518Thanks: Pascal Francq
3519[DESCRIPTION]
3520Added classes FloatMinimizeScript and FloatMaximizeScript for
3521cost-based optimization with a float cost variable.
3522
3523[ENTRY]
3524Module: driver
3525What: change
3526Rank: minor
3527[DESCRIPTION]
3528Added classes IntMinimizeScript and IntMaximizeScript for
3529cost-based optimization with an integer cost variable. While the
3530classes MinimizeScript and MaximizeSpcript are still available,
3531there use is deprecated and a later release might remove them.
3532
3533[ENTRY]
3534Module: int
3535What: change
3536Rank: minor
3537[DESCRIPTION]
3538Added classes IntMinimizeSpace and IntMaximizeSpace for
3539cost-based optimization with an integer cost variable. While the
3540classes MinimizeSpace and MaximizeSpace are still available,
3541there use is deprecated and a later release might remove them.
3542
3543[ENTRY]
3544Module: float
3545What: new
3546Rank: minor
3547Thanks: Pascal Francq
3548[DESCRIPTION]
3549Added classes FloatMinimizeSpace and FloatMaximizeSpace for
3550cost-based optimization with a float cost variable.
3551
3552[ENTRY]
3553Module: flatzinc
3554What: bug
3555Rank: minor
3556[DESCRIPTION]
3557Fixed the random search strategies to all use the same random number
3558generator instead of different generators all initialised with the same
3559seed (and therefore all producing the same sequences).
3560
3561[ENTRY]
3562Module: flatzinc
3563What: new
3564Rank: minor
3565Thanks: Tias Guns
3566[DESCRIPTION]
3567Added int2float constraint which was missing in the FlatZinc
3568interpreter.
3569
3570[ENTRY]
3571Module: int
3572What: bug
3573Rank: minor
3574Thanks: David Rijsman
3575[DESCRIPTION]
3576Fixed binpacking crash when the b and s arrays are empty.
3577
3578[ENTRY]
3579Module: other
3580What: change
3581Rank: minor
3582Thanks: Cliff Yapp
3583[DESCRIPTION]
3584CMake build system tweaked for out-of-source-dir building.
3585
3586[ENTRY]
3587Module: float
3588What: bug
3589Rank: minor
3590Thanks: Duong Khanh Chuong
3591[DESCRIPTION]
3592Fixed missing propagation in reified rel-constraints.
3593
3594[ENTRY]
3595Module: search
3596What: bug
3597Rank: major
3598Thanks: Chris Mears, Roberto Castañeda Lozano
3599[DESCRIPTION]
3600Fixed a bug in restart-based search, which would crash if the
3601problem is failed at the root or only had a single solution
3602during best-solution search.
3603
3604[RELEASE]
3605Version: 4.0.0
3606Date: 2013-03-14
3607[DESCRIPTION]
3608This release adds a multitude of new features, fixes many bugs,
3609and offers a number of performance improvements. There are too
3610many major improvements to even summarize them here all, so here
3611are just some highlights: LDSB as automatic symmetry breaking
3612during search; restart-based search; complete redesign and
3613reimplementation of branching enhancing the expressiveness
3614massively (AFC with decay, activity, user-defined variable and
3615value selection, tie-break control, better randomization, ...);
3616half-reification; addition of floating point constraints.
3617
3618It is recommended to read the new Chapter in MPG on branching as
3619the changes are substantial and require you to change your
3620programs, see also the full list of changes below.
3621
3622As the interfaces has changed, please consult \ref
3623PageHowToChange_4 "How to Change to Gecode 4.0.0".
3624
3625[ENTRY]
3626Module: flatzinc
3627What: change
3628Rank: minor
3629[DESCRIPTION]
3630Renamed the FlatZinc executable to fzn-gecode, to better distinguish
3631it when installed alongside other FlatZinc implementations.
3632
3633[ENTRY]
3634Module: int
3635What: new
3636Rank: major
3637Author: Christopher Mears
3638[DESCRIPTION]
3639Gecode now supports Lightweight Dynamic Symmetry Breaking (LDSB),
3640see MPG for details.
3641
3642[ENTRY]
3643Module: set
3644What: new
3645Rank: major
3646Author: Christopher Mears
3647[DESCRIPTION]
3648Gecode now supports Lightweight Dynamic Symmetry Breaking (LDSB),
3649see MPG for details.
3650
3651[ENTRY]
3652Module: int
3653What: new
3654Rank: major
3655Thanks: Manuel Loth
3656[DESCRIPTION]
3657Added value selection strategies for branching
3658INT_VAL_NEAR_MIN(), INT_VAL_NEAR_MAX(), INT_VAL_NEAR_INC(), and
3659INT_VAL_NEAR_DEC(). They can take a previous assignment to the
3660variables to branch on and try to choose values which are near
3661(see MPG for details).
3662
3663[ENTRY]
3664Module: int
3665What: new
3666Rank: minor
3667[DESCRIPTION]
3668Added domain constraint that constrains a variable (or an array)
3669according to the domain of another variable.
3670
3671[ENTRY]
3672Module: set
3673What: new
3674Rank: minor
3675[DESCRIPTION]
3676Added domain constraint that constrains a variable (or an array)
3677according to the domain of another variable.
3678
3679[ENTRY]
3680Module: set
3681What: new
3682Rank: minor
3683[DESCRIPTION]
3684Added domain constraints for arrays of set variables.
3685
3686[ENTRY]
3687Module: kernel
3688What: change
3689Rank: minor
3690[DESCRIPTION]
3691The default constrain() function for best-solution search now
3692does by default nothing (it used to throw an exception).
3693
3694[ENTRY]
3695Module: driver
3696What: new
3697Rank: major
3698[DESCRIPTION]
3699Added commandline options to control restart-based search, see
3700MPG for details.
3701
3702[ENTRY]
3703Module: search
3704What: new
3705Rank: major
3706[DESCRIPTION]
3707Added support for restart-based search, see MPG for details.
3708
3709[ENTRY]
3710Module: flatzinc
3711What: new
3712Rank: minor
3713[DESCRIPTION]
3714Added support for more search annotations (defined in gecode.mzn), and for
3715the restart and decay command line options.
3716
3717[ENTRY]
3718Module: other
3719What: new
3720Rank: minor
3721Thanks: Victor Zverovich
3722[DESCRIPTION]
3723Added CMake build script for Gecode (CMakeLists.txt).
3724
3725[ENTRY]
3726Module: int
3727What: new
3728Rank: minor
3729[DESCRIPTION]
3730Added variants of dom that copy the domain from one variable to
3731another.
3732
3733[ENTRY]
3734Module: driver
3735What: new
3736Rank: minor
3737[DESCRIPTION]
3738Decay values can now be passed on the command line using the
3739switch -decay.
3740
3741[ENTRY]
3742Module: search
3743What: change
3744Rank: major
3745[DESCRIPTION]
3746Variable selection for branching used the quotient of size
3747divided by degree, accumulated failure count, or activity. They
3748now use the inverse. That is, for example, it is not any longer
3749INT_VAR_SIZE_DEGREE_MIN() but INT_VAR_DEGREE_SIZE_MAX() (that is,
3750largest degree divided by size).
3751[MORE]
3752That looks like an annoying change but is in fact essential: the
3753strategies using accumulated failure count and activity now could
3754have run into division by zero issues. And just changing the
3755implementation is not good enough because the values of these
3756measures can now be exposed during tie-breaking.
3757
3758[ENTRY]
3759Module: other
3760What: new
3761Rank: major
3762[DESCRIPTION]
3763Variable selection using AFC now supports decay. Read more in MPG.
3764
3765[ENTRY]
3766Module: int
3767What: performance
3768Rank: major
3769[DESCRIPTION]
3770Arithmetic, linear, and cumulative constraints now resort to
3771internal operations using "long long int" rather than
3772"double". This improves performance but also extends the range
3773over integer coefficients that can be handled by linear
3774constraints.
3775
3776[ENTRY]
3777Module: flatzinc
3778What: bug
3779Rank: minor
3780[DESCRIPTION]
3781The mzn-gecode shell script now passes arguments correctly to the
3782FlatZinc interpreter.
3783
3784[ENTRY]
3785Module: other
3786What: change
3787Rank: minor
3788[DESCRIPTION]
3789Compiles with MSVC 2012.
3790
3791[ENTRY]
3792Module: gist
3793What: change
3794Rank: minor
3795[DESCRIPTION]
3796Updated to compile with Qt version 5.0 (still works with Qt >= 4.3 as well).
3797
3798[ENTRY]
3799Module: int
3800What: bug
3801Rank: minor
3802Thanks: Roberto Castañeda Lozano
3803[DESCRIPTION]
3804Fixed precede constraint with less than two values.
3805
3806[ENTRY]
3807Module: set
3808What: bug
3809Rank: minor
3810Thanks: Roberto Castañeda Lozano
3811[DESCRIPTION]
3812Fixed precede constraint with less than two values.
3813
3814[ENTRY]
3815Module: int
3816What: new
3817Rank: minor
3818[DESCRIPTION]
3819The nooverlap constraint now allows sharing of unassigned
3820variables in its argument arrays.
3821
3822[ENTRY]
3823Module: set
3824What: new
3825Rank: major
3826[DESCRIPTION]
3827Added half-reification for reified constraints (see Modeling and
3828Programming with Gecode for details).
3829
3830[ENTRY]
3831Module: int
3832What: new
3833Rank: major
3834[DESCRIPTION]
3835Added half-reification for reified constraints (see Modeling and
3836Programming with Gecode for details).
3837
3838[ENTRY]
3839Module: flatzinc
3840What: bug
3841Rank: minor
3842Thanks: Simon Ekvy
3843[DESCRIPTION]
3844Removed spurious debug output for among constraint.
3845
3846[ENTRY]
3847Module: int
3848What: bug
3849Rank: major
3850Thanks: Lin Yong
3851[DESCRIPTION]
3852Fixed a bug where bounds consistent distinct reported subsumption
3853instead of failure in certain cases.
3854
3855[ENTRY]
3856Module: support
3857What: bug
3858Rank: minor
3859[DESCRIPTION]
3860Fixed a concurrency problem that caused an exception to be thrown at
3861the end of a multi-threaded search on some platforms.
3862
3863[ENTRY]
3864Module: int
3865What: change
3866Rank: minor
3867[DESCRIPTION]
3868The coefficients for linear constraints are now divided by
3869their greatest common divisor. That means that some equations
3870can be handled now that previously threw an OutOfLimits exception,
3871and some equations can be handled with the more efficient integer
3872precision propagators that previously required double precision.
3873
3874[ENTRY]
3875Module: kernel
3876What: change
3877Rank: major
3878[DESCRIPTION]
3879The entire infrastructure for variable-value branchers has been
3880reimplemented from scratch. The new design makes a much better
3881compromise between code size, efficiency, and expressiveness:
3882the efficiency is about the same (for examples with no
3883propagation and just branching one can note a slowdown of 2-4%)
3884while code size shrinks drastically (the overall code size for
3885integer variables shrinks by 20%) and the architecture is much
3886more expressive (in particular, it supports tie-break limits, see
3887MPG).
3888
3889[ENTRY]
3890Module: int
3891What: change
3892Rank: minor
3893Thanks: Roberto Castañeda Lozano
3894[DESCRIPTION]
3895Generalized definition of no-overlap propagators for better reuse.
3896
3897[ENTRY]
3898Module: iter
3899What: documentation
3900Rank: minor
3901[DESCRIPTION]
3902Clarified for several iterators that when using the assignment
3903operator both iterators must be allocated from the very same
3904region.
3905
3906[ENTRY]
3907Module: int
3908What: change
3909Rank: major
3910[DESCRIPTION]
3911The interface for branching on integer and Boolean variables has
3912changed considerably (supporting user-defined variable and value
3913selection, tie-break limit functions, handlers to created
3914branchers, and more). In order to change, you have to add () to
3915all variants of INT_VAR, INT_VAL, and INT_ASSIGN. For example,
3916INT_VAR_SIZE_MIN becomes the function call INT_VAR_SIZE_MIN() and
3917INT_VAL_MIN_MIN becomes the function call INT_VAL_MIN_MIN(). Some
3918of these functions expect additional arguments and can take also
3919optional arguments (this replaces the VarBranchOptions and
3920ValBranchOptions). Please read the new "Branching" chapter
3921in MPG.
3922
3923[ENTRY]
3924Module: set
3925What: change
3926Rank: major
3927[DESCRIPTION]
3928The interface for branching on integer and Boolean variables has
3929changed considerably (supporting user-defined variable and value
3930selection, tie-break limit functions, handlers to created
3931branchers, and more). In order to change, you have to add () to
3932all variants of SET_VAR, SET_VAL, and SET_ASSIGN. For example,
3933SET_VAR_SIZE_MIN becomes the function call SET_VAR_SIZE_MIN() and
3934SET_VAL_MIN_INC becomes the function call SET_VAL_MIN_INC(). Some
3935of these functions expect additional arguments and can take also
3936optional arguments (this replaces the VarBranchOptions and
3937ValBranchOptions). Please read the new "Branching" chapter in
3938MPG.
3939
3940[ENTRY]
3941Module: kernel
3942What: new
3943Rank: minor
3944[DESCRIPTION]
3945The random seeds for variable and value branching options can now
3946be initialized from a hardware random number generator (see MPG
3947for details).
3948
3949[ENTRY]
3950Module: search
3951What: change
3952Rank: major
3953[DESCRIPTION]
3954The restart best solution search engine has been removed (it is
3955subsumed by the new restart-based meta search engine RBS).
3956
3957
3958[ENTRY]
3959Module: minimodel
3960What: new
3961Rank: minor
3962[DESCRIPTION]
3963Added pow and nroot expressions for integer variables.
3964
3965[ENTRY]
3966Module: int
3967What: new
3968Rank: major
3969[DESCRIPTION]
3970Added pow and nroot constraints.
3971
3972[ENTRY]
3973Module: int
3974What: bug
3975Rank: minor
3976[DESCRIPTION]
3977Fixed potential rounding issues in sqr and sqrt constraints.
3978
3979[ENTRY]
3980Module: search
3981What: performance
3982Rank: minor
3983[DESCRIPTION]
3984The search engines now do not allocate memory on the search stack for
3985the rightmost branch of each node. This means that the search tree
3986depth is now computed differently. It now represents the actual peak
3987depth required at any one time, taking into account that rightmost
3988branches reuse the stack entry of their parents.
3989
3990[ENTRY]
3991Module: int
3992What: bug
3993Rank: major
3994Thanks: Manuel Baclet
3995[DESCRIPTION]
3996Fixed copying of tuple sets in extensional constraints and IntSets in
3997sequence constraints (could lead to crashes when using parallel search).
3998
3999[ENTRY]
4000Module: support
4001What: bug
4002Rank: minor
4003Thanks: Max Ostrowski
4004[DESCRIPTION]
4005Fixed a bug in the allocation of very large bitsets.
4006
4007[ENTRY]
4008Module: kernel
4009What: performance
4010Rank: major
4011Thanks: Zandra Norman
4012[DESCRIPTION]
4013Fixed a bug in the main memory allocation routine: now heap block
4014sizes are decreased dynamically as they should be. Also changed
4015the memory configuration parameters as explained in: Zandra
4016Norman, Memory Management for Gecode. KTH Royal Institute of
4017Technology, Sweden, Bachelor thesis, TRITA-ICT-EX-2012:143, 2012.
4018
4019[ENTRY]
4020Module: driver
4021What: new
4022Rank: minor
4023Thanks: Andrea Pretto
4024[DESCRIPTION]
4025Added options -file-sol and -file-stat for writing solutions and
4026statistics to arbitrary files and streams.
4027
4028[ENTRY]
4029Module: flatzinc
4030What: bug
4031Rank: minor
4032Thanks: Jean-Noël Monette
4033[DESCRIPTION]
4034Exported registry and helper functions so that users can add
4035constraint handlers to the FlatZinc interpreter.
4036
4037[ENTRY]
4038Module: gist
4039What: new
4040Rank: minor
4041[DESCRIPTION]
4042Added option to invoke move cursors during the automatic search.
4043
4044[ENTRY]
4045Module: int
4046What: change
4047Rank: minor
4048[DESCRIPTION]
4049Respect IntConLevel argument for reified linear constraints with a
4050single integer variable.
4051
4052[ENTRY]
4053Module: int
4054What: bug
4055Rank: minor
4056Thanks: Jean-Noël Monette
4057[DESCRIPTION]
4058Added missing propagation for nary min/max constraint.
4059
4060[ENTRY]
4061Module: flatzinc
4062What: new
4063Rank: minor
4064[DESCRIPTION]
4065Added native support for lex_less_bool and lex_lesseq_bool.
4066
4067[ENTRY]
4068Module: int
4069What: bug
4070Rank: minor
4071Thanks: Peter Nightingale
4072[DESCRIPTION]
4073Make extensional constraints work with empty tuple sets.
4074
4075[ENTRY]
4076Module: int
4077What: bug
4078Rank: minor
4079Thanks: Peter Nightingale
4080[DESCRIPTION]
4081Fix count (global cardinality constraint) for multiple occurrences
4082of the same value in the cover array.
4083
4084[ENTRY]
4085Module: flatzinc
4086What: new
4087Rank: major
4088[DESCRIPTION]
4089Gecode/FlatZinc now supports float constraints and variables.
4090
4091[ENTRY]
4092Module: kernel
4093What: new
4094Rank: minor
4095[DESCRIPTION]
4096All ArgArrays now accept STL vectors and input iterators for construction.
4097
4098[ENTRY]
4099Module: flatzinc
4100What: new
4101Rank: major
4102Thanks: Gabriel Hjort Blindell
4103[DESCRIPTION]
4104The FlatZinc interpreter now supports comparing of nodes in Gist.
4105
4106[ENTRY]
4107Module: flatzinc
4108What: change
4109Rank: major
4110[DESCRIPTION]
4111The FlatZinc interpreter no longer performs a complete search on variables
4112annotated as var_is_introduced, but tries to extend a solution on the model
4113variables to a solution that includes the introduced variables. Each solution
4114on the model variables is therefore only reported once.
4115
4116[ENTRY]
4117Module: float
4118What: new
4119Rank: major
4120Author: Vincent Barichard
4121[DESCRIPTION]
4122Added support for float variables.
4123
4124[ENTRY]
4125Module: int
4126What: new
4127Rank: minor
4128Thanks: Kathrin Dannmann, Roberto Castañeda Lozano
4129[DESCRIPTION]
4130The binpacking constraint now also accepts items of size zero.
4131
4132[ENTRY]
4133Module: int
4134What: new
4135Rank: major
4136[DESCRIPTION]
4137Added activity-based branching strategies for integer and Boolean
4138variables: INT_VAR_ACTIVITY_MIN, INT_VAR_ACTIVITY_MAX,
4139INT_VAR_ACTIVITY_SIZE_MIN, INT_VAR_ACTIVITY_SIZE_MAX. For
4140details, see "Modeling and Programming with Gecode".
4141
4142[ENTRY]
4143Module: set
4144What: new
4145Rank: major
4146[DESCRIPTION]
4147Added activity-based branching strategies for set variables:
4148SET_VAR_ACTIVITY_MIN, SET_VAR_ACTIVITY_MAX,
4149SET_VAR_ACTIVITY_SIZE_MIN, SET_VAR_ACTIVITY_SIZE_MAX. For
4150details, see "Modeling and Programming with Gecode".
4151
4152[ENTRY]
4153Module: kernel
4154What: new
4155Rank: major
4156[DESCRIPTION]
4157The kernel now can record the activity of variables. The activity
4158of a variable is defined as how often the domain of a variable
4159has been pruned during search. For details, see "Modeling and
4160Programming with Gecode".
4161
4162[ENTRY]
4163Module: example
4164What: new
4165Rank: minor
4166[DESCRIPTION]
4167New example: Colored matrix without monochromatic rectangles.
4168
4169[ENTRY]
4170Module: driver
4171What: new
4172Rank: minor
4173Thanks: Josef Eisl
4174[DESCRIPTION]
4175The command line -print-last configures whether only the last
4176solution found is printed.
4177
4178[ENTRY]
4179Module: driver
4180What: change
4181Rank: minor
4182[DESCRIPTION]
4183Boolean options (BoolOption) can now be given a false or true argument
4184and hence are in-line with all other option types.
4185
4186[ENTRY]
4187Module: kernel
4188What: change
4189Rank: minor
4190[DESCRIPTION]
4191Throw exception when the user-defined copy constructor of a class
4192that inherits from Space does not call the Space copy constructor.
4193
4194[ENTRY]
4195Module: set
4196What: new
4197Rank: major
4198Author: Denys Duchier
4199[DESCRIPTION]
4200Added channeling constraint between arrays of set variables.
4201
4202[ENTRY]
4203Module: flatzinc
4204What: new
4205Rank: minor
4206[DESCRIPTION]
4207Added native support for the inverse_set constraint.
4208
4209[ENTRY]
4210Module: minimodel
4211What: change
4212Rank: minor
4213[DESCRIPTION]
4214Made implementations of MiniModel expressions private, so that the
4215MiniModel headers do not have to include propagator headers like
4216gecode/int/linear.hh any longer.
4217
4218
4219[RELEASE]
4220Version: 3.7.3
4221Date: 2012-03-23
4222[DESCRIPTION]
4223This release fixes some small bugs in the FlatZinc interpreter and library.
4224
4225[ENTRY]
4226Module: flatzinc
4227What: bug
4228Rank: minor
4229Thanks: Marco Correia
4230[DESCRIPTION]
4231Fixed "largest" variable selection strategy for set variables.
4232
4233[ENTRY]
4234Module: flatzinc
4235What: change
4236Rank: minor
4237[DESCRIPTION]
4238Removed the print command line option. Instead, for optimization problems,
4239using -a will print all solutions, while not using -a will only print the
4240last one. This is consistent with the G12 FlatZinc command line interface.
4241
4242[ENTRY]
4243Module: flatzinc
4244What: bug
4245Rank: minor
4246Thanks: Thibaut Feydy
4247[DESCRIPTION]
4248Fixed the parser for set literals.
4249
4250[ENTRY]
4251Module: flatzinc
4252What: new
4253Rank: minor
4254[DESCRIPTION]
4255Added mzn-gecode scripts for conveniently solving MiniZinc models
4256using the Gecode FlatZinc interpreter.
4257
4258[ENTRY]
4259Module: flatzinc
4260What: bug
4261Rank: minor
4262[DESCRIPTION]
4263Integer variables with empty domains result in unsatisfiable models
4264instead of an error message.
4265
4266[ENTRY]
4267Module: flatzinc
4268What: bug
4269Rank: minor
4270[DESCRIPTION]
4271Support 0-length array declarations.
4272
4273[RELEASE]
4274Version: 3.7.2
4275Date: 2012-02-27
4276[DESCRIPTION]
4277This release fixes several small bugs.
4278
4279[ENTRY]
4280Module: flatzinc
4281What: bug
4282Rank: minor
4283[DESCRIPTION]
4284Export RTTI symbols for the FlatZinc AST so that it can be used
4285by client code.
4286
4287[ENTRY]
4288Module: other
4289What: new
4290Rank: minor
4291Thanks: Adam Russell
4292[DESCRIPTION]
4293Gecode now compiles on NetBSD.
4294
4295[ENTRY]
4296Module: int
4297What: change
4298Rank: minor
4299[DESCRIPTION]
4300Throw exception of type OutOfLimits instead of Exception when
4301numerical arguments to sequence constraint are out of range.
4302
4303[ENTRY]
4304Module: int
4305What: bug
4306Rank: minor
4307Thanks: Joseph Scott
4308[DESCRIPTION]
4309Added missing pruning to cumulative edge finding propagator.
4310
4311[ENTRY]
4312Module: driver
4313What: bug
4314Rank: minor
4315Thanks: Serge Le Huitouze
4316[DESCRIPTION]
4317Fixed rounding for printing the runtime (for example,
43181:60:56.157 could be printed...).
4319
4320[ENTRY]
4321Module: set
4322What: bug
4323Rank: major
4324Thanks: Denys Duchier
4325[DESCRIPTION]
4326The element constraint with SOT_UNION and IntSetArgs reported
4327subsumption too early, resulting in incorrect propagation.
4328
4329[ENTRY]
4330Module: minimodel
4331What: bug
4332Rank: minor
4333[DESCRIPTION]
4334The BoolExpr default constructor did not properly initialize
4335its members, causing crashes.
4336
4337[ENTRY]
4338Module: int
4339What: performance
4340Rank: minor
4341[DESCRIPTION]
4342Posting a reified dom constraint on IntVars with an assigned control
4343variable does not create propagators any more, but updates the
4344domain immediately.
4345
4346[ENTRY]
4347Module: flatzinc
4348What: bug
4349Rank: minor
4350Thanks: Nicholas Tung
4351[DESCRIPTION]
4352Do not crash when encountering undefined identifier as constraint argument.
4353
4354[ENTRY]
4355Module: int
4356What: bug
4357Rank: minor
4358Thanks: Kish Shen
4359[DESCRIPTION]
4360Fixed sorted constraint to accept zero-length arrays.
4361
4362[ENTRY]
4363Module: int
4364What: bug
4365Rank: minor
4366Thanks: Kish Shen
4367[DESCRIPTION]
4368Added some missing propagation when posting a channel constraint
4369between an array of Boolean variables and an integer variable.
4370
4371[ENTRY]
4372Module: other
4373What: new
4374Rank: minor
4375Thanks: Denys Duchier
4376[DESCRIPTION]
4377Added a macro GECODE_VERSION_NUMBER that is defined as
4378x*1000000+y*100+z for Gecode version x.y.z.
4379
4380[ENTRY]
4381Module: driver
4382What: bug
4383Rank: minor
4384Thanks: Jan Kelbel
4385[DESCRIPTION]
4386Fixed time output for times with zero minutes but nonzero hours.
4387
4388[ENTRY]
4389Module: kernel
4390What: new
4391Rank: minor
4392[DESCRIPTION]
4393Added Archive operators for floats and doubles.
4394
4395[RELEASE]
4396Version: 3.7.1
4397Date: 2011-10-10
4398[DESCRIPTION]
4399This release fixes several bugs, upgrades to MiniZinc version
44001.4, and features some minor improvements.
4401
4402[ENTRY]
4403Module: int
4404What: change
4405Rank: minor
4406[DESCRIPTION]
4407The semantics of n-ary Boolean implication has been changed (to
4408the more convential reading): rel(home, BOT_IMP, x, y) where x is
4409an array of Boolean variable now assumes implication to be right
4410associative. See MPG for explanation.
4411
4412[ENTRY]
4413Module: int
4414What: new
4415Rank: minor
4416[DESCRIPTION]
4417Added efficient propagators for n-ary Boolean xor and equivalence
4418(as they are now primitive in MiniZinc).
4419
4420[ENTRY]
4421Module: flatzinc
4422What: change
4423Rank: minor
4424[DESCRIPTION]
4425The FlatZinc interpreter is now compatible with the G12 MiniZinc
4426distribution 1.4. This adds support for var and par identifiers that
4427begin with underscores, the array_bool_xor primitive, as well as the
4428command line option -r for specifying a random seed.
4429
4430[ENTRY]
4431Module: int
4432What: new
4433Rank: minor
4434Thanks: Kish Shen
4435[DESCRIPTION]
4436Domain consistency for simple counting constraints can be
4437switched off.
4438
4439[ENTRY]
4440Module: flatzinc
4441What: bug
4442Rank: major
4443Thanks: Håkan Kjellerstrand
4444[DESCRIPTION]
4445Fixed linear inequations over integer variables that are channeled
4446from Boolean variables.
4447
4448[ENTRY]
4449Module: support
4450What: bug
4451Rank: minor
4452[DESCRIPTION]
4453Compile again if threads are disabled.
4454
4455[ENTRY]
4456Module: int
4457What: performance
4458Rank: minor
4459[DESCRIPTION]
4460Domain consistent distinct runs 10-20% faster.
4461
4462[ENTRY]
4463Module: set
4464What: bug
4465Rank: major
4466[DESCRIPTION]
4467Do not use SharedArray<IntSet> in the set element constraints,
4468because it does not properly udpate the IntSet during copying.
4469This could cause memory corruption.
4470
4471[ENTRY]
4472Module: int
4473What: bug
4474Rank: major
4475[DESCRIPTION]
4476Fixed bugs in the computation of the required precision
4477(int or double) for linear propagation, and in division
4478operations of scale views. These could cause an incorrect
4479treatment of overflow in linear constraints.
4480
4481[ENTRY]
4482Module: search
4483What: bug
4484Rank: minor
4485[DESCRIPTION]
4486Fixed a bug that crashed the single-thread branch-and-bound
4487search engine when initialized with a failed space.
4488
4489[ENTRY]
4490Module: gist
4491What: bug
4492Rank: minor
4493[DESCRIPTION]
4494Fixed a crash that occurred when double-clicking an unexplored
4495node while move inspectors were active.
4496
4497
4498[RELEASE]
4499Version: 3.7.0
4500Date: 2011-08-31
4501[DESCRIPTION]
4502This release adds and improves quite a number of constraints
4503(total lexicographic order for set variables, membership
4504constraints for integer variables, counting constraints for
4505integer variables using integer sets, range, roots, set element
4506constraints for integer variables, number of values for integer
4507variables). All of these constraints (and some more) are now also
4508available in FlatZinc. Additionally, some fixes and improvements.
4509
4510This release is an important milestone as %Gecode now provides
4511native implementations for all important constraints available
4512in MiniZinc/FlatZinc.
4513
4514The documentation of constraints in "Modeling and Programming
4515with Gecode" now refers to the Global Constraint Catalog (for
4516those constraints that are listed in the catalog).
4517
4518[ENTRY]
4519Module: gist
4520What: bug
4521Rank: minor
4522[DESCRIPTION]
4523Call solution inspectors also when exploring manually.
4524
4525[ENTRY]
4526Module: gist
4527What: bug
4528Rank: minor
4529[DESCRIPTION]
4530Flush output to Gist console, so that output that is not ended by a
4531newline is not lost.
4532
4533[ENTRY]
4534Module: flatzinc
4535What: bug
4536Rank: major
4537[DESCRIPTION]
4538Added missing primitives set_le, set_lt, set_ge, and set_gt.
4539
4540[ENTRY]
4541Module: set
4542What: new
4543Rank: major
4544[DESCRIPTION]
4545Added set relations SRT_LQ, SRT_LE, SRT_GQ, SRT_GR for total
4546(lexicographic) order.
4547
4548[ENTRY]
4549Module: other
4550What: bug
4551Rank: minor
4552Thanks: Gustavo Gutierrez
4553[DESCRIPTION]
4554Install generated variable implementation headers instead of the shipped
4555versions (fixes a problem when building Gecode in a separate directory).
4556
4557[ENTRY]
4558Module: int
4559What: new
4560Rank: major
4561[DESCRIPTION]
4562Added normal and reified membership constraints for integer and
4563Boolean variables.
4564
4565[ENTRY]
4566Module: minimodel
4567What: new
4568Rank: minor
4569[DESCRIPTION]
4570Added a convenience function values that restricts the set of values
4571taken by an array of integer variables to a fixed set, using the nvalues
4572constraint. The channel constraints between IntVarArgs and a SetVar now
4573also use nvalues to increase propagation.
4574
4575[ENTRY]
4576Module: int
4577What: bug
4578Rank: minor
4579[DESCRIPTION]
4580Added some additional propagation for the count constraints (now,
4581for example, count(home, x, y, IRT_GQ, 1) also constrains y to
4582only take values supported by x).
4583
4584[ENTRY]
4585Module: int
4586What: new
4587Rank: major
4588[DESCRIPTION]
4589The count constraints now also support comparison to integer sets
4590in addition to integers and integer variables (which then implements among
4591from the GCCAT).
4592
4593[ENTRY]
4594Module: minimodel
4595What: new
4596Rank: minor
4597[DESCRIPTION]
4598Added range and roots, which decompose into set element constraints.
4599
4600[ENTRY]
4601Module: flatzinc
4602What: new
4603Rank: major
4604[DESCRIPTION]
4605Added native support for among, nvalues, int_set_channel,
4606member_bool, member_int, sum_pred, and the range and roots
4607constraints.
4608
4609[ENTRY]
4610Module: set
4611What: new
4612Rank: minor
4613[DESCRIPTION]
4614Added set element constraints with singleton integer variables
4615as arguments.
4616
4617[ENTRY]
4618Module: set
4619What: bug
4620Rank: minor
4621Thanks: Johannes Inführ
4622[DESCRIPTION]
4623Fixed a memory leak in the set weights constraint, and use
4624IntSharedArray instead of IntArgs as parameters for weights.
4625
4626[ENTRY]
4627Module: kernel
4628What: bug
4629Rank: minor
4630Thanks: Max Ostrowski
4631[DESCRIPTION]
4632Array slices can now be created from empty arrays.
4633
4634[ENTRY]
4635Module: int
4636What: new
4637Rank: major
4638[DESCRIPTION]
4639Added nvalues constraint.
4640
4641[ENTRY]
4642Module: example
4643What: new
4644Rank: minor
4645[DESCRIPTION]
4646Added Dominating %Queens puzzle.
4647
4648[ENTRY]
4649Module: kernel
4650What: new
4651Rank: minor
4652[DESCRIPTION]
4653View arrays can now also use region-allocated memory.
4654
4655[ENTRY]
4656Module: int
4657What: bug
4658Rank: major
4659[DESCRIPTION]
4660The estimation of bounds on linear terms did not handle overflow
4661correctly.
4662
4663[ENTRY]
4664Module: iter
4665What: change
4666Rank: minor
4667[DESCRIPTION]
4668Cached iterators such as n-ary union and intersection, minus, and
4669cache (of course) are not any longer template classes but take
4670template constructors and member functions. N-ary union and
4671intersection iterators can now also be initialized incrementaly
4672with iterators of different types.
4673
4674[ENTRY]
4675Module: flatzinc
4676What: change
4677Rank: minor
4678[DESCRIPTION]
4679The set_in and set_in_reif constraints now work for constant sets
4680even when %Gecode is compiled without support for set variables.
4681
4682
4683[RELEASE]
4684Version: 3.6.0
4685Date: 2011-07-15
4686[DESCRIPTION]
4687This release adds new constraints (value precedence constraints
4688for integer and set variables, no-overlap constraints for
4689rectangles, constraints for Hamiltonian paths), improves and
4690cleans up a number of existing constraints (scheduling,
4691channeling, relation, bin-packing, lexicographic relations), and
4692adds new functionality (support for externalization of choices
4693for distributed search, support for incremental propagation).
4694
4695Some models might have to be changed as the graph and scheduling
4696modules have been incorporated into the integer module (removing
4697the respective include directives is sufficient).
4698
4699On top, there are many small fixes, in particular for FlatZinc.
4700
4701[ENTRY]
4702Module: int
4703What: change
4704Rank: minor
4705[DESCRIPTION]
4706The cumulatives constraint now does not post the s+p=e constraints,
4707harmonizing its semantics with the cumulative and unary constraints.
4708
4709[ENTRY]
4710Module: int
4711What: new
4712Rank: minor
4713[DESCRIPTION]
4714The cumulative constraints now support an IntVar as the capacity
4715argument.
4716
4717[ENTRY]
4718Module: example
4719What: new
4720Rank: minor
4721[DESCRIPTION]
4722Added Schur's Lemma puzzle.
4723
4724[ENTRY]
4725Module: int
4726What: performance
4727Rank: minor
4728[DESCRIPTION]
4729Optimized channeling propagator between an array of Boolean
4730variables and an integer variables.
4731
4732[ENTRY]
4733Module: int
4734What: change
4735Rank: major
4736[DESCRIPTION]
4737Changed semantics of rel(home, x, IRT_NQ), enforces that not all
4738variables in x are equal. See "Modeling and Programming with
4739Gecode" for details.
4740
4741[ENTRY]
4742Module: flatzinc
4743What: new
4744Rank: major
4745[DESCRIPTION]
4746Added native support for the precedence constraint.
4747
4748[ENTRY]
4749Module: set
4750What: new
4751Rank: major
4752Author: Christopher Mears
4753[DESCRIPTION]
4754Added value precedence constraint.
4755
4756[ENTRY]
4757Module: int
4758What: new
4759Rank: major
4760Author: Christopher Mears
4761[DESCRIPTION]
4762Added value precedence constraint.
4763
4764[ENTRY]
4765Module: int
4766What: performance
4767Rank: minor
4768[DESCRIPTION]
4769The disequality constraint between variable arrays has an efficient
4770propagator now.
4771
4772[ENTRY]
4773Module: int
4774What: performance
4775Rank: major
4776[DESCRIPTION]
4777The ordering constraints rel(home, x, IRT_LE) (also for IRT_LQ,
4778IRT_GR, IRT_GQ) now have an optimal implementation (single
4779incremental propagator).
4780
4781[ENTRY]
4782Module: driver
4783What: bug
4784Rank: minor
4785Thanks: Jan Kelbel
4786[DESCRIPTION]
4787Fixed a small memory leak in the driver (stop objects were not deleted).
4788
4789[ENTRY]
4790Module: int
4791What: performance
4792Rank: major
4793[DESCRIPTION]
4794Increased performance of bin-packing propagator by 40 to 300
4795percent by using staging.
4796
4797[ENTRY]
4798Module: flatzinc
4799What: new
4800Rank: major
4801[DESCRIPTION]
4802Added native support for the no-overlap constraint (called diffn in
4803MiniZinc/FlatZinc).
4804
4805[ENTRY]
4806Module: int
4807What: new
4808Rank: major
4809[DESCRIPTION]
4810Added no-overlap constraint that enforces that rectangles do not
4811overlap (also known as diffn). See "Modeling and Programming with
4812Gecode" for details.
4813
4814[ENTRY]
4815Module: int
4816What: new
4817Rank: major
4818[DESCRIPTION]
4819Added constraints for Hamiltonian paths (called
4820path). See "Modeling and Programming with Gecode" for details.
4821
4822[ENTRY]
4823Module: flatzinc
4824What: new
4825Rank: minor
4826Thanks: Håkan Kjellerstrand
4827[DESCRIPTION]
4828Support indomain_middle and indomain_interval search annotation by
4829replacing them with indomain_median and indomain_split, respectively.
4830
4831[ENTRY]
4832Module: gist
4833What: change
4834Rank: minor
4835[DESCRIPTION]
4836Zoom-to-fit can now be selected during search.
4837
4838[ENTRY]
4839Module: graph
4840What: change
4841Rank: major
4842[DESCRIPTION]
4843The graph module has been removed and its constraints have been
4844added to the integer module.
4845
4846[ENTRY]
4847Module: scheduling
4848What: change
4849Rank: major
4850[DESCRIPTION]
4851The scheduling module has been removed and its constraints have been
4852added to the integer module.
4853
4854[ENTRY]
4855Module: int
4856What: bug
4857Rank: minor
4858[DESCRIPTION]
4859Fixed element and sequence propagators, which were only
4860correct by accident (incorrect use of GECODE_ME_CHECK instead of
4861GECODE_ES_CHECK).
4862
4863[ENTRY]
4864Module: set
4865What: bug
4866Rank: minor
4867[DESCRIPTION]
4868Fixed sequence, partition, and union propagators, which were only
4869correct by accident (incorrect use of GECODE_ME_CHECK instead of
4870GECODE_ES_CHECK).
4871
4872[ENTRY]
4873Module: scheduling
4874What: bug
4875Rank: minor
4876[DESCRIPTION]
4877Fixed scheduling code for mandatory flexible tasks, which was only
4878correct by accident (incorrect use of GECODE_ME_CHECK instead of
4879GECODE_ES_CHECK).
4880
4881[ENTRY]
4882Module: flatzinc
4883What: new
4884Rank: minor
4885[DESCRIPTION]
4886Added native support for link_set_to_booleans,
4887global_cardinality_low_up_closed, and decreasing_bool.
4888
4889[ENTRY]
4890Module: int
4891What: new
4892Rank: minor
4893Thanks: Kish Shen
4894[DESCRIPTION]
4895Generalized lexicographic constraint to arrays of different sizes.
4896
4897[ENTRY]
4898Module: search
4899What: bug
4900Rank: minor
4901[DESCRIPTION]
4902Fixed memory leak when passing a failed space to a search engine with cloning
4903option set to false.
4904
4905[ENTRY]
4906Module: kernel
4907What: new
4908Rank: minor
4909[DESCRIPTION]
4910Moved RangeList class, which is a list of ranges implemented as a FreeList,
4911from the set module into the kernel. Also added corresponding
4912Iter::Ranges::RangeList iterator.
4913
4914[ENTRY]
4915Module: int
4916What: new
4917Rank: major
4918[DESCRIPTION]
4919Added a CachedView that can cache the domain between propagator invocations
4920and provides an efficient test whether a view has changed since the previous
4921invocation as well as an iterator over the removed domain values. This makes
4922it easier to implement incremental propagation algorithms that need exact
4923delta information.
4924
4925[ENTRY]
4926Module: set
4927What: new
4928Rank: major
4929[DESCRIPTION]
4930Added a CachedView that can cache the domain between propagator invocations
4931and provides an efficient test whether a view has changed since the previous
4932invocation as well as an iterator over the removed domain values. This makes
4933it easier to implement incremental propagation algorithms that need exact
4934delta information.
4935
4936[ENTRY]
4937Module: set
4938What: performance
4939Rank: minor
4940[DESCRIPTION]
4941Use new cached views for a more efficient implementation of the channel constraint between IntVarArgs and SetVarArgs.
4942
4943[ENTRY]
4944Module: gist
4945What: bug
4946Rank: minor
4947[DESCRIPTION]
4948Changed keyboard shortcuts in Gist so that they work on all platforms: "Inspect"
4949is now Ctrl+number of inspector, for "Inspect before fixpoint" press Alt in
4950addition (on Mac OS, use the Command key instead of Ctrl).
4951
4952[ENTRY]
4953Module: other
4954What: bug
4955Rank: minor
4956Thanks: Martin Mann
4957[DESCRIPTION]
4958Fixed Makefile, now installation works when FlatZinc library is disabled.
4959
4960[ENTRY]
4961Module: other
4962What: new
4963Rank: minor
4964Thanks: Ruben Zilibowitz
4965[DESCRIPTION]
4966Added configure option --enable-small-codesize that results in
4967slightly less efficient but more compact code being generated for
4968non-debug builds.
4969
4970[ENTRY]
4971Module: set
4972What: bug
4973Rank: minor
4974[DESCRIPTION]
4975The constructors for set variable arrays and argument arrays threw incorrect
4976VariableEmptyDomain exceptions.
4977
4978[ENTRY]
4979Module: graph
4980What: new
4981Rank: minor
4982[DESCRIPTION]
4983Added circuit constraints with offsets.
4984
4985[ENTRY]
4986Module: int
4987What: performance
4988Rank: minor
4989[DESCRIPTION]
4990The channel constraints between two integer arrays are now more
4991memory efficient when offsets are used.
4992
4993[ENTRY]
4994Module: kernel
4995What: change
4996Rank: major
4997[DESCRIPTION]
4998Choices can now be written into an externalized form (called an Archive),
4999and reconstructed from it. This is necessary for serializing paths in
5000a distributed search engine.
5001
5002[ENTRY]
5003Module: flatzinc
5004What: change
5005Rank: minor
5006[DESCRIPTION]
5007Adapted the MiniZinc declarations and the command line options for
5008Gecode/FlatZinc to MiniZinc 1.3. The fz binary now works with the
5009minizinc driver script.
5010
5011[ENTRY]
5012Module: flatzinc
5013What: bug
5014Rank: minor
5015Thanks: Håkan Kjellerstrand
5016[DESCRIPTION]
5017Re-enabled the global cardinality constraint in the FlatZinc interpreter.
5018
5019[ENTRY]
5020Module: flatzinc
5021What: bug
5022Rank: minor
5023Thanks: Håkan Kjellerstrand
5024[DESCRIPTION]
5025Fixed the MiniZinc definition for the circuit constraints to work with
5026arbitrarily indexed arrays.
5027
5028[ENTRY]
5029Module: gist
5030What: change
5031Rank: minor
5032Thanks: Alin Gherman
5033[DESCRIPTION]
5034Compiles under MSVC 2005 SP1 again.
5035
5036[ENTRY]
5037Module: set
5038What: new
5039Rank: minor
5040Thanks: Marco Correia
5041[DESCRIPTION]
5042Added channel aliases for set union of an array of integer variables,
5043and renamed channel to channelSorted.
5044
5045[ENTRY]
5046Module: set
5047What: documentation
5048Rank: minor
5049Thanks: Marco Correia
5050[DESCRIPTION]
5051Fixed documentation for set channeling constraint.
5052
5053
5054[RELEASE]
5055Version: 3.5.0
5056Date: 2011-02-01
5057[DESCRIPTION]
5058This release fixes serious bugs in parallel search, FlatZinc,
5059fixes some DLL issues on Windows, adds support for FreeBSD, and
5060adds STL-style iterators for arrays.
5061
5062[ENTRY]
5063Module: search
5064What: bug
5065Rank: major
5066Thanks: Denys Duchier, Chris Mears
5067[DESCRIPTION]
5068Fixed a serious bug in parallel search (took over a year to
5069isolate the bug).
5070
5071[ENTRY]
5072Module: other
5073What: new
5074Rank: minor
5075Thanks: Peter Penchev
5076[DESCRIPTION]
5077Gecode now compiles on FreeBSD.
5078
5079[ENTRY]
5080Module: kernel
5081What: new
5082Rank: major
5083Author: Gregory Crosswhite
5084[DESCRIPTION]
5085Added STL compatible iteration support for arrays (variable
5086arrays, argument arrays, view arrays, and shared arrays).
5087
5088[ENTRY]
5089Module: minimodel
5090What: bug
5091Rank: minor
5092Thanks: Alexander Kleff
5093[DESCRIPTION]
5094Do not inline construction of linear, Boolean, and set
5095expressions to avoid cross-DLL allocation/deallocation issues on
5096Windows.
5097
5098[ENTRY]
5099Module: other
5100What: new
5101Rank: major
5102[DESCRIPTION]
5103Embed resource information into Gecode DLLs and EXEs on Windows.
5104
5105[ENTRY]
5106Module: flatzinc
5107What: bug
5108Rank: major
5109Thanks: Roberto Castañeda Lozano
5110[DESCRIPTION]
5111Fixed incorrect posting of linear constraints with variable arrays
5112of size one.
5113
5114[ENTRY]
5115Module: other
5116What: change
5117Rank: minor
5118[DESCRIPTION]
5119Embed manifest into Gecode DLLs on Windows.
5120
5121[ENTRY]
5122Module: flatzinc
5123What: change
5124Rank: major
5125[DESCRIPTION]
5126Fixed the definitions of global_cardinality to work with MiniZinc 1.2 and
5127newer, and added corresponding definitions of global_cardinality_closed and
5128global_cardinality_low_up_closed.
5129
5130
5131[RELEASE]
5132Version: 3.4.2
5133Date: 2010-10-09
5134[DESCRIPTION]
5135This release removes LDS from Gecode as it is patented in the US.
5136
5137[ENTRY]
5138Module: search
5139What: removed
5140Rank: minor
5141[DESCRIPTION]
5142Removed limited discrepancy search (LDS) as it is patented in the US.
5143
5144[ENTRY]
5145Module: flatzinc
5146What: new
5147Rank: minor
5148[DESCRIPTION]
5149Added support for binpacking constraint.
5150
5151[RELEASE]
5152Version: 3.4.1
5153Date: 2010-10-08
5154[DESCRIPTION]
5155This release adds a new global constraint for binpacking (with
5156extended example) and filter functions for branchers. The
5157reference documentation has been cleaned up. In particular,
5158information on how to obtain, install, and link Gecode has been
5159expanded and moved to "Modeling and Programming with Gecode"
5160(Section 2.6). Additionally, the release fixes some bugs and
5161contains some performance improvements.
5162
5163[ENTRY]
5164Module: example
5165What: new
5166Rank: major
5167[DESCRIPTION]
5168Added a binpacking model using the binpacking constraint and CDBF
5169(complete decreasing best fit) search.
5170
5171[ENTRY]
5172Module: int
5173What: new
5174Rank: major
5175[DESCRIPTION]
5176Added a binpacking constraint and propagator.
5177
5178[ENTRY]
5179Module: driver
5180What: new
5181Rank: minor
5182[DESCRIPTION]
5183Added a class InstanceOptions that takes one additional string argument.
5184
5185[ENTRY]
5186Module: flatzinc
5187What: new
5188Rank: minor
5189[DESCRIPTION]
5190Added support for global_cardinality_low_up.
5191
5192[ENTRY]
5193Module: other
5194What: documentation
5195Rank: minor
5196[DESCRIPTION]
5197Removed obsolete Glossary in reference documentation.
5198
5199[ENTRY]
5200Module: int
5201What: bug
5202Rank: minor
5203Thanks: Gustavo A. Gómez Farhat
5204[DESCRIPTION]
5205Do not inline functions with variable arguments.
5206
5207[ENTRY]
5208Module: gist
5209What: change
5210Rank: minor
5211[DESCRIPTION]
5212Only center node on double-click if it was undetermined (otherwise
5213inspecting several nodes becomes slightly annoying).
5214
5215[ENTRY]
5216Module: minimodel
5217What: change
5218Rank: minor
5219[DESCRIPTION]
5220Added element expression for BoolVarArgs.
5221
5222[ENTRY]
5223Module: minimodel
5224What: bug
5225Rank: minor
5226[DESCRIPTION]
5227Fixed memory allocation for non-linear expressions and made the
5228LinExpr constructor explicit for non-linear expressions (previously
5229the automatic cast from integers to LinExpr was sometimes ambiguous).
5230
5231[ENTRY]
5232Module: scheduling
5233What: bug
5234Rank: major
5235Thanks: Roberto Castañeda Lozano
5236[DESCRIPTION]
5237Fixed initialization for unary and cumulative edge-finding (just
5238worked accidentally).
5239
5240[ENTRY]
5241Module: kernel
5242What: change
5243Rank: major
5244Thanks: Felix Brandt
5245[DESCRIPTION]
5246Branching now honors filter functions, where variables are
5247considered for branching only if the filter functions returns
5248true (see "Modeling and Programming with Gecode" for details).
5249
5250[ENTRY]
5251Module: kernel
5252What: change
5253Rank: minor
5254[DESCRIPTION]
5255Variable implementation views are now parametric with respect to
5256variables but not variable implementations (see "Modeling and
5257Programming with Gecode" for details).
5258
5259[ENTRY]
5260Module: kernel
5261What: change
5262Rank: minor
5263[DESCRIPTION]
5264Renamed the template class for variables defined by a variable
5265implementation from Var to VarImpVar and re-added a class Var as
5266base class for any variable type.
5267
5268[ENTRY]
5269Module: int
5270What: bug
5271Rank: minor
5272Thanks: Kish Shen
5273[DESCRIPTION]
5274The reified dom constraint failed instead of setting the BoolVar to 0 when the
5275minimum argument given was greater than the maximum.
5276
5277[ENTRY]
5278Module: int
5279What: performance
5280Rank: minor
5281Thanks: Kish Shen
5282[DESCRIPTION]
5283Fixed sortedness constraint by replacing an algorithm that is linear in the
5284width of the union of all domains with an algorithm that is quadratic in the
5285number of variables. The previous algorithm crashed for domains with large
5286values due to excessive memory use.
5287
5288[ENTRY]
5289Module: int
5290What: performance
5291Rank: minor
5292[DESCRIPTION]
5293Using ICL_DOM for binary linear equations with unit coefficients (such as x =
5294y+3) is now implemented using the much more efficient binary equality
5295propagator instead of the linear equation propagator (which has worst case
5296exponential runtime).
5297
5298[ENTRY]
5299Module: gist
5300What: performance
5301Rank: minor
5302[DESCRIPTION]
5303Saved some memory for each node in Gist (one pointer per node, two integers
5304per inner node, and some additional memory on 64 bit platforms due to optimizing
5305alignment), and speeded up deallocation of the tree (e.g. when resetting or
5306closing Gist).
5307
5308[ENTRY]
5309Module: iter
5310What: performance
5311Rank: minor
5312[DESCRIPTION]
5313Reimplemented n-ary union, minus, and cache iterators for much
5314better efficiency.
5315
5316[ENTRY]
5317Module: flatzinc
5318What: performance
5319Rank: minor
5320[DESCRIPTION]
5321The FlatZinc parser now uses hash maps instead of STL maps, which
5322significantly increases parsing performance for larger files.
5323Furthermore, a single symbol table is used, also increasing
5324performance and allowing to report duplicate symbol errors,
5325which were previously ignored.
5326
5327
5328[RELEASE]
5329Version: 3.4.0
5330Date: 2010-07-26
5331[DESCRIPTION]
5332This release includes: considerably improved support for posting
5333expressions and relations (also including set and full arithmetic
5334expressions); other improvements for modeling (array
5335initialization and element addition to arrays); state-of-the-art
5336unary and cumulative scheduling propagators (including optional
5337and flexible tasks); major cleanups of the variable and view
5338infrastructure (now also documented in MPG); cleanups of the
5339examples; several other fixes and performance improvements.
5340
5341This release is the first to be accompanied by a complete version
5342of "Modeling and Programming in Gecode" which has been extended
5343by many new case studies and parts on programming search engines
5344and variables.
5345
5346[ENTRY]
5347Module: flatzinc
5348What: bug
5349Rank: minor
5350[DESCRIPTION]
5351Boolean relations were incorrect on assigned arguments.
5352
5353[ENTRY]
5354Module: kernel
5355What: bug
5356Rank: minor
5357[DESCRIPTION]
5358Posting a propagator in a failed space could make the space
5359non-failed again.
5360
5361[ENTRY]
5362Module: kernel
5363What: new
5364Rank: minor
5365[DESCRIPTION]
5366Added LocalObject and LocalHandle classes that can be used for
5367space-allocated objects that are shared within a space, for
5368example among several propagators or propagators and branchers.
5369
5370[ENTRY]
5371Module: other
5372What: change
5373Rank: major
5374[DESCRIPTION]
5375Completely cleaned up variables and views, drastically saving code.
5376
5377[ENTRY]
5378Module: other
5379What: removed
5380Rank: minor
5381[DESCRIPTION]
5382Variables do not have init functions any longer as they are not
5383needed, see MPG for discussion.
5384
5385[ENTRY]
5386Module: scheduling
5387What: new
5388Rank: major
5389[DESCRIPTION]
5390Added scheduling constraints for tasks with flexible duration
5391(for both unary and cumulative resources), and made all scheduling
5392propagators deal correctly with zero length tasks.
5393
5394[ENTRY]
5395Module: scheduling
5396What: new
5397Rank: major
5398[DESCRIPTION]
5399Added propagators for cumulative scheduling.
5400
5401[ENTRY]
5402Module: minimodel
5403What: bug
5404Rank: minor
5405Thanks: Håkan Kjellerstrand
5406[DESCRIPTION]
5407Fixed a bug in minimodel, which could crash when using zero
5408coefficients.
5409
5410[ENTRY]
5411Module: driver
5412What: change
5413Rank: minor
5414[DESCRIPTION]
5415The driver now catches SIGINT (i.e., pressing Ctrl-C) and stops
5416the search properly, printing statistics up to the point where
5417it stopped.
5418
5419[ENTRY]
5420Module: gist
5421What: change
5422Rank: minor
5423[DESCRIPTION]
5424If an inspector throws an exception, an error message is
5425printed indicating which inspector caused the problem.
5426Previously, Gist would crash with a Qt error that was difficult
5427to trace.
5428
5429[ENTRY]
5430Module: flatzinc
5431What: bug
5432Rank: minor
5433[DESCRIPTION]
5434Fixed garbage collection of variables that are not printed. The
5435bug lead to variables being mixed up in the output.
5436
5437[ENTRY]
5438Module: example
5439What: removed
5440Rank: minor
5441[DESCRIPTION]
5442Removed stress tests, the real examples are much more stressful,
5443actually!
5444
5445[ENTRY]
5446Module: minimodel
5447What: change
5448Rank: minor
5449[DESCRIPTION]
5450The Matrix class now supports const operations and has an output
5451operator.
5452
5453[ENTRY]
5454Module: minimodel
5455What: change
5456Rank: major
5457[DESCRIPTION]
5458Linear expressions can now contain non-linear parts, such as
5459multiplications or divisions, or set expressions such as
5460cardinality.
5461
5462[ENTRY]
5463Module: minimodel
5464What: change
5465Rank: major
5466[DESCRIPTION]
5467The minimodel post functions have been split into two functions, rel
5468and expr. While rel posts a constraint, expr returns a new variable
5469constrained to the given expression. This change makes it possible to
5470get rid of the reification operator (~) as well as the tt and ff
5471functions, which were previously needed to distinguish between
5472relations and expressions. Boolean equivalence and implication can
5473now be expressed using operators (==,<<,>>).
5474
5475[ENTRY]
5476Module: minimodel
5477What: new
5478Rank: major
5479[DESCRIPTION]
5480The minimodel library now provides convenient post functions
5481for set constraints.
5482
5483[ENTRY]
5484Module: set
5485What: bug
5486Rank: minor
5487[DESCRIPTION]
5488Fixed the include and exclude tell operations of set variables so
5489that they work with empty ranges.
5490
5491[ENTRY]
5492Module: example
5493What: change
5494Rank: minor
5495[DESCRIPTION]
5496The Nonogram example now uses AFC as the default branching and
5497includes some more instances.
5498
5499[ENTRY]
5500Module: example
5501What: new
5502Rank: minor
5503[DESCRIPTION]
5504New custom branching for the BACP example using a custom value selection.
5505
5506[ENTRY]
5507Module: other
5508What: change
5509Rank: minor
5510[DESCRIPTION]
5511The configure script now checks for qmake-qt4 and moc-qt4, which are used on
5512some Linux systems to distinguish between Qt3 and Qt4.
5513
5514[ENTRY]
5515Module: driver
5516What: change
5517Rank: minor
5518[DESCRIPTION]
5519Running a script in time mode stops all iterations and samples
5520immediately if a single run reaches a limit (eases benchmarks
5521with timeouts).
5522
5523[ENTRY]
5524Module: int
5525What: performance
5526Rank: minor
5527[DESCRIPTION]
5528Optimized element propagator, expect a speed up of around 35-50%
5529in most cases.
5530
5531[ENTRY]
5532Module: minimodel
5533What: performance
5534Rank: minor
5535[DESCRIPTION]
5536Posting linear expressions performs more aggressive optimizations
5537for assigned variables.
5538
5539[ENTRY]
5540Module: minimodel
5541What: performance
5542Rank: minor
5543[DESCRIPTION]
5544Arithmetic modeling functions now try to avoid creating new
5545variables and posting propagators for common cases.
5546
5547[ENTRY]
5548Module: set
5549What: change
5550Rank: minor
5551[DESCRIPTION]
5552The argument arrays now have constructors that create new variables.
5553
5554[ENTRY]
5555Module: int
5556What: change
5557Rank: minor
5558[DESCRIPTION]
5559The argument arrays now have constructors that create new variables.
5560
5561[ENTRY]
5562Module: int
5563What: change
5564Rank: minor
5565[DESCRIPTION]
5566IntArgs with simple sequences of values can now be created using the
5567IntArgs::create static member function.
5568
5569[ENTRY]
5570Module: other
5571What: change
5572Rank: minor
5573[DESCRIPTION]
5574The build system now supports Visual C++ 2010.
5575
5576[ENTRY]
5577Module: minimodel
5578What: change
5579Rank: minor
5580[DESCRIPTION]
5581Array slices can now be empty.
5582
5583[ENTRY]
5584Module: kernel
5585What: change
5586Rank: major
5587[DESCRIPTION]
5588The support for dynamically resizing variable arrays has been
5589removed (it was buggy and inefficient). Instead, all argument
5590arrays now support adding elements using operator<<. In addition,
5591all arrays now support concatenation using operator+ and slicing,
5592and variable arrays, view arrays, and variable argument arrays
5593include a test whether all variables are assigned.
5594
5595[ENTRY]
5596Module: example
5597What: change
5598Rank: minor
5599[DESCRIPTION]
5600Take advantage of the better modeling support for the BIBD, Golomb
5601ruler, Kakuro, Black Hole, and Warehouse examples (nothing but dusting off
5602examples that have been around for ages).
5603
5604[ENTRY]
5605Module: int
5606What: new
5607Rank: minor
5608[DESCRIPTION]
5609You can now construct IntArgs from an STL vector, an IntSharedArray,
5610or using simple comprehensions.
5611
5612[ENTRY]
5613Module: gist
5614What: bug
5615Rank: minor
5616[DESCRIPTION]
5617Fixed bug in Gist where signals were sent across threads, which
5618makes Qt crash in certain situations on some platforms.
5619
5620[ENTRY]
5621Module: gist
5622What: bug
5623Rank: minor
5624Thanks: David Zaremby
5625[DESCRIPTION]
5626Fixed bug in interactive search where every move in the tree required
5627recomputation.
5628
5629
5630[RELEASE]
5631Version: 3.3.1
5632Date: 2010-04-09
5633[DESCRIPTION]
5634This release adds many new features to Gist, fixes two major bugs
5635in extensional constraints, and has some more cleanups to comply
5636with the first release of the "Modeling and Programming with
5637Gecode" document. And, as always some small fixes and cleanups.
5638
5639[ENTRY]
5640Module: other
5641What: documentation
5642Rank: minor
5643[DESCRIPTION]
5644Removed many small documentation quirks.
5645
5646[ENTRY]
5647Module: flatzinc
5648What: performance
5649Rank: minor
5650[DESCRIPTION]
5651Variables that do not have output annotations are now garbage
5652collected during copying.
5653
5654[ENTRY]
5655Module: flatzinc
5656What: performance
5657Rank: minor
5658[DESCRIPTION]
5659When using sums of Boolean variables using bool2int in MiniZinc,
5660the FlatZinc interpreter now posts the more efficient propagators
5661that work directly on the Boolean variables.
5662
5663[ENTRY]
5664Module: scheduling
5665What: bug
5666Rank: minor
5667[DESCRIPTION]
5668The unary scheduling propagator with optional tasks missed some
5669propagation sometimes.
5670
5671[ENTRY]
5672Module: int
5673What: bug
5674Rank: major
5675[DESCRIPTION]
5676Fixed extensional constraint with finite automata for very
5677unlikely (but apparantely possible) border case.
5678
5679[ENTRY]
5680Module: gist
5681What: new
5682Rank: major
5683[DESCRIPTION]
5684In addition to inspectors, you can now also register comparators, which can be
5685used to compare two nodes in the tree. In combination with the option to
5686compare before computing a fixpoint of the second node, this lets you see what
5687exactly was modified by a branching.
5688
5689[ENTRY]
5690Module: set
5691What: bug
5692Rank: minor
5693[DESCRIPTION]
5694Fixed channeling between set and integer variables which did not propagate
5695enough.
5696
5697[ENTRY]
5698Module: int
5699What: bug
5700Rank: major
5701[DESCRIPTION]
5702The extensional constraints with tuple sets could cause crashes
5703when used with parallel search.
5704
5705[ENTRY]
5706Module: gist
5707What: bug
5708Rank: minor
5709[DESCRIPTION]
5710Missing export declarations prevented embedding Gist as a widget. There is
5711now example code for embedding Gist in the directory
5712gecode/gist/standalone-example.
5713
5714[ENTRY]
5715Module: gist
5716What: new
5717Rank: major
5718[DESCRIPTION]
5719Gist can now stop exploration after all alternatives of a certain branching
5720are exhausted. This feature can be turned on by posting a special branching
5721using the Gist::stopBranch post function. Gist will then stop whenever that
5722special branching becomes active.
5723
5724[ENTRY]
5725Module: kernel
5726What: bug
5727Rank: minor
5728[DESCRIPTION]
5729Fixed bug in VarArray::resize function that occurred when shrinking
5730variable arrays.
5731
5732[ENTRY]
5733Module: kernel
5734What: change
5735Rank: minor
5736[DESCRIPTION]
5737The (unused and unusable) CopiedHandle have been removed.
5738
5739[ENTRY]
5740Module: scheduling
5741What: change
5742Rank: minor
5743[DESCRIPTION]
5744Tasks in unary scheduling constraints may now have processing times of 0.
5745
5746[ENTRY]
5747Module: gist
5748What: new
5749Rank: minor
5750[DESCRIPTION]
5751Added inspection of nodes before fixpoint computation.
5752
5753[ENTRY]
5754Module: set
5755What: removed
5756Rank: minor
5757[DESCRIPTION]
5758Removed Set::IntSetPropagator and Set::IntSetRePropagator because they are
5759subsumed by the MixBinaryPropagator patterns.
5760
5761[ENTRY]
5762Module: gist
5763What: bug
5764Rank: minor
5765[DESCRIPTION]
5766Fixed a bug where sometimes clicking on a node would select a different node.
5767
5768[ENTRY]
5769Module: gist
5770What: performance
5771Rank: major
5772[DESCRIPTION]
5773Scrolling and zooming have been reimplemented. The new implementation is more
5774efficient and works around problems that occurred with large trees on some
5775platforms. Zooming is now more intuitive, keeping the current center
5776centered. You can now also zoom by pressing shift while using the mouse wheel.
5777
5778[ENTRY]
5779Module: example
5780What: new
5781Rank: minor
5782[DESCRIPTION]
5783Added Gist inspectors for the Knights and Queens examples.
5784
5785[ENTRY]
5786Module: driver
5787What: new
5788Rank: minor
5789[DESCRIPTION]
5790You can now register Gist inspectors in the driver options.
5791
5792[ENTRY]
5793Module: gist
5794What: new
5795Rank: minor
5796[DESCRIPTION]
5797Nodes can now be bookmarked.
5798
5799[ENTRY]
5800Module: gist
5801What: new
5802Rank: minor
5803[DESCRIPTION]
5804Added inspectors that react whenever a node is selected.
5805
5806[ENTRY]
5807Module: flatzinc
5808What: change
5809Rank: minor
5810[DESCRIPTION]
5811Comply with MiniZinc 1.1. String literals are not allowed any longer
5812except in annotations, the solver outputs UNKNOWN and UNSATISFIABLE
5813instead of just ==========, and the global constraints all_equal,
5814decreasing_int, and decreasing_bool are supported.
5815
5816
5817
5818[RELEASE]
5819Version: 3.3.0
5820Date: 2010-03-15
5821[DESCRIPTION]
5822This release provides some fixes, some performance improvements
5823for domain propagators, and quite some clean ups how propagators
5824and advisors report their status to the kernel. Many of these
5825clean ups are essential to make it easier to program propagators
5826and branchers with Gecode.
5827
5828[ENTRY]
5829Module: other
5830What: bug
5831Rank: minor
5832[DESCRIPTION]
5833Configure now prepend options to the CXXFLAGS and CFLAGS variables
5834instead of appending them. That way, defining the variables when
5835invoking configure overrides the choices configure makes (e.g.
5836overriding the default -O3 with -O2).
5837
5838[ENTRY]
5839Module: int
5840What: change
5841Rank: minor
5842[DESCRIPTION]
5843Patterns for reified propagators have been moved to the
5844Gecode::Int namespace.
5845
5846[ENTRY]
5847Module: set
5848What: change
5849Rank: minor
5850[DESCRIPTION]
5851Patterns for set propagators have been moved to the
5852Gecode::Set namespace.
5853
5854[ENTRY]
5855Module: kernel
5856What: bug
5857Rank: minor
5858[DESCRIPTION]
5859ViewValBrancher with random value selection did not produce a
5860random sequence of values.
5861
5862[ENTRY]
5863Module: kernel
5864What: new
5865Rank: minor
5866[DESCRIPTION]
5867Advisors now can force its propagator to be rescheduled,
5868including recomputation of its cost used for scheduling
5869(normally, a propagator is only rescheduled if its modification
5870event delta changes). An advisor can signal forceful rescheduling
5871by returning ES_NOFIX_FORCE or returning the return value of
5872ES_NOFIX_FORCE_DISPOSE. Read the forthcoming "Modeling and
5873Programming with Gecode" for details.
5874
5875[ENTRY]
5876Module: kernel
5877What: change
5878Rank: minor
5879[DESCRIPTION]
5880The failure macros for posting GECODE_ES_FAIL and GECODE_ME_FAIL
5881now only accept a single argument and assume that "home" actually
5882refers to the home space. Read the forthcoming "Modeling and
5883Programming with Gecode" for details.
5884
5885[ENTRY]
5886Module: kernel
5887What: change
5888Rank: minor
5889[DESCRIPTION]
5890The functions ES_FIX_PARTIAL, ES_NOFIX_PARTIAL, ES_FIX_DISPOSE,
5891and ES_NOFIX_DISPOSE are now member of Space. Read the
5892forthcoming "Modeling and Programming with Gecode" for details.
5893
5894[ENTRY]
5895Module: kernel
5896What: change
5897Rank: minor
5898[DESCRIPTION]
5899The function ES_SUBSUMED now is a member of Space and accepts a
5900propagator as its single argument. The variant with a size as the
5901second argument is available as ES_SUBSUMED_DISPOSED but use is
5902highly discouraged. Read the forthcoming "Modeling and
5903Programming with Gecode" for details.
5904
5905[ENTRY]
5906Module: kernel
5907What: change
5908Rank: minor
5909[DESCRIPTION]
5910The functions ES_SUBSUMED_FIX and ES_SUBSUMED_NOFIX for advisors
5911have been renamed to ES_FIX_DISPOSE and ES_NOFIX_DISPOSE. Read
5912the forthcoming "Modeling and Programming with Gecode" for
5913details.
5914
5915[ENTRY]
5916Module: flatzinc
5917What: change
5918Rank: minor
5919[DESCRIPTION]
5920The FlatZinc interpreter can now be extended by plugins that implement
5921custom search strategies. The plugins are implemented as dynamically loaded
5922libraries using the Qt plugin mechanism. An example can be found in the
5923directory gecode/flatzinc/exampleplugin.
5924
5925[ENTRY]
5926Module: flatzinc
5927What: change
5928Rank: minor
5929[DESCRIPTION]
5930The index of the variable used for optimization is now available in the
5931FlatZincSpace class.
5932
5933[ENTRY]
5934Module: flatzinc
5935What: change
5936Rank: minor
5937[DESCRIPTION]
5938Added command line option -print, which controls whether all solutions are
5939printed or only the last one that is found, and -search, to choose between
5940branch-and-bound and restart optimization.
5941
5942[ENTRY]
5943Module: flatzinc
5944What: change
5945Rank: minor
5946[DESCRIPTION]
5947The FlatZinc library can now parse a FlatZinc model into any subclass of
5948FlatZincSpace, so that custom extensions can be built. Annotations on the
5949solve item can now be accessed from the returned FlatZincSpace, so that
5950additional search strategies can be implemented.
5951
5952[ENTRY]
5953Module: flatzinc
5954What: bug
5955Rank: minor
5956[DESCRIPTION]
5957The FlatZinc interpreter ignored the -c-d and -a-d command line
5958switches when used with Gist.
5959
5960[ENTRY]
5961Module: minimodel
5962What: removed
5963Rank: minor
5964[DESCRIPTION]
5965Removed special cases for posting linear and Boolean expressions
5966consisting of a single variable only (was highly ambigious).
5967
5968[ENTRY]
5969Module: minimodel
5970What: new
5971Rank: minor
5972[DESCRIPTION]
5973Linear expressions can freely mix integer and Boolean variables
5974and support construction from variable arrays via a sum function.
5975
5976[ENTRY]
5977Module: support
5978What: performance
5979Rank: major
5980[DESCRIPTION]
5981Changed to single, really efficient bitset implementation used
5982allover the system.
5983
5984[ENTRY]
5985Module: int
5986What: performance
5987Rank: major
5988[DESCRIPTION]
5989Considerably improved performance and memory consumption of the
5990DFA-based extensional constraint (regular).
5991
5992[ENTRY]
5993Module: int
5994What: new
5995Rank: minor
5996[DESCRIPTION]
5997Integer sets (IntSet) now have a in member function for testing
5998whether an integer is included.
5999
6000[ENTRY]
6001Module: gist
6002What: bug
6003Rank: minor
6004[DESCRIPTION]
6005Avoid inter-thread call to QWidget::update, which apparently causes a slight
6006memory leak (and warning messages on stderr) on Mac OS.
6007
6008
6009
6010[RELEASE]
6011Version: 3.2.2
6012Date: 2009-11-30
6013[DESCRIPTION]
6014This release adds the sequence constraint (contributed by David
6015Rijsman, Quintiq) and has as always some small additions and
6016fixes.
6017
6018[ENTRY]
6019Module: int
6020What: bug
6021Rank: minor
6022Thanks: Alberto Delgado
6023[DESCRIPTION]
6024The global cardinality (count) constraint now accepts unsorted
6025arrays of values. It previously propagated incorrectly if the
6026array was not sorted.
6027
6028[ENTRY]
6029Module: int
6030What: bug
6031Rank: minor
6032[DESCRIPTION]
6033Fixed bug in the ICL_VAL propagator for global cardinality.
6034
6035[ENTRY]
6036Module: flatzinc
6037What: bug
6038Rank: minor
6039Thanks: Håkan Kjellerstrand
6040[DESCRIPTION]
6041Support search annotations with constants in the variable arrays.
6042
6043[ENTRY]
6044Module: search
6045What: bug
6046Rank: minor
6047[DESCRIPTION]
6048The memory reported could be sometimes too low (the previous fix
6049for 3.2.0 did not fix it for branch and bound search).
6050
6051[ENTRY]
6052Module: kernel
6053What: bug
6054Rank: minor
6055Thanks: Gustavo Gutierrez
6056[DESCRIPTION]
6057Added missing assignment operator for space-based allocators for
6058STL data structures.
6059
6060[ENTRY]
6061Module: iter
6062What: change
6063Rank: minor
6064[DESCRIPTION]
6065Renamed test for subset or disjointness of range iterators to "compare".
6066
6067[ENTRY]
6068Module: flatzinc
6069What: bug
6070Rank: minor
6071[DESCRIPTION]
6072The set_in and set_in_reif constraints were buggy when used with Boolean
6073variables (which are usually not generated by mzn2fzn so that the issue
6074probably does not occur in practice).
6075
6076[ENTRY]
6077Module: set
6078What: bug
6079Rank: minor
6080[DESCRIPTION]
6081Subscription to constant views did not honor the flag to avoid
6082processing (did not occur in practice).
6083
6084[ENTRY]
6085Module: int
6086What: bug
6087Rank: minor
6088[DESCRIPTION]
6089Subscription to constant views did not honor the flag to avoid
6090processing.
6091
6092[ENTRY]
6093Module: example
6094What: new
6095Rank: minor
6096[DESCRIPTION]
6097Added car sequencing example (problem 1 in CSPLib). Uses the new
6098sequence-constraint.
6099
6100[ENTRY]
6101Module: int
6102What: new
6103Rank: major
6104Author: David Rijsman
6105[DESCRIPTION]
6106Added sequence constraint.
6107
6108[ENTRY]
6109Module: driver
6110What: new
6111Rank: minor
6112[DESCRIPTION]
6113Report if search engine has been stopped.
6114
6115[ENTRY]
6116Module: flatzinc
6117What: bug
6118Rank: minor
6119[DESCRIPTION]
6120The global_cardinality constraint was not completely compatible with
6121the MiniZinc semantics. It would constrain values not mentioned in the
6122array to have zero occurrences, while in MiniZinc they are unrestricted.
6123
6124[ENTRY]
6125Module: flatzinc
6126What: bug
6127Rank: major
6128Thanks: Håkan Kjellerstrand
6129[DESCRIPTION]
6130Element constraints in reified positions produced an error in the mzn2fzn
6131translation.
6132
6133
6134[RELEASE]
6135Version: 3.2.1
6136Date: 2009-11-04
6137[DESCRIPTION]
6138This release fixes one serious bug in the element constraint for
6139matrices; adds branchings using accumulated failure counts (also
6140known as weighted degree); provides some optimizations (mostly
6141for element constraints and for regular expressions with millions
6142of nodes); adds two cute models (word-square and crossword); and
6143a little this and that as always.
6144
6145[ENTRY]
6146Module: minimodel
6147What: performance
6148Rank: minor
6149Thanks: Håkan Kjellerstrand
6150[DESCRIPTION]
6151Conversion of a regular expression to a DFA would crash on
6152regular expressions with several million nodes (due to running
6153out of call stack space).
6154
6155[ENTRY]
6156Module: set
6157What: change
6158Rank: minor
6159[DESCRIPTION]
6160Split rel-op.cpp and rel-op-const.cpp into several compilation units, to avoid
6161excessive memory and time usage of the gcc compiler.
6162
6163[ENTRY]
6164Module: int
6165What: performance
6166Rank: minor
6167[DESCRIPTION]
6168Element constraints for integer arrays now accept shared integer
6169arrays (IntSharedArray). By this, the very same array can be
6170shared among several element constraints. Models require no
6171change, as IntArgs are automatically coerced to
6172IntSharedArrays. See "Modeling with Gecode" for more
6173explanation.
6174
6175[ENTRY]
6176Module: int
6177What: change
6178Rank: minor
6179[DESCRIPTION]
6180The semantics of division and modulo has changed to match the C standard. This
6181means that the operations round towards zero, and that the result of the
6182modulo has the same sign as its first argument.
6183
6184[ENTRY]
6185Module: example
6186What: bug
6187Rank: minor
6188Thanks: Jan Wolter
6189[DESCRIPTION]
6190The Nonogram example no longer crashes on empty lines.
6191
6192[ENTRY]
6193Module: int
6194What: performance
6195Rank: minor
6196[DESCRIPTION]
6197Optimized element for matrices (in special cases, the propagator
6198is up to six times as efficient as before).
6199
6200[ENTRY]
6201Module: flatzinc
6202What: bug
6203Rank: minor
6204[DESCRIPTION]
6205Fixed statistics output (number of solutions was sometimes wrong).
6206
6207[ENTRY]
6208Module: int
6209What: bug
6210Rank: major
6211[DESCRIPTION]
6212Fixed segfault in matrix element constraint.
6213
6214[ENTRY]
6215Module: example
6216What: new
6217Rank: minor
6218Author: Håkan Kjellerstrand
6219[DESCRIPTION]
6220Added word square puzzle.
6221
6222[ENTRY]
6223Module: example
6224What: new
6225Rank: minor
6226Thanks: Peter Van Beek
6227[DESCRIPTION]
6228Added crossword puzzle (thanks to Peter Van Beek for providing
6229access to some crossword grids).
6230
6231[ENTRY]
6232Module: int
6233What: new
6234Rank: minor
6235[DESCRIPTION]
6236Added INT_VAL_RANGES_MIN (and INT_VAL_RANGES_MAX) as value
6237selection for branching: it tries the values from the smallest
6238(largest) range first, if the variable's domain has several
6239ranges, otherwise it splits the domain.
6240
6241[ENTRY]
6242Module: int
6243What: bug
6244Rank: minor
6245[DESCRIPTION]
6246Added missing dispose function for linear disequality of Boolean
6247variables (the only problem was that with a proper dispose
6248function more memory can be reused when the propagator becomes
6249subsumed, so really a tiny quirk).
6250
6251[ENTRY]
6252Module: int
6253What: new
6254Rank: major
6255[DESCRIPTION]
6256Added AFC-based branching strategies for integer and Boolean
6257variables: INT_VAR_AFC_MIN, INT_VAR_AFC_MAX,
6258INT_VAR_SIZE_AFC_MIN, INT_VAR_SIZE_AFC_MAX. For details, see
6259"Modeling with Gecode".
6260
6261[ENTRY]
6262Module: set
6263What: new
6264Rank: major
6265[DESCRIPTION]
6266Added AFC-based branching strategies for set variables:
6267SET_VAR_AFC_MIN, SET_VAR_AFC_MAX, SET_VAR_SIZE_AFC_MIN,
6268SET_VAR_SIZE_AFC_MAX. For details, see "Modeling with Gecode".
6269
6270[ENTRY]
6271Module: kernel
6272What: new
6273Rank: major
6274[DESCRIPTION]
6275Propagators and variables now maintain an accumulated failure
6276count (AFC).
6277[MORE]
6278The AFC of a propagator counts how often has the propagator
6279failed during the entire search, and the AFC of a variable is its
6280degree plus the sum of the AFCs of all propagators depending on
6281the variable. While it looks straightforward, this required a
6282major extension of the Gecode kernel to deal with global
6283information accessed concurrently from several threads during
6284search. The AFC is also known as "weighted degree".
6285
6286[ENTRY]
6287Module: example
6288What: change
6289Rank: minor
6290[DESCRIPTION]
6291Sudoku and GraphColor now uses smallest size over accumulated failure
6292count (AFC) as the default heuristic.
6293
6294[ENTRY]
6295Module: bug
6296What: set
6297Rank: minor
6298[DESCRIPTION]
6299For branching, SET_VAR_DEGREE_MAX would select the variable with
6300smallest rather than largest degree.
6301
6302[ENTRY]
6303Module: other
6304What: change
6305Rank: major
6306[DESCRIPTION]
6307Now posting of propagators and branchers take an object of class
6308Home (rather than just a space) that can carry additional
6309information relevant for posting (for example, groups and
6310accumulated failure information). Models do not need to be
6311changed in any way!
6312[MORE]
6313While models require no change, propagator rewriting does (it
6314will work but some information might be lost). Instead of writing
6315something like
6316GECODE_REWRITE(*this,SomeProp::post(home,...));
6317where *this is the propagator to be rewritten, you should now
6318write
6319GECODE_REWRITE(*this,SomeProp::post(home(*this),...));
6320By this, the new propagator will inherit information from *this
6321(in particular the accumulated failure count).
6322
6323
6324[RELEASE]
6325Version: 3.2.0
6326Date: 2009-10-05
6327[DESCRIPTION]
6328This release has some important bug fixes (in particular for
6329global cardinality aka count), the documentation has been
6330improved (worked around some issues with generation by doxygen),
6331integrates the FlatZinc interpreter into the Gecode source tree,
6332provides propagators for disjunctive scheduling (experimental),
6333and lots of small changes and fixes. For more consistent names,
6334branchings are branchers now and branching descriptions are
6335choices (this you might have to adapt to).
6336
6337
6338[ENTRY]
6339Module: scheduling
6340What: new
6341Rank: major
6342[DESCRIPTION]
6343Added propagators for disjunctive scheduling (unary resource
6344scheduling). This is still experimental as the propagators are
6345not yet optimized and branching and modelling support is not yet
6346available.
6347
6348[ENTRY]
6349Module: search
6350What: bug
6351Rank: minor
6352[DESCRIPTION]
6353The memory reported could be sometimes too low (that could only
6354happen when an advisor allocates memory which they do only now).
6355
6356[ENTRY]
6357Module: other
6358What: documentation
6359Rank: major
6360[DESCRIPTION]
6361Cleaned up the generated reference documentation, and introduced a number
6362of workarounds for issues in doxygen. In particular, the documentation for
6363linear constraints over Boolean variables and for the thread abstractions
6364is now generated properly.
6365
6366[ENTRY]
6367Module: flatzinc
6368What: new
6369Rank: major
6370[DESCRIPTION]
6371The Gecode interpreter for the FlatZinc language is now part of the main
6372Gecode source tree.
6373
6374[ENTRY]
6375Module: int
6376What: performance
6377Rank: minor
6378Thanks: George Katsirelos, Nina Narodytska
6379[DESCRIPTION]
6380Extensional propagators using DFAs or REGs (aka regular) use a
6381more compact state representation but create their state more
6382eagerly. That can improve performance considerably (twice as fast) at a slight
6383increase in memory.
6384
6385[ENTRY]
6386Module: gist
6387What: bug
6388Rank: minor
6389[DESCRIPTION]
6390Gist now places clones also on the leftmost branch during search.
6391
6392[ENTRY]
6393Module: other
6394What: documentation
6395Rank: minor
6396Thanks: Vivian De Smedt
6397[DESCRIPTION]
6398Mention that also grep is needed for building Gecode.
6399
6400[ENTRY]
6401Module: int
6402What: bug
6403Rank: minor
6404Thanks: Jan Kelbel
6405[DESCRIPTION]
6406Slightly improved strength of the division propagator.
6407
6408[ENTRY]
6409Module: example
6410What: bug
6411Rank: minor
6412Thanks: Geoffrey Chu
6413[DESCRIPTION]
6414Fixed wrong symmetry breaking for TSP.
6415
6416[ENTRY]
6417Module: support
6418What: change
6419Rank: minor
6420Thanks: Alexandre Fayolle
6421[DESCRIPTION]
6422No longer depend on availability of timersub.
6423
6424[ENTRY]
6425Module: int
6426What: performance
6427Rank: minor
6428[DESCRIPTION]
6429Optimized n-ary disjunction and conjunction and the clause constraint.
6430
6431[ENTRY]
6432Module: int
6433What: performance
6434Rank: minor
6435[DESCRIPTION]
6436Linear constraints over Boolean variables with unit coefficients
6437(aka Boolean cardinality constraints) have been
6438reimplemented. Less memory (minus 30%) and more speed. For
6439example, BIBD runs 10% faster now.
6440
6441[ENTRY]
6442Module: search
6443What: change
6444Rank: minor
6445[DESCRIPTION]
6446Optimized thread creation by thread pools, now the creation and
6447deletion of arbitrarily many parallel search engines also works
6448for platforms using pthreads (Linux and MacOS).
6449
6450[ENTRY]
6451Module: other
6452What: change
6453Rank: minor
6454Thanks: David Rijsman
6455[DESCRIPTION]
6456Compiles with MSVC 2005 again.
6457
6458[ENTRY]
6459Module: other
6460What: bug
6461Rank: minor
6462[DESCRIPTION]
6463The configure script checked for Qt 4.2, although Gist requires at least
6464Qt 4.3.
6465
6466[ENTRY]
6467Module: int
6468What: bug
6469Rank: major
6470[DESCRIPTION]
6471Fixed serious bug in the bounds propagator for global cardinality.
6472
6473[ENTRY]
6474Module: kernel
6475What: change
6476Rank: major
6477[DESCRIPTION]
6478A branching is now a brancher and a branching description is now a choice.
6479[MORE]
6480Classes and member functions have been renamed accordingly. The
6481change is necessary due to proper explanation in the forthcoming
6482"Programming with Gecode".
6483
6484[ENTRY]
6485Module: search
6486What: bug
6487Rank: minor
6488[DESCRIPTION]
6489Compiles again if no threads available.
6490
6491[ENTRY]
6492Module: gist
6493What: change
6494Rank: minor
6495[DESCRIPTION]
6496The Gist console now has a toolbar that provides buttons to clear the text
6497as well as to configure the console window to stay on top of Gist.
6498Furthermore, after adding output, the console now automatically scrolls to the
6499bottom.
6500
6501[ENTRY]
6502Module: graph
6503What: new
6504Rank: minor
6505[DESCRIPTION]
6506Cost-based variants for circuit added.
6507
6508[ENTRY]
6509Module: set
6510What: change
6511Rank: minor
6512[DESCRIPTION]
6513The element constraint with an integer index variable now throws
6514an exception if used with an empty array.
6515
6516[ENTRY]
6517Module: int
6518What: change
6519Rank: minor
6520[DESCRIPTION]
6521The element constraint now computes more accurate variable bounds
6522when being posted (to avoid arithmetic overflow in naive models).
6523
6524[ENTRY]
6525Module: int
6526What: change
6527Rank: minor
6528[DESCRIPTION]
6529The element constraint now throws an exception if used with an
6530empty array.
6531
6532[ENTRY]
6533Module: example
6534What: bug
6535Rank: minor
6536[DESCRIPTION]
6537Fixed zero cost edges in TSP examples.
6538
6539[ENTRY]
6540Module: example
6541What: change
6542Rank: minor
6543[DESCRIPTION]
6544Examples now use the symmetry-option for symmetry-breaking.
6545[MORE]
6546The affected examples are:
6547 - BlackHole
6548 - EFPA
6549 - Pentominoes
6550 - SteelMill
6551 .
6552
6553[ENTRY]
6554Module: driver
6555What: new
6556Rank: minor
6557[DESCRIPTION]
6558Added new standard option for options called symmetry.
6559
6560[ENTRY]
6561Module: int
6562What: new
6563Rank: minor
6564Thanks: Kish Shen
6565[DESCRIPTION]
6566Added regret_min and regret_max for IntVar and BoolVar (they were
6567only available for IntView).
6568
6569[ENTRY]
6570Module: int
6571What: change
6572Rank: minor
6573[DESCRIPTION]
6574Moved cumulatives to the new scheduling library.
6575
6576[ENTRY]
6577Module: scheduling
6578What: new
6579Rank: minor
6580[DESCRIPTION]
6581Added a new module for scheduling. To use scheduling
6582constraints, you have to include <gecode/scheduling.hh> and link
6583against the scheduling library.
6584
6585[ENTRY]
6586Module: int
6587What: change
6588Rank: minor
6589[DESCRIPTION]
6590Moved circuit to the new graph library.
6591
6592[ENTRY]
6593Module: graph
6594What: new
6595Rank: minor
6596[DESCRIPTION]
6597Added a new module for graph constraints. To use graph
6598constraints, you have to include <gecode/graph.hh> and link
6599against the graph library.
6600
6601[ENTRY]
6602Module: example
6603What: new
6604Rank: minor
6605[DESCRIPTION]
6606Added branching following Warnsdorff's heuristic for Knights.
6607
6608[ENTRY]
6609Module: int
6610What: new
6611Rank: minor
6612[DESCRIPTION]
6613Added branch and assign for single integer and Boolean variable.
6614
6615[ENTRY]
6616Module: set
6617What: new
6618Rank: minor
6619[DESCRIPTION]
6620Added branch and assign for single set variable.
6621
6622[ENTRY]
6623Module: minimodel
6624What: new
6625Rank: minor
6626Thanks: Håkan Kjellerstrand
6627[DESCRIPTION]
6628Added element constraints for Matrix interface to arrays.
6629
6630[ENTRY]
6631Module: int
6632What: new
6633Rank: minor
6634Thanks: Håkan Kjellerstrand
6635[DESCRIPTION]
6636Added element constraints for Matrix arrays.
6637
6638[ENTRY]
6639Module: set
6640What: new
6641Rank: minor
6642Thanks: Håkan Kjellerstrand
6643[DESCRIPTION]
6644Added element constraints for Matrix arrays.
6645
6646[ENTRY]
6647Module: search
6648What: change
6649Rank: minor
6650Thanks: Vincent Barichard
6651[DESCRIPTION]
6652Path for search provides top and empty methods.
6653
6654[ENTRY]
6655Module: driver
6656What: change
6657Rank: minor
6658Bug: 59
6659Thanks: Luca Di Gaspero
6660[DESCRIPTION]
6661The driver takes copies of all string values passed top it.
6662
6663
6664[RELEASE]
6665Version: 3.1.0
6666Date: 2009-05-20
6667[DESCRIPTION]
6668This release introduces parallel search, features improved memory
6669management (can double efficiency on MacOS X), and provides a
6670reusable command line driver upon popular request. And, of
6671course, some this and that.
6672
6673[ENTRY]
6674Module: set
6675What: change
6676Rank: minor
6677[DESCRIPTION]
6678The set constraint sequentialUnion has been renamed to sequence.
6679
6680[ENTRY]
6681Module: example
6682What: change
6683Rank: minor
6684[DESCRIPTION]
6685The parameters of the Hamming Codes example are now configurable
6686through command line options (instead of hard-coded).
6687
6688[ENTRY]
6689Module: search
6690What: change
6691Rank: minor
6692[DESCRIPTION]
6693The stop function of stop objects now also takes a second argument
6694of type Search::Options. This is in particular useful for
6695decisions that involve the number of threads used for search.
6696
6697[ENTRY]
6698Module: search
6699What: new
6700Rank: major
6701[DESCRIPTION]
6702Added parallel search engines for DFS, BAB, and Restart (but not
6703LDS). Please make sure to read the section "Parallel search" in
6704"Modeling with Gecode".
6705[MORE]
6706Parallel search is still experimental: creating and destroying a
6707large number (more than 1000) of search engines (and hence a
6708large number of threads) might raise exceptions on operating
6709systems using pthreads as thread implementation. This will be
6710fixed in a future release by using thread pools.
6711
6712[ENTRY]
6713Module: support
6714What: new
6715Rank: minor
6716[DESCRIPTION]
6717Added a tiny portable thread package specifically tailored to the
6718needs for parallel search. Unfortunately, other portable thread
6719packages have just too many issues.
6720
6721[ENTRY]
6722Module: gist
6723What: bug
6724Rank: minor
6725[DESCRIPTION]
6726Fixed a dead lock that could occur when closing the Gist main window while
6727search is still running.
6728
6729[ENTRY]
6730Module: gist
6731What: bug
6732Rank: minor
6733[DESCRIPTION]
6734The inspectors are finalized before Gist exits. This fixes a bug
6735where (at least on Mac OS) some memory was not freed in the
6736correct order.
6737
6738[ENTRY]
6739Module: gist
6740What: bug
6741Rank: minor
6742[DESCRIPTION]
6743Gist now correctly centers the current node after search has finished.
6744
6745[ENTRY]
6746Module: gist
6747What: change
6748Rank: minor
6749[DESCRIPTION]
6750Small user interface changes: disable search from hidden nodes, add depth
6751information to status bar, and add statistics for subtrees (available from the
6752node context menu and the Node menu).
6753
6754[ENTRY]
6755Module: gist
6756What: change
6757Rank: minor
6758[DESCRIPTION]
6759Easily add multiple inspectors to Gist. Inspectors are not
6760exclusive any longer, you can select any combination of them to
6761respond to clicks or solutions simultaneously.
6762
6763[ENTRY]
6764Module: int
6765What: change
6766Rank: minor
6767[DESCRIPTION]
6768The INT_VAL_MED value selection now consistently selects the greatest element
6769in the domain not greater than the median.
6770
6771[ENTRY]
6772Module: driver
6773What: change
6774Rank: minor
6775[DESCRIPTION]
6776If Gist is not available, -mode gist is the same as -mode
6777solution. Invocation with -help also prints information about how
6778Gecode has been configured.
6779
6780[ENTRY]
6781Module: example
6782What: new
6783Rank: minor
6784[DESCRIPTION]
6785Added new example for equidistant frequency permutation arrays (EFPA).
6786
6787[ENTRY]
6788Module: kernel
6789What: performance
6790Rank: major
6791[DESCRIPTION]
6792Cache memory blocks from deleted spaces. This hardly increases
6793peak memory consumption. It improves performance on Windows and
6794Linux only by up to 5%, but on MacOS by 50% in some cases (this
6795improvement is absolutely essential for parallel execution).
6796
6797[ENTRY]
6798Module: set
6799What: new
6800Rank: minor
6801[DESCRIPTION]
6802Added a wait propagator: executes a function when a variable (or
6803variables) become(s) assigned.
6804
6805[ENTRY]
6806Module: int
6807What: new
6808Rank: minor
6809[DESCRIPTION]
6810Added a wait propagator: executes a function when a variable (or
6811variables) become(s) assigned.
6812
6813[ENTRY]
6814Module: driver
6815What: new
6816Rank: major
6817[DESCRIPTION]
6818Added a new module "driver" as a commandline driver for
6819scripts. This is due to popular request: most people have been
6820using the support functionality for examples anyway. This
6821function is now wrapped into a proper module (and Example is
6822now called Script to be more general). See "Modeling with Gecode"
6823for documentation.
6824
6825[ENTRY]
6826Module: support
6827What: new
6828Rank: minor
6829[DESCRIPTION]
6830Support::quicksort and Support::insertion support using the less than
6831operator for the sort order by leaving out the comparator object.
6832
6833
6834[RELEASE]
6835Version: 3.0.2
6836Date: 2009-03-26
6837[DESCRIPTION]
6838This is a bug fix release fixing two more embarrassing
6839bugs. However, this time we redesigned our tests carefully such
6840that they cover all changes and optimizations done for the
6841transition from 2.2.0 to 3.0.*. Please update asap.
6842
6843[ENTRY]
6844Module: example
6845What: bug
6846Rank: minor
6847Thanks: Håkan Kjellerstrand
6848[DESCRIPTION]
6849The radiotherapy example was missing in the Makefile.
6850
6851[ENTRY]
6852Module: int
6853What: bug
6854Rank: major
6855[DESCRIPTION]
6856Fixed bug in optimization of extensional constraints with DFAs
6857(hard to reproduce, almost impossible).
6858
6859[ENTRY]
6860Module: minimodel
6861What: bug
6862Rank: major
6863Thanks: Gustavo Guiterrez
6864[DESCRIPTION]
6865Fixed bug in posting of Boolean expressions including reified
6866linear expressions. Again, that escaped our testsuite (also
6867fixed).
6868
6869[ENTRY]
6870Module: int
6871What: performance
6872Rank: minor
6873[DESCRIPTION]
6874Reoptimized element with integer values and created bizarre
6875testcases.
6876
6877[ENTRY]
6878Module: gist
6879What: change
6880Rank: minor
6881[DESCRIPTION]
6882A separator is printed between solutions in the TextInspector.
6883
6884
6885[RELEASE]
6886Version: 3.0.1
6887Date: 2009-03-24
6888[DESCRIPTION]
6889This is a bug fix release fixing two embarrassing bugs that were
6890not caught by our test infrastructure. Please update asap.
6891
6892
6893[ENTRY]
6894Module: int
6895What: bug
6896Rank: major
6897Thanks: Vincent Barichard
6898[DESCRIPTION]
6899Fixed bug in element with integer values.
6900
6901[ENTRY]
6902Module: int
6903What: bug
6904Rank: minor
6905[DESCRIPTION]
6906IntSetArgs no longer inherit from PrimArgArray, which was wrong
6907as IntSet is no primitive type and hence does not support vararg
6908initializers.
6909
6910[ENTRY]
6911Module: example
6912What: bug
6913Rank: minor
6914[DESCRIPTION]
6915The examples now pass the c-d and a-d command line options correctly to Gist.
6916
6917[ENTRY]
6918Module: int
6919What: bug
6920Rank: major
6921Thanks: Alberto Delgado
6922[DESCRIPTION]
6923Fixed bug in reified Boolean linear constraints (an optimization
6924is currently disabled and will be active in the next release: the
6925optimization was incorrect and was never tested).
6926
6927[ENTRY]
6928Module: example
6929What: bug
6930Rank: minor
6931Bug: 56
6932Thanks: Chris Mears
6933[DESCRIPTION]
6934The Steel Mill Slab Design example had two bugs in the search
6935heuristic and a missing redundant constraint.
6936
6937[ENTRY]
6938Module: example
6939What: new
6940Rank: minor
6941[DESCRIPTION]
6942Added new example for Radiotherapy.
6943
6944
6945
6946[RELEASE]
6947Version: 3.0.0
6948Date: 2009-03-13
6949[DESCRIPTION]
6950This release is a major consolidation release: interfaces have
6951been cleaned up (consistent parameter passing, consistent naming,
6952simpler Gist interface, namespaces for operator overloading);
6953some functionality has been extended (propagators can be
6954non-monotonic; branchings support tie-breaking and random
6955variable and value selection); some functionality that did not
6956meet our quality goals has been removed (complete set variables,
6957reflection); usage has been simplified (auto-linking on Windows,
6958more commonly used filename extensions); important aspects have
6959been optimized (memory management, memory usage and efficiency on
696064bit machines). These cleanups were in particular necessary to
6961make %Gecode easier to document (this release is the first to be
6962accompanied by tutorial documentation explaining how to model
6963with %Gecode).
6964
6965Apart from that, many small fixes and additions. Please see below
6966for the details.
6967
6968As the interfaces have changed considerably, please consult \ref
6969PageHowToChange_3 "How to Change to Gecode 3.0.0".
6970
6971[ENTRY]
6972Module: example
6973What: performance
6974Rank: minor
6975Thanks: Håkan Kjellerstrand
6976[DESCRIPTION]
6977Improved branching for Nonogram examples.
6978
6979[ENTRY]
6980Module: set
6981What: bug
6982Rank: minor
6983Thanks: Stefano Gualandi
6984[DESCRIPTION]
6985Fixed bug in creation of set variables.
6986
6987[ENTRY]
6988Module: kernel
6989What: bug
6990Rank: major
6991Thanks: Vincent Barichard
6992[DESCRIPTION]
6993Updating of a council of advisors crashed if a propagator has no
6994advisors (as we had no example of this kind of propagators).
6995
6996[ENTRY]
6997Module: set
6998What: change
6999Rank: minor
7000[DESCRIPTION]
7001Element and convexity constraints on set variables have a more
7002uniform interface, and the match constrained has been renamed to
7003channel.
7004
7005[ENTRY]
7006Module: gist
7007What: change
7008Rank: minor
7009[DESCRIPTION]
7010Gist now takes an optional argument specifying options for the
7011search, including the inspectors to be used. The Qt interface has
7012been cleaned up, so that Gist is easier to extend.
7013
7014[ENTRY]
7015Module: gist
7016What: new
7017Rank: minor
7018[DESCRIPTION]
7019Added inspectors that react on every solution instead of a double
7020click.
7021
7022[ENTRY]
7023Module: int
7024What: change
7025Rank: minor
7026[DESCRIPTION]
7027A TupleSet must be finalized before an extensional constraint can
7028be posted using it.
7029
7030[ENTRY]
7031Module: set
7032What: removed
7033Rank: minor
7034[DESCRIPTION]
7035Removed automatically generated set projectors, they will come
7036back eventually. This makes no change to the available
7037functionality for set variables.
7038
7039[ENTRY]
7040Module: cpltset
7041What: removed
7042Rank: major
7043[DESCRIPTION]
7044Complete sets have been removed (just not good enough).
7045
7046[ENTRY]
7047Module: kernel
7048What: new
7049Rank: minor
7050Author: Filip Konvicka
7051[DESCRIPTION]
7052Integrated space and region-based allocators that work with STL
7053classes.
7054
7055[ENTRY]
7056Module: int
7057What: bug
7058Rank: minor
7059[DESCRIPTION]
7060Fixed bug in domain consistent min and max propagators.
7061
7062[ENTRY]
7063Module: int
7064What: performance
7065Rank: major
7066Author: Tias Guns
7067[DESCRIPTION]
7068Integrated an efficient implementation of reified linear
7069constraints over Boolean variables.
7070
7071[ENTRY]
7072Module: example
7073What: bug
7074Rank: minor
7075Thanks: Stefano Gualandi
7076[DESCRIPTION]
7077A bug in the independent set example has been fixed (most edges
7078were ignored).
7079
7080[ENTRY]
7081Module: set
7082What: new
7083Rank: minor
7084[DESCRIPTION]
7085More set branching strategies have been added (for instance random variable
7086and value selection), as well as set assignment.
7087
7088[ENTRY]
7089Module: other
7090What: removed
7091Rank: major
7092[DESCRIPTION]
7093All support for reflection has been removed: not clean enough,
7094not powerful enough, too difficult, and too much trouble.
7095
7096[ENTRY]
7097Module: kernel
7098What: new
7099Rank: minor
7100Thanks: Denys Duchier
7101[DESCRIPTION]
7102Added support for synchronized execution during branching
7103(executes a function).
7104
7105[ENTRY]
7106Module: kernel
7107What: change
7108Rank: major
7109[DESCRIPTION]
7110The specification of propagation cost has changed. It now must be
7111computed by the static member functions of the class
7112Gecode::PropCost.
7113
7114[ENTRY]
7115Module: int
7116What: new
7117Rank: minor
7118[DESCRIPTION]
7119Added support for synchronized execution that executes a function
7120or a static member function when a Boolean variable becomes
7121assigned (called when).
7122
7123[ENTRY]
7124Module: int
7125What: change
7126Rank: minor
7127Thanks: David Rijsman
7128[DESCRIPTION]
7129Make the variable deltas generated for minus_r more meaningful if
7130possible.
7131
7132[ENTRY]
7133Module: iter
7134What: documentation
7135Rank: minor
7136Thanks: Anden Blah, Morten Boysen
7137[DESCRIPTION]
7138Mention that arrays for Iter::Values::Arrays must be sorted.
7139
7140[ENTRY]
7141Module: int
7142What: bug
7143Rank: major
7144Thanks: Roland Yap Hock Chuan
7145[DESCRIPTION]
7146Fixed off-by-one bug in extensional for DFAs.
7147
7148[ENTRY]
7149Module: kernel
7150What: change
7151Rank: minor
7152[DESCRIPTION]
7153The clone operation on spaces is now const.
7154
7155[ENTRY]
7156Module: int
7157What: change
7158Rank: minor
7159[DESCRIPTION]
7160TupleSet now accepts duplicate tuples.
7161
7162[ENTRY]
7163Module: int
7164What: change
7165Rank: minor
7166[DESCRIPTION]
7167Renamed size() to ranges() for IntSet (returning the number of
7168ranges). Added a size() and width() function that return the size
7169and width of the set respectively.
7170
7171[ENTRY]
7172Module: kernel
7173What: change
7174Rank: minor
7175[DESCRIPTION]
7176Introduced CopiedHandle as a new base class for SharedHandle.
7177[MORE]
7178A copied handle provides access to an object that is used by
7179entities in a space, and that is copied when then space is
7180copied. This abstraction can be used e.g. to pass information
7181between different entities in a space, such as between
7182propagators and branchings.
7183
7184[ENTRY]
7185Module: support
7186What: bug
7187Rank: minor
7188Thanks: Michal Dobrogost
7189[DESCRIPTION]
7190Sorting (quicksort and insertion) require strict orders and now
7191work with arrays of more than 2^32 elements.
7192
7193[ENTRY]
7194Module: int
7195What: new
7196Rank: minor
7197[DESCRIPTION]
7198Integer sets can now be initialized from integer argument arrays.
7199
7200[ENTRY]
7201Module: other
7202What: bug
7203Rank: minor
7204Thanks: Chris Mears
7205[DESCRIPTION]
7206Output operators (<<) now respect formatting width and work with
7207output streams using arbitrary character types.
7208
7209[ENTRY]
7210Module: kernel
7211What: change
7212Rank: minor
7213Thanks: Denys Duchier
7214[DESCRIPTION]
7215Made macros semicolon-safe.
7216
7217[ENTRY]
7218Module: set
7219What: bug
7220Rank: minor
7221Thanks: Denys Duchier
7222[DESCRIPTION]
7223Fixed constructors for set variables. They now throw proper exceptions when
7224trying to create empty variable domains.
7225
7226[ENTRY]
7227Module: set
7228What: new
7229Rank: minor
7230Thanks: Denys Duchier
7231[DESCRIPTION]
7232Added reified propagators constraining an integer variable to be the minimum
7233or maximum element of a set variable.
7234
7235[ENTRY]
7236Module: int
7237What: removed
7238Rank: minor
7239[DESCRIPTION]
7240Support for PropKind has been removed for all but extensional constraints.
7241
7242[ENTRY]
7243Module: int
7244What: new
7245Rank: minor
7246[DESCRIPTION]
7247Domain constraints (dom) also accept integers now.
7248
7249[ENTRY]
7250Module: other
7251What: change
7252Rank: major
7253Thanks: Max
7254[DESCRIPTION]
7255All operators are now in their correct namespace.
7256
7257[ENTRY]
7258Module: minimodel
7259What: change
7260Rank: minor
7261[DESCRIPTION]
7262LinExpr, LinRel, BoolExpr are now part of the Gecode namespace
7263rather than Gecode::MiniModel (to support operator resolution).
7264
7265[ENTRY]
7266Module: test
7267What: new
7268Rank: minor
7269[DESCRIPTION]
7270Tests for testing claims of bounds(Z) and bounds(D) consistency. These
7271tests would have found the bug in the binary min and max propagators.
7272[MORE]
7273An integer test can enable these new tests by setting the contest member
7274to CTL_BOUNDS_Z or CTL_BOUNDS_D. For domain-consistency propagators
7275the contest member is set automatically to CTL_DOMAIN. If no
7276consistency-testing should be done, contest should be set to CTL_NONE.
7277
7278[ENTRY]
7279Module: search
7280What: new
7281Rank: minor
7282[DESCRIPTION]
7283The search engines now collect statistics for the number of nodes
7284visited and the maximum depth of the search tree. The information
7285for number of clone and commit operations has been removed as it
7286was too confusing.
7287
7288[ENTRY]
7289Module: search
7290What: new
7291Rank: major
7292[DESCRIPTION]
7293Search engines have been completely reimplemented.
7294
7295[ENTRY]
7296Module: int
7297What: bug
7298Rank: minor
7299Thanks: Jonathan Cederberg
7300[DESCRIPTION]
7301The binary min and max propagators did not do all pruning they
7302should do.
7303[MORE]
7304Given the constraint x = max(y,z) with the store {x->{1,2,3},
7305y->{1,2}, z->{3}}, propagation did not yield any new information
7306(now it gives the correct result {x->{3}, y->{1,2}, z->{3}}).
7307
7308[ENTRY]
7309Module: example
7310What: new
7311Rank: minor
7312[DESCRIPTION]
7313New example: the steel mill slab design problem (Problem 38 in <a
7314href="http://csplib.org">CSPLib</a>).
7315[MORE]
7316The model used is from Gargani and Refalo, "An efficient model and
7317strategy for the steel mill slab design problem.", CP 2007. The
7318symmetry-breaking search is from Van Hentenryck and Michel, "The Steel
7319Mill Slab Design Problem Revisited", CPAIOR 2008.
7320
7321[ENTRY]
7322Module: iter
7323What: bug
7324Rank: minor
7325Thanks: Stefano Gualandi
7326[DESCRIPTION]
7327Fixed init method of SingletonAppend range iterator.
7328
7329[ENTRY]
7330Module: example
7331What: bug
7332Rank: minor
7333[DESCRIPTION]
7334Fixed a bug in the extensional propagation-version of the domino example.
7335
7336[ENTRY]
7337Module: other
7338What: new
7339Rank: minor
7340[DESCRIPTION]
7341For the Microsoft compiler, auto-link information is added during
7342compilation.
7343[MORE]
7344That is, by including %Gecode headers during
7345compilation the right libraries will be found automatically
7346during linking. To simplify development and deployment, the
7347libraries (and DLLs) encode version, platform, and build type
7348(release or debug) in their filename.
7349
7350[ENTRY]
7351Module: minimodel
7352What: performance
7353Rank: minor
7354[DESCRIPTION]
7355Posting constraints according to Boolean expressions now uses a
7356negation normalform and by this avoids any propagator for
7357negation and uses fewer propagators due to the new clause constraint.
7358
7359[ENTRY]
7360Module: other
7361What: change
7362Rank: major
7363[DESCRIPTION]
7364Changed naming scheme for files.
7365[MORE]
7366All files with extension .cc have been renamed to .cpp, and .icc
7367has become .hpp. This avoids conflicts as .icc is typically used
7368for other file types. All include directives are now specified
7369using <...> notation instead of "...", so that %Gecode headers do
7370not clutter the include namespace of a client program.
7371
7372[ENTRY]
7373Module: minimodel
7374What: change
7375Rank: minor
7376[DESCRIPTION]
7377The Matrix class is now in the Gecode namespace (and not in
7378Gecode::MiniModel).
7379
7380[ENTRY]
7381Module: set
7382What: change
7383Rank: minor
7384[DESCRIPTION]
7385Reorganized the internal data structures of set variables so that each
7386variable takes up 8 bytes less memory on 64 bit machines.
7387
7388[ENTRY]
7389Module: kernel
7390What: change
7391Rank: minor
7392[DESCRIPTION]
7393The index structure for variable dependencies is now implemented using integers
7394instead of pointers, saving memory on 64 bit machines.
7395[MORE]
7396For example, the index
7397structure of integer variables is now 40% smaller, for Boolean variables
7398(which have the smallest possible index structure) we still save 16%.
7399
7400[ENTRY]
7401Module: int
7402What: new
7403Rank: minor
7404[DESCRIPTION]
7405Added a Boolean clause constraint that supports conjunction and
7406disjunction of both positive and negative variables.
7407
7408[ENTRY]
7409Module: int
7410What: performance
7411Rank: minor
7412[DESCRIPTION]
7413Now n-ary Boolean disjunction and conjunction are constant time
7414(rather than linear time, as before), even when a variable for
7415the result is used.
7416
7417[ENTRY]
7418Module: kernel
7419What: change
7420Rank: major
7421[DESCRIPTION]
7422%Gecode now supports weakly monotonic propagators.
7423[MORE]
7424A weakly monotonic propagator must only be able to decide for
7425assignments whether they are solutions or not (which is a very
7426natural property as it means the propagator must be a correct
7427implementation of a constraint). Otherwise, the propagator does
7428not have to be monotonic, it can even be indeterministic.
7429
7430Weakly monotonic but not monotonic propagators must notify a
7431space about their existence: if a weakly monotonic propagator is
7432created, it must execute "home.notice(*this,AP_WEAKLY)"; if it is
7433disposed, it must execute "home.ignore(*this,AP_WEAKLY)".
7434
7435[ENTRY]
7436Module: kernel
7437What: change
7438Rank: minor
7439[DESCRIPTION]
7440The functions force and unforce of an actor to force disposal
7441have been removed.
7442[MORE]
7443Now, the new interface based on notice and ignore using actor
7444properties must be used instead. So, instead of "force(home)",
7445write "home.notice(*this,AP_DISPOSE)" and, instead of
7446"unforce(home)", write "home.ignore(*this,AP_DISPOSE)".
7447
7448[ENTRY]
7449Module: int
7450What: performance
7451Rank: minor
7452[DESCRIPTION]
7453The incremental extensional propagator for tuplesets uses less
7454memory (around 25%) and reports its size correctly.
7455
7456[ENTRY]
7457Module: int
7458What: performance
7459Rank: minor
7460[DESCRIPTION]
7461The element propagator for integer arrays now chooses
7462datastructures according to and the elements of the array.
7463[MORE]
7464This can save more than 80% memory on a 64 bit machine, and up to
746575% on a 32 bit machine. In common cases, one can expect a
7466reduction by at least 50%.
7467
7468[ENTRY]
7469Module: int
7470What: performance
7471Rank: minor
7472[DESCRIPTION]
7473The regular propagator now chooses datastructures according to
7474the size of the DFA. This can save up to 80% memory on a 64 bit
7475machine, and still up to 50% on a 32 bit machine.
7476
7477[ENTRY]
7478Module: kernel
7479What: change
7480Rank: minor
7481[DESCRIPTION]
7482The home space is now also passed to the cost function of a propagator.
7483
7484[ENTRY]
7485Module: other
7486What: change
7487Rank: major
7488[DESCRIPTION]
7489Now everything is passed as reference (Space, Propagator,
7490ModEventDelta, Advisor, Branching, and BranchingDesc).
7491[MORE]
7492The reason for this massive change is to be more C++ compliant
7493and make the interfaces more consistent (at some places things
7494were passed as references and at other places as pointers, for no
7495obvious and explainable reason). Routines that create objects
7496rather than pass them (such as copy, clone, or description) still
7497return a pointer to an object (so that it can actually be
7498deleted!).
7499
7500You will have to rewrite your models and other programs using
7501%Gecode. For models this is easy enough:
7502 - Replace "(Space* home" by "(Space& home".
7503 - Replace "home->" by "home.".
7504 - Replace "(this" by "(*this".
7505 .
7506That should do the trick for 99% of the models.
7507
7508For the other changes, just lookout for the changes in types and
7509that "this" becomes "*this" now.
7510
7511[ENTRY]
7512Module: other
7513What: change
7514Rank: major
7515[DESCRIPTION]
7516The memory management has been completely reworked.
7517[MORE]
7518It is now more robust, more portable (does not use alloca any
7519longer), more efficient, fits C++ better and is much easier too
7520understand. There are now three memory areas: a single heap,
7521spaces, and regions. Heap and spaces are as before. A region (an
7522object of class Region) is a simple and very efficient memory
7523manager for temporary memory managed in a stack fashion. These
7524three memory managers provide uniform operations for allocation
7525(alloc), deallocation (free), and reallocation (realloc). These
7526operations use constructors, destructors, and assignment
7527operators as required by C++ and are implemented with efficient
7528specializations for basic data types.
7529
7530[ENTRY]
7531Module: support
7532What: removed
7533Rank: minor
7534[DESCRIPTION]
7535PQueue has been removed (too specialized to be reused anyway).
7536
7537[ENTRY]
7538Module: support
7539What: removed
7540Rank: minor
7541[DESCRIPTION]
7542GECODE_AUTOARRAY has been removed. Use a Region for memory
7543management instead.
7544
7545[ENTRY]
7546Module: support
7547What: removed
7548Rank: minor
7549[DESCRIPTION]
7550GECODE_AUTOSTACK and SentinelStack has been removed. Use
7551StaticStack instead.
7552
7553[ENTRY]
7554Module: int
7555What: performance
7556Rank: minor
7557[DESCRIPTION]
7558Simpler and more efficient memory management for element
7559propagators (integer arrays).
7560
7561[ENTRY]
7562Module: kernel
7563What: change
7564Rank: minor
7565[DESCRIPTION]
7566All functions for checking sharing for arrays (same, shared,
7567unique) require a space argument (for memory management).
7568
7569[ENTRY]
7570Module: minimodel
7571What: new
7572Rank: minor
7573[DESCRIPTION]
7574Added MinimizeSpace and MaximizeSpace classes for cost-based
7575optimization (requires implementing a cost function returning an
7576integer cost variable). Optimization can now be implemented by
7577inheriting from these classes rather than from Space and by
7578implementing a cost function.
7579
7580[ENTRY]
7581Module: kernel
7582What: change
7583Rank: minor
7584[DESCRIPTION]
7585The description() member function of a space is not any longer
7586const: it can be called at most once.
7587
7588[ENTRY]
7589Module: kernel
7590What: change
7591Rank: major
7592[DESCRIPTION]
7593The constrain method used for best solution search must be
7594virtual and takes an argument of type const Space& rather than
7595Space* as argument.
7596
7597[ENTRY]
7598Module: int
7599What: change
7600Rank: major
7601[DESCRIPTION]
7602Tie-breaking and random selection for branch is now supported.
7603
7604[ENTRY]
7605Module: set
7606What: change
7607Rank: major
7608[DESCRIPTION]
7609The values for variable and value selection for branching have
7610been made consistent and extended.
7611[MORE]
7612The following values have been renamed:
7613 - SET_VAR_MIN_CARD -> SET_VAR_SIZE_MIN
7614 - SET_VAR_MAX_CARD -> SET_VAR_SIZE_MAX
7615 - SET_VAR_MIN_UNKNOWN_ELEM -> SET_VAR_MIN_MIN
7616 - SET_VAR_MAX_UNKNOWN_ELEM -> SET_VAR_MAX_MAX
7617 - SET_VAL_MIN -> SET_VAL_MIN_INC
7618 - SET_VAL_MAX -> SET_VAL_MAX_INC
7619 .
7620Tie-breaking and random selection is now supported.
7621
7622[ENTRY]
7623Module: int
7624What: change
7625Rank: minor
7626[DESCRIPTION]
7627The variable selection INT_VAR_DEGREE_MIN and INT_VAR_DEGREE_MAX
7628do not have tiebreaking with smallest domain size built in.
7629[MORE]
7630The old behavior can be reclaimed by explicit tiebreaking, for
7631example replace INT_VAR_DEGREE_MAX by
7632tiebreak(INT_VAR_DEGREE_MAX,INT_VAR_SIZE_MIN).
7633
7634[ENTRY]
7635Module: kernel
7636What: change
7637Rank: major
7638[DESCRIPTION]
7639View and value branchings have been completely reimplemented to support
7640tie-breaking and state (for randomized selection).
7641
7642[ENTRY]
7643Module: kernel
7644What: removed
7645Rank: major
7646[DESCRIPTION]
7647View and value assignments have been removed as they now can be
7648expressed by view and value branchings.
7649
7650
7651[RELEASE]
7652Version: 2.2.0
7653Date: 2008-08-25
7654[DESCRIPTION]
7655This release adds many domain consistent propagators for
7656arithmetic constraints and fixes a number of bugs. Some of these
7657bugs fixed are potentially serious, in particular as they occur
7658very seldom. Please change to 2.2.0 as soon as possible (in
7659particular if you are using the 64bit Microsoft Visual C++
7660compiler). And, of course, the usual small fixes and changes.
7661
7662[ENTRY]
7663Module: kernel
7664What: bug
7665Rank: major
7666[DESCRIPTION]
7667Fixed a bug in the memory alignment on Windows 64bit (very hard to reproduce).
7668
7669[ENTRY]
7670Module: other
7671What: new
7672Rank: minor
7673[DESCRIPTION]
7674Added configure options for adding a prefix and a suffix to the names of the
7675compiled libraries.
7676
7677[ENTRY]
7678Module: int
7679What: bug
7680Rank: major
7681[DESCRIPTION]
7682Fixed a bug in the domain consistent distinct propagator that would cause
7683a stack overflow under rare circumstances.
7684
7685[ENTRY]
7686Module: set
7687What: bug
7688Rank: major
7689[DESCRIPTION]
7690The ternary intersection propagator was incorrect if any of the sets had a
7691maximum cardinality of Set::Limits::card.
7692
7693[ENTRY]
7694Module: int
7695What: new
7696Rank: minor
7697Thanks: Raphael Reischuk
7698[DESCRIPTION]
7699The attempt to access the value of an unassigned integer or
7700Boolean variable (IntVar or BoolVar) throws an exception now.
7701
7702[ENTRY]
7703Module: int
7704What: new
7705Rank: minor
7706[DESCRIPTION]
7707Added bounds consistent division/modulo propagator.
7708
7709[ENTRY]
7710Module: int
7711What: change
7712Rank: minor
7713[DESCRIPTION]
7714All functional linear and arithmetic constraints now put sharp
7715bounds on the output variable (eases interfacing to modelling
7716languages).
7717
7718[ENTRY]
7719Module: int
7720What: new
7721Rank: minor
7722[DESCRIPTION]
7723The channel constraint now comes in a version that allows to specify offsets
7724to the array indices.
7725
7726[ENTRY]
7727Module: example
7728What: removed
7729Rank: minor
7730[DESCRIPTION]
7731Example-based support for SAC (singleton arc consistency) has
7732been removed. Might be reintroduced later in a more general
7733fashion.
7734
7735[ENTRY]
7736Module: other
7737What: new
7738Rank: minor
7739[DESCRIPTION]
7740The Makefile has a new target, check, which performs a minimal integrity check
7741using some tests from the test suite.
7742
7743[ENTRY]
7744Module: set
7745What: change
7746Rank: minor
7747[DESCRIPTION]
7748The set selection constraints are now called element.
7749
7750[ENTRY]
7751Module: int
7752What: bug
7753Rank: minor
7754[DESCRIPTION]
7755Fixed bug for domain-consistent distinct that never occurred in
7756practice.
7757
7758[ENTRY]
7759Module: kernel
7760What: bug
7761Rank: minor
7762[DESCRIPTION]
7763Fixed bug that could potentially have affected certain staged
7764propagators.
7765
7766[ENTRY]
7767Module: kernel
7768What: documentation
7769Rank: minor
7770Thanks: David Rijsman
7771[DESCRIPTION]
7772Fixed explanation of ES_FIX and ES_NOFIX for advisors
7773(description was mixed up).
7774
7775[ENTRY]
7776Module: other
7777What: change
7778Rank: minor
7779[DESCRIPTION]
7780The configure script now always uses the Microsoft compiler on Windows. Use
7781the CC and CXX environment variables to override this if you want to use
7782gcc.
7783
7784[ENTRY]
7785Module: int
7786What: new
7787Rank: minor
7788[DESCRIPTION]
7789Added domain consistent multiplication propagator.
7790
7791[ENTRY]
7792Module: kernel
7793What: bug
7794Rank: major
7795Thanks: Filip Konvicka
7796[DESCRIPTION]
7797Generated variable stubs were wrong (could only be observed for
7798new variable types).
7799
7800[ENTRY]
7801Module: int
7802What: bug
7803Rank: minor
7804Thanks: David Rijsman
7805[DESCRIPTION]
7806Cumulatives did not do all the pruning it should do.
7807
7808[ENTRY]
7809Module: int
7810What: bug
7811Rank: minor
7812[DESCRIPTION]
7813Fixed bug in element with IntArgs and sharing between the two IntVars.
7814
7815[ENTRY]
7816Module: int
7817What: bug
7818Rank: minor
7819Thanks: Jaroslav Mlejnek
7820[DESCRIPTION]
7821Fixed bug in sqrt.
7822
7823[ENTRY]
7824Module: int
7825What: bug
7826Rank: minor
7827Thanks: David Rijsman
7828[DESCRIPTION]
7829Fixed bug in ValSplitMin::branchingSpec.
7830
7831[ENTRY]
7832Module: kernel
7833What: removed
7834Rank: minor
7835[DESCRIPTION]
7836Removed ViewTuple. Just not useful enough...
7837
7838[ENTRY]
7839Module: kernel
7840What: change
7841Rank: minor
7842[DESCRIPTION]
7843Cleaned up Reflection::Var type, overloading did not conform to the C++
7844standard.
7845
7846[ENTRY]
7847Module: int
7848What: new
7849Rank: minor
7850[DESCRIPTION]
7851Added domain consistent minimum (min) and maximum (max) propagators.
7852
7853[ENTRY]
7854Module: int
7855What: new
7856Rank: minor
7857[DESCRIPTION]
7858Added domain consistent square root propagator (sqrt).
7859
7860[ENTRY]
7861Module: int
7862What: new
7863Rank: minor
7864[DESCRIPTION]
7865Added domain consistent squaring propagator (sqr).
7866
7867[ENTRY]
7868Module: int
7869What: documentation
7870Rank: minor
7871[DESCRIPTION]
7872Added documentation for domain consistent absolute value (abs) propagator.
7873
7874[ENTRY]
7875Module: int
7876What: new
7877Rank: minor
7878[DESCRIPTION]
7879Added reified propagators for relations over Boolean variables.
7880
7881[RELEASE]
7882Version: 2.1.1
7883Date: 2008-03-06
7884[DESCRIPTION]
7885This is a bugfix release.
7886
7887[ENTRY]
7888Module: int
7889What: bug
7890Rank: minor
7891[DESCRIPTION]
7892Non-shared copying of dfa was broken (matters only for parallel execution).
7893
7894[ENTRY]
7895Module: kernel
7896What: bug
7897Rank: major
7898[DESCRIPTION]
7899The generated med_updated function was incorrect, resulting in potential
7900crashes of programs that use SetVars.
7901
7902[ENTRY]
7903Module: cpltset
7904What: documentation
7905Rank: minor
7906[DESCRIPTION]
7907The CpltSet variables are now in the correct documentation group.
7908
7909[ENTRY]
7910Module: gist
7911What: bug
7912Rank: minor
7913[DESCRIPTION]
7914Fixed redraw artefacts on Windows.
7915
7916[ENTRY]
7917Module: other
7918What: bug
7919Rank: minor
7920[DESCRIPTION]
7921Fixed boost serialization.
7922
7923[ENTRY]
7924Module: kernel
7925What: bug
7926Rank: minor
7927[DESCRIPTION]
7928Made the constructor of Reflection::Var explicit, otherwise overloading for
7929output stream operators does not work as expected.
7930
7931
7932[RELEASE]
7933Version: 2.1.0
7934Date: 2008-02-29
7935[DESCRIPTION]
7936This release makes two essential contributions: a partly
7937reimplemented kernel that is faster, is simpler, and uses less
7938memory and lots of small and not so small fixes. This release is
7939the first release where really everything that we can test
7940(rather than everything that we initially believed to matter) has
7941been systematically tested. So, better switch now to 2.1.0!
7942
7943Apart from that, the value range for variables has been increased
7944(basically, 32 bits minus three values, so that is 32 bits), the reflection
7945API is now fully functional and no longer considered experimental, and we have
7946the usual small additions.
7947
7948
7949[ENTRY]
7950Module: int
7951What: new
7952Rank: minor
7953[DESCRIPTION]
7954Added interface to extensional constraints defined by TupleSets with
7955BoolVars.
7956
7957[ENTRY]
7958Module: minimodel
7959What: bug
7960Rank: major
7961[DESCRIPTION]
7962Reimplemented linear expressions from scratch, they were just
7963hopelessly screwed.
7964
7965[ENTRY]
7966Module: minimodel
7967What: bug
7968Rank: minor
7969[DESCRIPTION]
7970Added work-around for compiler bug in MSVC.
7971
7972[ENTRY]
7973Module: minimodel
7974What: new
7975Rank: minor
7976[DESCRIPTION]
7977Support reified linear expressions with Boolean variables.
7978
7979[ENTRY]
7980Module: int
7981What: change
7982Rank: minor
7983[DESCRIPTION]
7984Throw an exception if variables occur multiply for array-based
7985channel constraints.
7986
7987[ENTRY]
7988Module: int
7989What: bug
7990Rank: minor
7991[DESCRIPTION]
7992Fixed multiplication propagator for x*y=x.
7993
7994[ENTRY]
7995Module: search
7996What: change
7997Rank: major
7998[DESCRIPTION]
7999All search engines now take an option value for configuration
8000instead of individual arguments for recomputation, stop objects,
8001etc.
8002
8003[ENTRY]
8004Module: minimodel
8005What: removed
8006Rank: minor
8007[DESCRIPTION]
8008Removed scheduling abstractions.
8009
8010[ENTRY]
8011Module: int
8012What: removed
8013Rank: minor
8014[DESCRIPTION]
8015Removed extensional constraints with offset arguments.
8016
8017[ENTRY]
8018Module: minimodel
8019What: new
8020Rank: minor
8021[DESCRIPTION]
8022All minimodel functionality now understands both IntConLevel and
8023PropKind arguments.
8024
8025[ENTRY]
8026Module: set
8027What: bug
8028Rank: major
8029[DESCRIPTION]
8030Fixed bugs in several set constraints:
8031rel(Space*,SetVar,IntRelType irt,IntVar) for irt=IRT_NQ,
8032rel(Space*,SetVar,SetOpType sot,const IntSet&,SetRelType srt,SetVar) for
8033sot=SOT_MINUS, srt=SRT_SUP, selectDisjoint, selectUnion with constant IntSet
8034arguments, dom with SRT_NQ.
8035
8036[ENTRY]
8037Module: kernel
8038What: bug
8039Rank: minor
8040[DESCRIPTION]
8041Fixed bug in unreflection of empty VarArrays.
8042
8043[ENTRY]
8044Module: linear
8045What: bug
8046Rank: major
8047[DESCRIPTION]
8048Fixed overflow checking error in linear constraints.
8049
8050[ENTRY]
8051Module: minimodel
8052What: new
8053Rank: minor
8054[DESCRIPTION]
8055Added sqrt function.
8056
8057[ENTRY]
8058Module: int
8059What: new
8060Rank: minor
8061[DESCRIPTION]
8062Added sqrt propagator.
8063
8064[ENTRY]
8065Module: int
8066What: new
8067Rank: minor
8068[DESCRIPTION]
8069Added sqr post function.
8070
8071[ENTRY]
8072Module: int
8073What: bug
8074Rank: minor
8075[DESCRIPTION]
8076The overloaded versions of dom for variable arrays could not be
8077resolved automatically.
8078
8079[ENTRY]
8080Module: int
8081What: new
8082Rank: minor
8083[DESCRIPTION]
8084Added missing branching for INT_VAR_SIZE_DEGREE_MIN and
8085INT_VAR_SIZE_DEGREE_MAX for Boolean variables.
8086
8087[ENTRY]
8088Module: minimodel
8089What: bug
8090Rank: major
8091Thanks: Stanimir Dragiev
8092[DESCRIPTION]
8093Fixed bug in posting linear expressions.
8094
8095[ENTRY]
8096Module: int
8097What: performance
8098Rank: minor
8099[DESCRIPTION]
8100IntSet have been reimplemented for efficiency.
8101
8102[ENTRY]
8103Module: other
8104What: documentation
8105Rank: minor
8106Thanks: Martin Mann
8107[DESCRIPTION]
8108Function prototypes are now highlighted in the detailed function documentation.
8109
8110[ENTRY]
8111Module: int
8112What: removed
8113Rank: minor
8114[DESCRIPTION]
8115The offset arguments for element constraints have been removed, as you can
8116simply add dummy elements to the array to achieve the same effect.
8117
8118[ENTRY]
8119Module: set
8120What: removed
8121Rank: minor
8122[DESCRIPTION]
8123The offset arguments for selection constraints have been removed, as you can
8124simply add dummy elements to the array to achieve the same effect.
8125
8126[ENTRY]
8127Module: other
8128What: new
8129Rank: major
8130[DESCRIPTION]
8131The serialization library now contains a registry of all the %Gecode post
8132functions. This makes interfacing to %Gecode much easier. The registry is
8133automatically generated from the post functions defined in gecode/int.hh and
8134gecode/set.hh.
8135
8136[ENTRY]
8137Module: kernel
8138What: change
8139Rank: minor
8140[DESCRIPTION]
8141Cleaned up reflection. Unreflection is now part of the kernel instead of the
8142serialization library. Branchings now provide a human-readable description of
8143a BranchingDesc. The name function of a Propagator has been renamed to ati
8144(actor type identifier). All reflection is now const where possible.
8145Unreflection of variables now checks dynamically that the variable types
8146match. Unreflection of propagators checks the number of arguments. A
8147tutorial-style section on reflection has been added to the documentation.
8148
8149[ENTRY]
8150Module: set
8151What: change
8152Rank: major
8153[DESCRIPTION]
8154The limits for set variables have been moved from Limits::Set to
8155Set::Limits.
8156
8157The range of set variables has been adapted to the range of
8158integer variables. For example, on a standard machine
8159(regardless of 32 or 64 bits), a set can hold values from -2^30+2
8160to 2^30-2, its maximum cardinality therefore is 2^31-3.
8161
8162[ENTRY]
8163Module: int
8164What: change
8165Rank: major
8166[DESCRIPTION]
8167The limits for set variables have been moved from Limits::Set to
8168Set::Limits.
8169
8170The range of integer variables have been extended by one bit. For
8171example, on a standard machine (regardless of 32 or 64 bits), the
8172largest possible integer value for an integer variable is 2^31-2,
8173the smallest -2^31+2. With other words, only the integer values
81742^31-1, -2^31, and -2^31+1 are missing from the two-complement
8175representation (and we will never use these values for the sake
8176of mental sanity. We promise.).
8177
8178[ENTRY]
8179Module: int
8180What: bug
8181Rank: minor
8182[DESCRIPTION]
8183Distinct with integer offsets checks accurately for overflow now.
8184
8185[ENTRY]
8186Module: int
8187What: performance
8188Rank: minor
8189[DESCRIPTION]
8190Boolean variables consume 20% less memory.
8191
8192[ENTRY]
8193Module: kernel
8194What: change
8195Rank: major
8196[DESCRIPTION]
8197Only stable and non-failed spaces can be cloned, otherwise
8198Space::clone raises an exception. This makes cloning and
8199propagation fully orthogonal. To emulate the old behavior, just
8200execute Space::status before Space::clone.
8201
8202[ENTRY]
8203Module: kernel
8204What: change
8205Rank: minor
8206[DESCRIPTION]
8207The number of propagators and branchings can be accurately
8208retrieved from both failed and non-stable spaces.
8209
8210[ENTRY]
8211Module: examples
8212What: new
8213Rank: minor
8214[DESCRIPTION]
8215Added an example that interprets a JavaScript program and runs a search of the
8216model that the program encodes. This is an example of how to use the
8217JavaScript interpreter. A simple JavaScript model for n-Queens has been added,
8218too.
8219
8220[ENTRY]
8221Module: kernel
8222What: new
8223Rank: minor
8224[DESCRIPTION]
8225A generic variable class has been added that can be used for interfacing. It
8226can store arbitrary %Gecode variables (e.g. IntVar and SetVar), and cast them
8227back using a run-time type check. The update, reflection, and output
8228operations are implemented through the reflection registry.
8229
8230[ENTRY]
8231Module: other
8232What: new
8233Rank: major
8234[DESCRIPTION]
8235(De-)Serialization to and from JavaScript added.
8236
8237[ENTRY]
8238Module: other
8239What: change
8240Rank: major
8241[DESCRIPTION]
8242Both the cost and propagate function of a propagator take the
8243current modification event delta as input. Likewise,
8244retrieving the modification event for a particular View must use
8245the static function View::me with the passed
8246modification event delta. Again, this feature committed the kernel to a
8247particular implementation which might not be available in the
8248future.
8249
8250[ENTRY]
8251Module: kernel
8252What: change
8253Rank: minor
8254[DESCRIPTION]
8255Views and variables do not any longer reveal whether they have
8256been modified: this feature committed the kernel to a particular
8257implementation which might not be available in the future.
8258
8259[ENTRY]
8260Module: example
8261What: new
8262Rank: minor
8263[DESCRIPTION]
8264Simple Singleton Arc Consistency pre-processing has been added as an
8265optional step for examples.
8266
8267[ENTRY]
8268Module: kernel
8269What: change
8270Rank: major
8271[DESCRIPTION]
8272The kernel has undergone some cleanups and improvements (much of
8273it got actually reimplemented):
8274 - Automatically generated stubs for variable implementations are directly
8275 inlined into the kernel. This improves performance, but more
8276 importantly, lifts some limits on the number of variables. Now, the
8277 only limit is that the sum of the ceiling of the logarithms of the
8278 number of modification events of all variables does not exceed 32
8279 (as an estimate, the kernel now can handle around 10 to 16 variable
8280 types). Moreover, if the need for more variable types arises this is
8281 straightforward to do.
8282 - The addition of new variable types for users has been simplified.
8283 - The main propagation loop has been entirely rewritten (much much simpler).
8284 Now, the kernel does not optimize any longer for the case that a
8285 variable is modified more than once during propagator execution.
8286 While this changes the asymptotic complexity, it reduces the propagator
8287 execution overhead by up to 30%. And a propagator is still free
8288 to make sure that a variable is modified only once (many propagators
8289 do that already).
8290 - Variable implementations became smaller by one word. Now variable
8291 implementations are optimal in the sense that no additional memory
8292 is needed for cloning or book-keeping, the memory required for
8293 propagation is sufficient.
8294 - Spaces have lost some weight as memory for datastructures only used
8295 during cloning or propagation are shared (saves some 25% of memory
8296 per space).
8297
8298[ENTRY]
8299Module: kernel
8300What: change
8301Rank: major
8302[DESCRIPTION]
8303Propagator modification events have been renamed to modification event
8304deltas (because that is what they are).
8305
8306[ENTRY]
8307Module: kernel
8308What: change
8309Rank: minor
8310[DESCRIPTION]
8311To not confuse variable implementations with variables, variable
8312implementations are now always called VarImp, and not Variable.
8313
8314[ENTRY]
8315Module: gist
8316What: new
8317Rank: major
8318[DESCRIPTION]
8319The %Gecode Interactive Search Tool (Gist), a Qt-based graphical search
8320engine, is now part of the main %Gecode distribution. It is currently included
8321as an experimental beta preview and may not be completely stable yet.
8322
8323
8324[RELEASE]
8325Version: 2.0.1
8326Date: 2008-02-07
8327[DESCRIPTION]
8328This is a bug-fix only release. Very unfortunately, it fixes
8329three serious bugs in search (LDS, Restart, and assignment
8330branchings). We highly encourage you to switch to Gecode 2.0.1 as
8331soon as possible.
8332
8333[ENTRY]
8334Module: test
8335What: bug
8336Rank: minor
8337[DESCRIPTION]
8338Fixed memory leak in reflection tests.
8339
8340[ENTRY]
8341Module: set
8342What: bug
8343Rank: minor
8344[DESCRIPTION]
8345Fixed memory leak in set projection propagators.
8346
8347[ENTRY]
8348Module: int
8349What: bug
8350Rank: minor
8351[DESCRIPTION]
8352Fixed memory leak in IntSet.
8353
8354[ENTRY]
8355Module: test
8356What: new
8357Rank: major
8358[DESCRIPTION]
8359Added comprehensive tests for all search engines.
8360
8361[ENTRY]
8362Module: search
8363What: bug
8364Rank: major
8365[DESCRIPTION]
8366Assignment branchings wrongly reported that they feature two alternatives
8367rather than one.
8368
8369[ENTRY]
8370Module: search
8371What: bug
8372Rank: major
8373Thanks: Stefano Gualandi
8374[DESCRIPTION]
8375LDS had numerous quirks. It has been fixed and greatly improved:
8376it detects when the entire search tree has been probed,
8377independent of the maximal discrepancy.
8378
8379[ENTRY]
8380Module: search
8381What: bug
8382Rank: major
8383Thanks: Stefano Gualandi
8384[DESCRIPTION]
8385Restart was broken in case the problem failed immediately with
8386propagation only, both when being initialized or when requesting
8387a next solution.
8388
8389[ENTRY]
8390Module: iter
8391What: bug
8392Rank: minor
8393Thanks: David Barton
8394[DESCRIPTION]
8395Changed Ranges::Diff to make older versions of gcc happy.
8396
8397[ENTRY]
8398Module: other
8399What: bug
8400Rank: minor
8401Thanks: David Barton
8402[DESCRIPTION]
8403Fixed linking order so that static linking works again.
8404
8405[ENTRY]
8406Module: int
8407What: new
8408Rank: minor
8409Thanks: Mohamad Rabbath
8410[DESCRIPTION]
8411Re-added reified linear constraints for Boolean variables.
8412
8413[ENTRY]
8414Module: int
8415What: bug
8416Rank: minor
8417[DESCRIPTION]
8418Domain-consistent abs could crash in certain (extremely rare) border cases.
8419
8420[ENTRY]
8421Module: kernel
8422What: bug
8423Rank: major
8424[DESCRIPTION]
8425Static initialization order was undefined, making reflection work unreliably.
8426In particular, linking Gecode statically did not work.
8427
8428[ENTRY]
8429Module: int
8430What: bug
8431Rank: minor
8432[DESCRIPTION]
8433Initializing an IntVar with an empty IntSet did not throw the appropriate
8434exception but crashed.
8435
8436[ENTRY]
8437Module: kernel
8438What: bug
8439Rank: minor
8440[DESCRIPTION]
8441Exceptions did not have rtti information when compiled with gcc and
8442visibility, which meant that they could not be caught.
8443
8444[ENTRY]
8445Module: example
8446What: bug
8447Rank: minor
8448Thanks: Helmut Simonis
8449[DESCRIPTION]
8450Fixed a bug and quirk in %Kakuro puzzles.
8451
8452[ENTRY]
8453Module: kernel
8454What: change
8455Rank: minor
8456[DESCRIPTION]
8457The VarMapIter can now return both a specification and the actual VarBase* of
8458the currently iterated variable.
8459
8460[ENTRY]
8461Module: other
8462What: bug
8463Rank: minor
8464[DESCRIPTION]
8465Revived boost serialization. The serialization functions will be compiled if
8466Gecode is configured with --with-boost.
8467
8468[ENTRY]
8469Module: kernel
8470What: performance
8471Rank: minor
8472[DESCRIPTION]
8473Be less aggressive in increasing size of heap chunks.
8474
8475[ENTRY]
8476Module: int
8477What: documentation
8478Rank: minor
8479[DESCRIPTION]
8480Fixed bug in documentation of table-based extensional constraint.
8481
8482[ENTRY]
8483Module: kernel
8484What: bug
8485Rank: minor
8486[DESCRIPTION]
8487Fixed a bug in the hash function for pointers, which could return
8488negative array indices.
8489
8490
8491
8492[RELEASE]
8493Version: 2.0.0
8494Date: 2007-11-14
8495[DESCRIPTION]
8496As witnessed by the version number change, this is a major
8497release with too many changes, fixes, and additions to mention
8498them all: please consult the changelog.
8499
8500The highlights are:
8501 - New propagators: channeling between Integer variable and array
8502 of Boolean variables, circuit, table constraint (extensional),
8503 incremental regular constraint (extensional), incremental
8504 Boolean linear constraints
8505 - Boolean variables have a dedicated implementation: twice as
8506 fast, half the memory
8507 - Advisors for incremental propagation (see: Lagerkvist,
8508 Schulte, Advisors for Incremental Propagation, CP 2007)
8509 - Many crucial performance and scalability improvements: memory
8510 management, memory footprint of propagators
8511 - Many cleanups and more documentation, many new examples
8512 - New set variables with complete domain representation
8513 (CpltSetVar) [experimental]
8514 - A reflection API to query spaces about their propagators
8515 [experimental]
8516
8517The features marked as experimental are all functional, but might
8518be revised in the next releases.
8519
8520As %Gecode 2.0.0 is a major release, you might have to adapt your
8521programs: \ref PageHowToChange_2 "How to Change to Gecode 2.0.0".
8522
8523[ENTRY]
8524Module: int
8525What: new
8526Rank: major
8527[DESCRIPTION]
8528Added table-based extensional constraint.
8529
8530[ENTRY]
8531Module: other
8532What: new
8533Rank: minor
8534[DESCRIPTION]
8535When compiling with gcc, the default visibility of symbols in the
8536generated dynamic library is set to hidden.
8537
8538[ENTRY]
8539Module: set
8540What: removed
8541Rank: minor
8542[DESCRIPTION]
8543Removed buggy distinct propagator for finite sets.
8544
8545[ENTRY]
8546Module: example
8547What: new
8548Rank: minor
8549Thanks: Helmut Simonis
8550[DESCRIPTION]
8551New example: %Kakuro puzzles.
8552
8553[ENTRY]
8554Module: other
8555What: new
8556Rank: minor
8557Thanks: Martin Mann
8558[DESCRIPTION]
8559Added dist and distdir targets for creating source distribution.
8560
8561[ENTRY]
8562Module: other
8563What: new
8564Rank: minor
8565Thanks: Filip Konvicka
8566[DESCRIPTION]
8567On windows with MSVC, always build program database files to ease
8568debugging of applications using %Gecode (files are also included in
8569packages).
8570
8571[ENTRY]
8572Module: int
8573What: new
8574Rank: minor
8575[DESCRIPTION]
8576Added new variable selection based on largest or smallest
8577quotient of size and degree.
8578
8579[ENTRY]
8580Module: other
8581What: new
8582Rank: minor
8583[DESCRIPTION]
8584Variable arrays, view arrays, and argument arrays can directly be
8585printed on standard output streams.
8586
8587[ENTRY]
8588Module: other
8589What: change
8590Rank: minor
8591[DESCRIPTION]
8592The structure of includes has been drastically
8593simplified. Support for iterators ("gecode/iter.hh") is
8594automatically included with integers ("gecode/int.hh") and sets
8595("gecode/set.hh"). Likewise, all support functionality becomes
8596available by including "gecode/support.hh" (one can assume that
8597this is included in "gecode/kernel.hh").
8598
8599[ENTRY]
8600Module: kernel
8601What: change
8602Rank: minor
8603[DESCRIPTION]
8604Shared arrays are now available in the kernel (where they properly
8605belong). This entails that they are available in the Gecode
8606namespace and not in Gecode::Support.
8607
8608[ENTRY]
8609Module: int
8610What: change
8611Rank: minor
8612[DESCRIPTION]
8613The extensional constraint specified by a DFA or a regular
8614expression (formerly known as regular) is now named "extensional"
8615rather than "regular".
8616
8617[ENTRY]
8618Module: minimodel
8619What: bug
8620Rank: minor
8621[DESCRIPTION]
8622Fixed small quirk in posting an absolute propagator via a function.
8623
8624[ENTRY]
8625Module: set
8626What: new
8627Rank: minor
8628[DESCRIPTION]
8629Added channeling propagator between a SetVar and a BoolVarArray
8630that propagates the characteristic function of the set to the
8631Boolean variables.
8632
8633[ENTRY]
8634Module: set
8635What: performance
8636Rank: minor
8637[DESCRIPTION]
8638Changed the datastructure for set variables to use singly-linked
8639lists.
8640
8641[ENTRY]
8642Module: other
8643What: change
8644Rank: minor
8645[DESCRIPTION]
8646The values (and types) for selecting how to branch have been made
8647uniform for all variables types: they start with INT_ (or SET_ or
8648CPLTSET_), followed by either VAL or VAR and the respective
8649strategy.
8650
8651[ENTRY]
8652Module: int
8653What: change
8654Rank: minor
8655[DESCRIPTION]
8656The interface for the global cardinality constraint has been simplified.
8657The constraint is now called count.
8658
8659[ENTRY]
8660Module: int
8661What: change
8662Rank: minor
8663[DESCRIPTION]
8664Regular expressions (REG) have been moved from the integer module to
8665the minimodel module.
8666
8667[ENTRY]
8668Module: example
8669What: change
8670Rank: major
8671[DESCRIPTION]
8672Most examples have been cleaned up.
8673
8674[ENTRY]
8675Module: example
8676What: change
8677Rank: minor
8678[DESCRIPTION]
8679Parsing of commandline arguments has been completely redone and
8680is much more extensible and flexible.
8681
8682[ENTRY]
8683Module: other
8684What: change
8685Rank: minor
8686[DESCRIPTION]
8687All of %Gecode has been put under the MIT license (which the
8688previous license was a simple rewording of).
8689
8690[ENTRY]
8691Module: other
8692What: bug
8693Rank: minor
8694[DESCRIPTION]
8695Removed huge number of casts that could (only potentially)
8696compromise portability.
8697
8698[ENTRY]
8699Module: set
8700What: new
8701Rank: minor
8702[DESCRIPTION]
8703Finite set projectors can now be specified using formulas, in addition to
8704set expressions.
8705
8706[ENTRY]
8707Module: cpltset
8708What: new
8709Rank: major
8710[DESCRIPTION]
8711Finite integer set variables with complete domain representation,
8712based on binary decision diagrams (BDDs), have been added as a
8713new variable type.
8714
8715[ENTRY]
8716Module: kernel
8717What: new
8718Rank: major
8719[DESCRIPTION]
8720A reflection API has been added, which allows querying spaces
8721about the variables and propagators they contain.
8722
8723[ENTRY]
8724Module: kernel
8725What: bug
8726Rank: major
8727[DESCRIPTION]
8728Branching ids were not properly initialized. This was a serious
8729problem if you posted branchings in spaces other than the root
8730space.
8731
8732[ENTRY]
8733Module: int
8734What: change
8735Rank: major
8736[DESCRIPTION]
8737Iterator-based domain operations have been renamed,
8738reimplemented, and extended. Now operations for both range and
8739value iterators are supported and the operations can be told to
8740perform more efficient destructive updates.
8741
8742[ENTRY]
8743Module: int
8744What: change
8745Rank: minor
8746[DESCRIPTION]
8747Sortedness constraints have been renamed to sorted constraints.
8748
8749[ENTRY]
8750Module: kernel
8751What: change
8752Rank: minor
8753[DESCRIPTION]
8754VarArrays can now be resized dynamically.
8755
8756[ENTRY]
8757Module: int
8758What: performance
8759Rank: major
8760[DESCRIPTION]
8761Boolean linear equations and inequalities with constant
8762right-hand sides use constant time propagators whenever
8763appropriate (linear time with less overhead and memory for
8764propagators with few variables).
8765
8766[ENTRY]
8767Module: kernel
8768What: new
8769Rank: major
8770[DESCRIPTION]
8771Added advisors as an abstraction for incremental propagation:
8772advisors are executed for their propagator whenever their view
8773changes. Advisors, when not being used, add one word of overhead
8774to each variable and slow down the system in the worst case by
8775less than 1%. In average, no slowdown can be observed.
8776
8777[ENTRY]
8778Module: int
8779What: bug
8780Rank: minor
8781[DESCRIPTION]
8782Fixed a border-case bug for n-ary Boolean conjunction and disjunction.
8783
8784[ENTRY]
8785Module: kernel
8786What: new
8787Rank: minor
8788[DESCRIPTION]
8789A new propagation condition PC_GEN_NONE (and hence, PC_INT_NONE,
8790...) has been introduced. Propagator patterns with this
8791propagation condition now do not create any subscriptions.
8792
8793[ENTRY]
8794Module: int
8795What: performance
8796Rank: major
8797[DESCRIPTION]
8798The regular constraint has been reimplemented, the new version
8799runs more than twice as fast.
8800
8801[ENTRY]
8802Module: example
8803What: new
8804Rank: minor
8805[DESCRIPTION]
8806Added a model for the traveling salesman problem, mostly
8807intended to exercise the new circuit constraint (as the model is not
8808very competitive).
8809
8810[ENTRY]
8811Module: kernel
8812What: new
8813Rank: major
8814[DESCRIPTION]
8815Support for reference-counted shared objects added: they handle
8816both reference counting as well as non-shared copying. This fixes
8817some bugs with the handling of shared arrays, integer sets, and
8818finite automata.
8819
8820
8821[ENTRY]
8822Module: example
8823What: bug
8824Rank: minor
8825[DESCRIPTION]
8826Examples reported wrong number of propagator invocations (the
8827invocations for problem setup were missing).
8828
8829[ENTRY]
8830Module: kernel
8831What: new
8832Rank: major
8833[DESCRIPTION]
8834Added classes for shared objects and handles. Handles to shared
8835objects allow to either share copies among spaces when being
8836copied or to create a new shared copy, if requested.
8837
8838[ENTRY]
8839Module: int
8840What: new
8841Rank: minor
8842Thanks: Martin Mann
8843[DESCRIPTION]
8844Added a new version of count (and also atleast, atmost, exactly)
8845that counts the number of variables equal to integers in an
8846array.
8847
8848[ENTRY]
8849Module: example
8850What: bug
8851Rank: minor
8852Bug: 50
8853[DESCRIPTION]
8854The number of colors in graph-color was off by one.
8855
8856[ENTRY]
8857Module: int
8858What: new
8859Rank: major
8860[DESCRIPTION]
8861Added channel constraints that channel an integer variable to
8862either a single or an array of Boolean variables.
8863
8864[ENTRY]
8865Module: int
8866What: bug
8867Rank: minor
8868[DESCRIPTION]
8869Fixed bug in copying of n-ary or-propagator for a special boundary case.
8870
8871[ENTRY]
8872Module: int
8873What: new
8874Rank: minor
8875[DESCRIPTION]
8876Relaxed sharing restrictions for channel, in particular
8877channel(this, x, x) is allowed.
8878
8879[ENTRY]
8880Module: int
8881What: new
8882Rank: major
8883[DESCRIPTION]
8884Added propagators for the circuit constraint.
8885
8886[ENTRY]
8887Module: kernel
8888What: performance
8889Rank: minor
8890[DESCRIPTION]
8891Improved automatic memory management on Windows platforms.
8892
8893[ENTRY]
8894Module: int
8895What: performance
8896Rank: minor
8897[DESCRIPTION]
8898Domain consistent distinct and channel allocate memory from the
8899space heap now. Much simpler.
8900
8901[ENTRY]
8902Module: int
8903What: change
8904Rank: minor
8905[DESCRIPTION]
8906The Boolean tell operations one_none and zero_none now also
8907return a ModEvent and hence must be checked for failure. This is
8908needed for simpler advisors.
8909
8910[ENTRY]
8911Module: kernel
8912What: performance
8913Rank: major
8914[DESCRIPTION]
8915The memory management policies have been completely reworked. Now
8916memory requests are much more regular. Hence, memory is much more
8917likely to be returned to the operating system. Furthermore, the
8918flush member functions for actors have been removed (they were
8919unneeded) and actors and spaces now have allocated member
8920functions for returning how much memory is allocated by a space.
8921
8922Moreover, the memory reported by some propagators has been
8923ignored. Note that this flaw did not affect the benchmark figures
8924on the %Gecode webpage.
8925
8926[ENTRY]
8927Module: int
8928What: performance
8929Rank: minor
8930[DESCRIPTION]
8931The multiplication uses integer precision if possible for better
8932performance.
8933
8934[ENTRY]
8935Module: int
8936What: change
8937Rank: minor
8938[DESCRIPTION]
8939Integer and Boolean variables are now guaranteed to be
8940inspectable (that is, all const member functions work on them),
8941even though a space is failed. However, the variables might have
8942been modified during a tell operation that has failed.
8943
8944[ENTRY]
8945Module: minimodel
8946What: change
8947Rank: major
8948[DESCRIPTION]
8949Linear expressions and relations can also be created from Boolean
8950variables, with the restriction that Boolean relations cannot be
8951reified.
8952
8953[ENTRY]
8954Module: int
8955What: change
8956Rank: major
8957[DESCRIPTION]
8958Boolean variables (and hence Boolean views) do not any longer
8959share the implementation with integer variables. That has the
8960following consequences:
8961- Boolean variables are not any longer integer variables. The same
8962 holds true for arrays of variables.
8963- All constraints that make sense for both Boolean and integer
8964 variables have post functions that support both integer and
8965 Boolean variables.
8966- Memory for Boolean variables is reduced by 50% and performance
8967 increases in problems with many Boolean variables by up to 50%.
8968
8969[ENTRY]
8970Module: int
8971What: new
8972Rank: major
8973[DESCRIPTION]
8974Added propagators for linear constraints over Boolean variables,
8975in particular specialized and efficient versions for non-unit
8976coefficients.
8977
8978[ENTRY]
8979Module: int
8980What: change
8981Rank: minor
8982[DESCRIPTION]
8983The linear constraints are now more careful (that is, they will
8984use more efficient versions more often if it is safe) to
8985determine whether overflow occurs and which precision (integer or
8986double) should be chosen.
8987
8988[ENTRY]
8989Module: int
8990What: change
8991Rank: minor
8992[DESCRIPTION]
8993The element constraints now accept an additional offset argument.
8994
8995[ENTRY]
8996Module: set
8997What: new
8998Rank: minor
8999[DESCRIPTION]
9000Added selection and reified relation constraints with constant sets.
9001
9002[ENTRY]
9003Module: set
9004What: change
9005Rank: minor
9006[DESCRIPTION]
9007Slightly stronger inferences for the finite set sequence and selection
9008constraints.
9009
9010[ENTRY]
9011Module: example
9012What: new
9013Rank: minor
9014[DESCRIPTION]
9015New example: the balanced academic curriculum problem (problem 030 from
9016CSPlib).
9017
9018[ENTRY]
9019Module: set
9020What: bug
9021Rank: minor
9022[DESCRIPTION]
9023Fixed the n-ary partition propagator to handle overflow of the sum of
9024cardinalities correctly.
9025
9026[ENTRY]
9027Module: kernel
9028What: bug
9029Rank: minor
9030[DESCRIPTION]
9031Subscription to constant views now should use the propagate
9032member function from a variable implementation: it guarantees
9033execution of a propagator at least once (int and set views have
9034been adopted accordingly).
9035
9036[ENTRY]
9037Module: int
9038What: bug
9039Rank: major
9040Bug: 48
9041[DESCRIPTION]
9042Branching on maximum regret would always crash on non-range domains.
9043
9044[ENTRY]
9045Module: set
9046What: change
9047Rank: minor
9048[DESCRIPTION]
9049The finite set selection propagators accept an additional
9050argument that specifies where the indexing should start. It
9051should make some models more natural to express, and helps in
9052porting code from other systems, such as Prolog or Mozart. In
9053addition, the selectUnion propagator is now hand-written again,
9054resulting in better performance.
9055
9056[ENTRY]
9057Module: int
9058What: change
9059Rank: major
9060[DESCRIPTION]
9061All Boolean constraints got a new and regular interface. Rather
9062than providing different post functions for the different
9063constraints, the single post function rel is used: the Boolean
9064operation then is described by a value of type BoolOpType. In
9065addition, all Boolean propagators have been reimplemented for
9066better performance and less memory use.
9067
9068[ENTRY]
9069Module: test
9070What: new
9071Rank: minor
9072[DESCRIPTION]
9073Added simple testing for branchings.
9074
9075[ENTRY]
9076Module: kernel
9077What: change
9078Rank: major
9079[DESCRIPTION]
9080The way how propagators report subsumption and partial fixpoints
9081has changed. Now, a propagator must first call dispose (which
9082then cancels subscriptions and possibly frees external resources)
9083and only then can return that the propagator is subsumed. For
9084that purpose a new function Gecode::ES_SUBSUMED has been
9085defined. Likewise, ES_FIX_PARTIAL and ES_NOFIX_PARTIAL are
9086functions rather than member functions of Gecode::Propagator. The
9087benefit is that this saves memory and is more efficient.
9088
9089[ENTRY]
9090Module: int
9091What: change
9092Rank: minor
9093[DESCRIPTION]
9094The use of the consistency options were a little confusing, now
9095the rule is: the level of consistency increases from ICL_VAL to
9096ICL_BND to ICL_DOM.
9097
9098[ENTRY]
9099Module: minimodel
9100What: performance
9101Rank: minor
9102[DESCRIPTION]
9103Boolean expressions erroneously decomposed into ternary Boolean
9104constraints, while not incorrect rather inefficient for large
9105Boolean expressions.
9106
9107[ENTRY]
9108Module: kernel
9109What: change
9110Rank: minor
9111[DESCRIPTION]
9112Made all macros type safe.
9113
9114[ENTRY]
9115Module: kernel
9116What: new
9117Rank: major
9118[DESCRIPTION]
9119Added macro GECODE_REWRITE for rewriting propagators. It is strongly advised
9120to always use this macro!
9121
9122[ENTRY]
9123Module: example
9124What: bug
9125Rank: minor
9126Bug: 46
9127[DESCRIPTION]
9128Orientation of Sudokus now match the orientation in the specification-file.
9129
9130[ENTRY]
9131Module: example
9132What: new
9133Rank: minor
9134[DESCRIPTION]
9135New example: MineSweeper.
9136
9137[ENTRY]
9138Module: example
9139What: new
9140Rank: minor
9141[DESCRIPTION]
9142New example: Domino.
9143
9144[ENTRY]
9145Module: set
9146What: bug
9147Rank: minor
9148[DESCRIPTION]
9149Set projectors could subscribe with bogus propagation conditions.
9150
9151[ENTRY]
9152Module: set
9153What: performance
9154Rank: minor
9155[DESCRIPTION]
9156Performance of the tell operations on finite set variables was
9157improved. Especially the intersect operation benefits from this.
9158
9159[ENTRY]
9160Module: int
9161What: new
9162Rank: minor
9163[DESCRIPTION]
9164The element constraint now also supports integer values as result.
9165
9166[ENTRY]
9167Module: kernel
9168What: new
9169Rank: minor
9170[DESCRIPTION]
9171Add a generic class for assignments during search (similar to
9172generic branchings for views and values).
9173
9174[ENTRY]
9175Module: int
9176What: change
9177Rank: minor
9178[DESCRIPTION]
9179All branching classes for value and view selection are now
9180parametric.
9181
9182[ENTRY]
9183Module: int
9184What: change
9185Rank: minor
9186[DESCRIPTION]
9187Boolean variables cannot longer be initialized from an integer
9188variable. If needed, a channel propagator must be posted (added).
9189
9190[ENTRY]
9191Module: int
9192What: change
9193Rank: minor
9194[DESCRIPTION]
9195The equality constraints have been replaced by a variant of rel.
9196
9197[ENTRY]
9198Module: kernel
9199What: change
9200Rank: minor
9201[DESCRIPTION]
9202The propagator abstractions Inhom* have been renamed to Mix*.
9203
9204[ENTRY]
9205Module: int
9206What: change
9207Rank: minor
9208[DESCRIPTION]
9209The operations t_one, t_one_none, t_zero, t_zero_none for Boolean
9210views have been renamed to one, one_none, zero, zero_none.
9211
9212[ENTRY]
9213Module: kernel
9214What: performance
9215Rank: major
9216[DESCRIPTION]
9217Explicit disposal of actors has been reimplemented (the old
9218design was nothing but darn stupid). The memory overhead of
9219propagators is reduced by 40% for most propagators and 20% for
9220all. That is, a binary propagator takes 30% less memory and a
9221ternary propagator takes 25% less memory. Programs with many
9222binary or ternary propagators can run up to 20% faster.
9223
9224[ENTRY]
9225Module: kernel
9226What: change
9227Rank: minor
9228[DESCRIPTION]
9229Propagators and branchings that require disposal when a space is
9230deleted must now be explicitly registered via a force function
9231and explicitly deregistered by an unforce function.
9232
9233[ENTRY]
9234Module: int
9235What: bug
9236Rank: minor
9237[DESCRIPTION]
9238Fixed memory leak in reified dom constraint.
9239
9240[ENTRY]
9241Module: set
9242What: bug
9243Rank: minor
9244[DESCRIPTION]
9245Fixed memory leak in distinct constraint for sets.
9246
9247[ENTRY]
9248Module: example
9249What: new
9250Rank: major
9251[DESCRIPTION]
9252New example: Pentominoes. The example uses extensional
9253constraints specified as regular expressions to place
9254irregular-shaped pieces on a board.
9255
9256
9257
9258[RELEASE]
9259Version: 1.3.1
9260Date: 2006-10-25
9261[DESCRIPTION]
9262This is a minor release which fixes a major bug (the first real
9263serious bug). Please update as soon as possible.
9264
9265[ENTRY]
9266Module: kernel
9267What: bug
9268Rank: major
9269Thanks: Rafael Meneses
9270[DESCRIPTION]
9271Branch&Bound search with ViewValBranchings (all standard branchings) together
9272with batch recomputation was severely broken. The problems ranged from wrong
9273search trees (missing solutions) to segmentation faults. The fix changes the
9274way assigned variables are removed from the array in a ViewValBranching.
9275
9276[ENTRY]
9277Module: int
9278What: bug
9279Rank: minor
9280[DESCRIPTION]
9281Bounds-consistent distinct catches border case when an assigned variable
9282during bounds propagation leads to value removal for value propagation.
9283
9284[ENTRY]
9285Module: int
9286What: performance
9287Rank: minor
9288[DESCRIPTION]
9289Bounds-consistent distinct eliminates assigned variables more
9290aggressively (can save up to 10% runtime in some cases).
9291
9292[ENTRY]
9293Module: int
9294What: bug
9295Rank: minor
9296Thanks: Alejandro Arbelaez
9297[DESCRIPTION]
9298IntVar::init now also raises exceptions for illegal domain specifications.
9299
9300
9301
9302
9303
9304[RELEASE]
9305Version: 1.3.0
9306Date: 2006-09-19
9307[DESCRIPTION]
9308This release adds a compiler for finite set projectors and provides new
9309infrastructure making it easier to add new variable domains. In addition,
9310it contains recent bug fixes and minor improvements.
9311
9312[ENTRY]
9313Module: set
9314What: new
9315Rank: major
9316[DESCRIPTION]
9317Compiler for finite set projectors. Given a specification of a finite set
9318constraint as a projector set, it generates C++ code for the corresponding
9319propagator. Together with the dynamic propagator for finite set projectors,
9320this implements the backend of the technique described in the paper
9321"Generating Propagators for Finite Set Constraints" (Tack, Schulte,
9322Smolka; CP 2006.).
9323
9324[ENTRY]
9325Module: other
9326What: new
9327Rank: minor
9328Thanks: Jorge Marques Pelizzoni
9329[DESCRIPTION]
9330Also pass options for linking standard libraries for MSVC.
9331
9332[ENTRY]
9333Module: other
9334What: bug
9335Rank: minor
9336[DESCRIPTION]
9337The pkg-config files now contain the correct path if you configured to the
9338default prefix (i.e. /usr/local).
9339
9340[ENTRY]
9341Module: minimodel
9342What: new
9343Rank: minor
9344[DESCRIPTION]
9345Added aliases lex, atleast, atmost, and exactly for the count constraint.
9346
9347[ENTRY]
9348Module: int
9349What: change
9350Rank: minor
9351[DESCRIPTION]
9352Renamed lex constraint to rel (as it also supports equality and disequality).
9353
9354[ENTRY]
9355Module: int
9356What: performance
9357Rank: minor
9358[DESCRIPTION]
9359Make count constraints with integer number of equal occurrences
9360more incremental using dynamic subscriptions (gives a 20-30%
9361speedup).
9362
9363[ENTRY]
9364Module: example
9365What: new
9366Rank: minor
9367[DESCRIPTION]
9368Added an example for solving Black Hole patience games.
9369
9370[ENTRY]
9371Module: kernel
9372What: new
9373Rank: major
9374[DESCRIPTION]
9375Subscription to variables now features an additional and optional
9376Boolean argument whether the propagator is to be processed. This
9377allows dynamically creation of subscriptions during propagation.
9378
9379[ENTRY]
9380Module: other
9381What: new
9382Rank: minor
9383[DESCRIPTION]
9384New configure switches: --enable-audit to include audit code, which may
9385contain expensive checks of internal invariants or alternative, checked
9386implementations of critical parts of %Gecode. --enable-universal and
9387--with-sdk, to support building universal binaries on Mac OS X.
9388
9389[ENTRY]
9390Module: kernel
9391What: new
9392Rank: minor
9393[DESCRIPTION]
9394Variables can now be deallocated when the Space is deallocated (for example in
9395case of failure). This is important in case a variable implementation needs to
9396reference external resources. Deallocation can be switched on in the
9397high-level description used for generating the variable implementation.
9398
9399[ENTRY]
9400Module: minimodel
9401What: bug
9402Rank: minor
9403Thanks: Rafael Meneses
9404[DESCRIPTION]
9405Under certain conditions (posting in a failed space), the post function
9406returned uninitialized variables.
9407
9408[ENTRY]
9409Module: kernel
9410What: performance
9411Rank: major
9412[DESCRIPTION]
9413Variable implementations are now generated from a high-level
9414description (taking care of all aspects relating to modification
9415events and propagation conditions). While simplifying the
9416implementation of new variable domains considerably, this also can,
9417in lucky cases, deliver a speed-up of 5%.
9418
9419[ENTRY]
9420Module: kernel
9421What: performance
9422Rank: major
9423[DESCRIPTION]
9424Allocate subscriptions in separate memory area. Can speedup execution
9425in some (but few) cases by up to 15-20%.
9426
9427[ENTRY]
9428Module: int
9429What: documentation
9430Rank: minor
9431Bug: 43
9432[DESCRIPTION]
9433Fixed documentation problem due to doxygen...
9434
9435[ENTRY]
9436Module: search
9437What: new
9438Rank: major
9439[DESCRIPTION]
9440Branch-and-bound search now interleaves recomputation with adding
9441bounding constraints. This can prune the search tree much
9442earlier: instead of recomputing many nodes from the same copy
9443node and then adding a constraint that fails all these nodes, it
9444might be possible to already fail the copy node directly. In
9445principle, the difference can be exponential, however for
9446examples we tried the effect is minor.
9447
9448[ENTRY]
9449Module: kernel
9450What: bug
9451Rank: minor
9452[DESCRIPTION]
9453Now commits can be interleaved with adding new constraints during
9454batch recomputation. This also entails that commit does not raise
9455an exception when applied to an already failed space (it is
9456simply ignored). The bug could not be observed (unless you did
9457some very fancy search engines yourself) and one could actually
9458see it as an extension.
9459
9460
9461
9462
9463[RELEASE]
9464Version: 1.2.2
9465Date: 2006-07-25
9466[DESCRIPTION]
9467This release switches recomputation back on and removes some
9468experimental code that had sneaked into the system...
9469
9470[ENTRY]
9471Module: kernel
9472What: performance
9473Rank: major
9474[DESCRIPTION]
9475Some experimental code had sneaked into the release, slowing down
9476the system by more than 10%...
9477
9478[ENTRY]
9479Module: search
9480What: bug
9481Rank: major
9482[DESCRIPTION]
9483With the changes to search in %Gecode 1.2.1 recomputation was
9484actually almost switched off...
9485
9486[ENTRY]
9487Module: int
9488What: performance
9489Rank: minor
9490[DESCRIPTION]
9491Improve performance of domain-consistent distinct (by providing
9492special ternary version). Can reduce runtime by 10-20% for some
9493examples.
9494
9495[ENTRY]
9496Module: int
9497What: performance
9498Rank: minor
9499[DESCRIPTION]
9500Cut memory requirements for element (for integer arrays) by half.
9501
9502[ENTRY]
9503Module: example
9504What: new
9505Rank: minor
9506[DESCRIPTION]
9507Added stress test for element constraint (originally due to Neng-Fa Zhou).
9508
9509[ENTRY]
9510Module: example
9511What: new
9512Rank: minor
9513[DESCRIPTION]
9514Added stress test for min constraint.
9515
9516[ENTRY]
9517Module: example
9518What: new
9519Rank: minor
9520[DESCRIPTION]
9521Added possibility to stop the search for solutions in examples based
9522on the time taken, the number of fails, or both.
9523
9524[ENTRY]
9525Module: example
9526What: new
9527Rank: minor
9528[DESCRIPTION]
9529Added an example for solving Peacable co-existing armies of %Queens.
9530
9531
9532
9533[RELEASE]
9534Version: 1.2.1
9535Date: 2006-07-19
9536[DESCRIPTION]
9537In addition to the usual fixes and improvements, the biggest
9538change is that all branchings now must support branching
9539descriptions. This also entails straightforward changes
9540(simplifications) to search-related space operations and to the
9541implementation of search engines.
9542
9543
9544[ENTRY]
9545Module: kernel
9546What: new
9547Rank: minor
9548[DESCRIPTION]
9549Added a macro GECODE_NEVER that assert that this command is never
9550executed. This is preferred over assert(false) as it is used for
9551optimization, if supported by a compiler (for example, Microsoft
9552Visual C++).
9553
9554[ENTRY]
9555Module: int
9556What: bug
9557Rank: minor
9558[DESCRIPTION]
9559Fixed fixpoint detection bug in n-ary min and max propagators.
9560
9561[ENTRY]
9562Module: int
9563What: bug
9564Rank: minor
9565[DESCRIPTION]
9566Min and max propagators now correctly handle cases such as min(x,y)=x.
9567
9568[ENTRY]
9569Module: int
9570What: removed
9571Rank: minor
9572[DESCRIPTION]
9573Removed bounds-consistent propagation for count constraint (not worth
9574the trouble, just use domain-consistent).
9575
9576[ENTRY]
9577Module: kernel
9578What: change
9579Rank: minor
9580Thanks: Martin Mann
9581[DESCRIPTION]
9582The ViewValBranching class now passes the home space to all member
9583functions used in selecting the view and the value.
9584
9585[ENTRY]
9586Module: set
9587What: bug
9588Rank: minor
9589[DESCRIPTION]
9590Fixed fixpoint detection for n-ary partition propagator.
9591
9592[ENTRY]
9593Module: set
9594What: new
9595Rank: major
9596[DESCRIPTION]
9597Added finite set projection propagators. They allow to propagate all
9598finite set constraints expressible as finite set projectors, including
9599negated and reified constraints.
9600
9601[ENTRY]
9602Module: support
9603What: new
9604Rank: minor
9605[DESCRIPTION]
9606Added simple class encapsulating a linear congruential pseudo-random
9607number generator.
9608
9609[ENTRY]
9610Module: kernel
9611What: change
9612Rank: major
9613[DESCRIPTION]
9614The interface for branchings has changed considerably, reflecting
9615the fact now that all branchings must support branching descriptions.
9616This is also reflected in the Space::status operation which has its
9617arguments reversed and corrected const qualifiers on its arguments.
9618But the good news is that it is considerably simpler than before.
9619
9620[ENTRY]
9621Module: int
9622What: bug
9623Rank: minor
9624[DESCRIPTION]
9625Assignment branchings (that is, branchings with a single alternative)
9626could possibly take the wrong values for assignment during recomputation.
9627
9628[ENTRY]
9629Module: kernel
9630What: change
9631Rank: major
9632[DESCRIPTION]
9633The status operation does not any longer accept an argument for
9634the number of alternatives. The number of alternatives is now
9635available from a branching description (where it is passed upon
9636creation of the description). This reflects the fact that
9637branching descriptions are mandatory now.
9638
9639[ENTRY]
9640Module: search
9641What: bug
9642Rank: major
9643[DESCRIPTION]
9644Fixed a serious bug where during recomputation the search stack
9645was always inspected behind the last element: the reason why
9646recomputation never crashed has been that stacks always keep one
9647element extra for optimization. So, serious bug but looks as if
9648no one stumbled over this...
9649
9650[ENTRY]
9651Module: kernel
9652What: bug
9653Rank: minor
9654[DESCRIPTION]
9655As Boolean variables can be derived from integer variables, the
9656assumption that a not yet assigned Boolean variable can not be
9657modified is wrong.
9658
9659[ENTRY]
9660Module: other
9661What: documentation
9662Rank: minor
9663[DESCRIPTION]
9664Generate one page per version released in changelog.
9665
9666[ENTRY]
9667Module: kernel
9668What: change
9669Rank: minor
9670Bug: 41
9671[DESCRIPTION]
9672Change exceptions thrown by %Gecode to be compliant with C++
9673exceptions.
9674
9675[ENTRY]
9676Module: other
9677What: bug
9678Rank: minor
9679Bug: 42
9680[DESCRIPTION]
9681Renamed macros so as to avoid nameclashes (all macros start with
9682GECODE_).
9683
9684[ENTRY]
9685Module: search
9686What: bug
9687Rank: minor
9688[DESCRIPTION]
9689Search engines now correctly count the number of propagation
9690steps including propagation that occurs when adaptive
9691recomputation creates additional clones.
9692
9693[ENTRY]
9694Module: search
9695What: change
9696Rank: major
9697[DESCRIPTION]
9698Branchings now must return branching descriptions and commit
9699operations also insist on being provided with branching
9700descriptions. This change reflects that batch recomputation is
9701of vital importance for efficiency in %Gecode.
9702
9703[ENTRY]
9704Module: int
9705What: performance
9706Rank: major
9707[DESCRIPTION]
9708Make Boolean linear constraints with constant right hand sides
9709more incremental using dynamic subscriptions (gives a 20-30% speedup).
9710
9711[ENTRY]
9712Module: minimodel
9713What: performance
9714Rank: minor
9715[DESCRIPTION]
9716Take advantage of specialized Boolean propagators in Boolean
9717expressions and relations.
9718
9719[ENTRY]
9720Module: int
9721What: performance
9722Rank: minor
9723[DESCRIPTION]
9724Made n-ary Boolean conjunction and disjunction more incremental by
9725using dynamic subscriptions.
9726
9727[ENTRY]
9728Module: int
9729What: performance
9730Rank: minor
9731[DESCRIPTION]
9732Provide special versions of Boolean propagators optimizing cases
9733where n-ary disjunctions are true.
9734
9735[ENTRY]
9736Module: int
9737What: performance
9738Rank: minor
9739[DESCRIPTION]
9740Change implementation of Boolean propagators from conjunction
9741to disjunction so that disjunction can be used as special case
9742for Boolean sum with inequalities.
9743
9744
9745[RELEASE]
9746Version: 1.2.0
9747Date: 2006-06-20
9748[DESCRIPTION]
9749This release makes quite some drastic changes to how propagators
9750and branchings are deleted: instead of using destructors they use
9751a dispose method that allows passing a home space during deletion
9752(we will use this infrastructure measure to speed up cloning
9753considerably a little later). Moreover the directory structure
9754has changed on popular request so that all include files are to
9755be found in a gecode subdirectory. Apart from that, some small
9756fixes and extensions due to requests.
9757
9758[ENTRY]
9759Module: set
9760What: bug
9761Rank: minor
9762Thanks: Luis Otero
9763[DESCRIPTION]
9764Fixed memory leak in finite set distinct propagator.
9765
9766[ENTRY]
9767Module: int
9768What: bug
9769Rank: minor
9770[DESCRIPTION]
9771Fixed memory leak in global cardinality constraint.
9772
9773[ENTRY]
9774Module: int
9775What: bug
9776Rank: minor
9777Thanks: Martin Mann
9778[DESCRIPTION]
9779Fixed bug in equality tests that could lead to reified (dis)equality
9780propagators not achieving domain consistency.
9781
9782[ENTRY]
9783Module: test
9784What: new
9785Rank: minor
9786[DESCRIPTION]
9787Added --enable-leak-debug configure option. This option causes the test suite
9788to call mtrace() under Linux, which can be used to test for memory leaks.
9789
9790[ENTRY]
9791Module: kernel
9792What: performance
9793Rank: minor
9794[DESCRIPTION]
9795More aggressive inlining for canceling subscriptions.
9796
9797[ENTRY]
9798Module: search
9799What: bug
9800Rank: minor
9801Bug: 39
9802[DESCRIPTION]
9803Fixed linkage of BAB destructor under Cygwin.
9804
9805[ENTRY]
9806Module: kernel
9807What: change
9808Rank: minor
9809[DESCRIPTION]
9810The branch member function for branchings now also takes a home space
9811as argument.
9812
9813[ENTRY]
9814Module: kernel
9815What: change
9816Rank: major
9817[DESCRIPTION]
9818Canceling subscriptions on views and variable implementations now
9819require also a home space (this has become possible due to not using
9820destructors but ordinary "dispose" member functions).
9821
9822[ENTRY]
9823Module: kernel
9824What: change
9825Rank: major
9826[DESCRIPTION]
9827Actors (propagators and branchings) do not any longer use destructors
9828but a "dispose" member function that takes a home space as argument
9829and must return the size of the actor.
9830Important: this requires that dispose member functions from super-classes
9831and class members are called explicitly!
9832
9833[ENTRY]
9834Module: kernel
9835What: new
9836Rank: minor
9837[DESCRIPTION]
9838Spaces can be queried for number of propagators and branchings.
9839
9840[ENTRY]
9841Module: search
9842What: new
9843Rank: minor
9844[DESCRIPTION]
9845Search engines can now be checked whether they have been stopped.
9846
9847[ENTRY]
9848Module: int
9849What: documentation
9850Rank: minor
9851Thanks: Martin Mann
9852[DESCRIPTION]
9853Fixed bug in description of PC_INT_DOM.
9854
9855[ENTRY]
9856Module: other
9857What: change
9858Rank: major
9859Thanks: Martin Mann
9860[DESCRIPTION]
9861Moved library source code into gecode subdirectory. Facilitates cleaner
9862installation. Programs compiling against %Gecode now need to include
9863e.g. "gecode/int.hh".
9864
9865[ENTRY]
9866Module: example
9867What: change
9868Rank: minor
9869[DESCRIPTION]
9870Sudoku example generalized to arbitrarily sized Sudokus.
9871
9872[RELEASE]
9873Version: 1.1.0
9874Date: 2006-04-10
9875[DESCRIPTION]
9876This minor release adds some new constraints (see below), adds support
9877for stopping search engines based on definable criteria, and some other
9878small fixes. Most notably, the test infrastructure has been extended to
9879also check whether propagators correctly claim that they have computed
9880a fixpoint (now all invariants a propagator must obey in %Gecode are covered
9881by the test infrastructure). This has lead to many small fixes.
9882
9883[ENTRY]
9884Module: other
9885What: bug
9886Bug: 37
9887Rank: minor
9888Thanks: Kari Pahula
9889[DESCRIPTION]
9890Added a configure switch --enable-doc-dot. If enabled, this checks for
9891presence of the dot tool (used for generating graphs in the documentation)
9892
9893[ENTRY]
9894Module: example
9895What: new
9896Rank: minor
9897[DESCRIPTION]
9898Added all-interval series using distinct.
9899
9900[ENTRY]
9901Module: minimodel
9902What: new
9903Rank: minor
9904[DESCRIPTION]
9905Added functions returning variables for arithmetic
9906(min, max, abs, mult, plus, minus).
9907
9908[ENTRY]
9909Module: int
9910What: change
9911Rank: minor
9912[DESCRIPTION]
9913Support for shared views has been removed in
9914sortedness propagator and in the propagator
9915for global cardinality with fixed cardinalities.
9916
9917[ENTRY]
9918Module: int
9919What: bug
9920Rank: minor
9921[DESCRIPTION]
9922Fixed bug in fixpoint detection of sortedness and
9923global cardinality propagator.
9924
9925[ENTRY]
9926Module: set
9927What: bug
9928Rank: minor
9929Bug: 36
9930Thanks: Javier Mena
9931[DESCRIPTION]
9932A non-debug version of %Gecode could not be linked to a program compiled with
9933assertions switched on, as BndSet::isConsistent was missing from the library.
9934
9935[ENTRY]
9936Module: int
9937What: change
9938Rank: minor
9939[DESCRIPTION]
9940Staged propagation for domain-consistent absolute value propagator
9941
9942[ENTRY]
9943Module: int
9944What: change
9945Rank: minor
9946[DESCRIPTION]
9947EqBnd and EqDom now take two template parameters for their view types. This
9948supports using different views, e.g. to express x0=-x1 using a MinusView.
9949
9950[ENTRY]
9951Module: search
9952What: new
9953Rank: major
9954Thanks: Rafael Meneses
9955[DESCRIPTION]
9956Added functionality to interrupt search engines (introduced
9957a Search::Stop class).
9958
9959[ENTRY]
9960Module: search
9961What: change
9962Rank: major
9963[DESCRIPTION]
9964Removed search engines optimizing for copying only (after
9965all, one should always use some recomputation).
9966
9967[ENTRY]
9968Module: int
9969What: bug
9970Rank: minor
9971[DESCRIPTION]
9972Fixed bug in fixpoint detection of n-ary maximum/minimum
9973propagator.
9974
9975[ENTRY]
9976Module: kernel
9977What: change
9978Rank: minor
9979[DESCRIPTION]
9980The status member function now also allows the first
9981argument to be optional.
9982
9983[ENTRY]
9984Module: set
9985What: bug
9986Rank: minor
9987[DESCRIPTION]
9988Fixed bugs in fixpoint detection of several set propagators (match,
9989convexity, sequence, n-ary (disjoint) union).
9990
9991[ENTRY]
9992Module: int
9993What: bug
9994Rank: minor
9995[DESCRIPTION]
9996Fixed bug in fixpoint detection of bounds-consistent
9997element for variables propagator.
9998
9999[ENTRY]
10000Module: int
10001What: bug
10002Rank: minor
10003[DESCRIPTION]
10004Fixed bug in fixpoint detection of bounds-consistent squaring
10005propagator (mult with the same variable twice).
10006
10007[ENTRY]
10008Module: int
10009What: bug
10010Rank: minor
10011[DESCRIPTION]
10012Fixed bug in fixpoint detection of bounds-consistent abs
10013propagator.
10014
10015[ENTRY]
10016Module: int
10017What: performance
10018Rank: minor
10019[DESCRIPTION]
10020Rewrite n-ary linear, min/max, and Boolean propagators to binary/ternary
10021variants during cloning if possible (saves memory).
10022
10023[ENTRY]
10024Module: int
10025What: bug
10026Rank: minor
10027Thanks: Stefano Gualandi
10028[DESCRIPTION]
10029Fixed wrong assertion in gcc-bnd propagator.
10030
10031[ENTRY]
10032Module: int
10033What: bug
10034Rank: major
10035Thanks: Jean-Christophe Godart
10036[DESCRIPTION]
10037Fixed indexing bug in SupportSet (part of the domain consistent linear
10038equation propagator).
10039
10040[ENTRY]
10041Module: int
10042What: new
10043Rank: major
10044[DESCRIPTION]
10045Added new constraint channel for variable/value channeling
10046between two variable arrays.
10047
10048[ENTRY]
10049Module: int
10050What: change
10051Rank: minor
10052[DESCRIPTION]
10053All distinct propagators raise an exception if a variable occurs
10054multiply in its arguments.
10055
10056[ENTRY]
10057Module: set
10058What: change
10059Rank: major
10060[DESCRIPTION]
10061Renamed the set propagators minElement to min, maxElement to max,
10062and channelVarVal to channel.
10063
10064[ENTRY]
10065Module: int
10066What: performance
10067Rank: major
10068[DESCRIPTION]
10069Improved initialization of domain-consistent distinct propagator,
10070in common cases for distinct this can save up to 10% runtime.
10071
10072[ENTRY]
10073Module: set
10074What: bug
10075Rank: minor
10076Thanks: Patrick Pekczynski
10077[DESCRIPTION]
10078Fixed off-by-one bug in SetVarImp::lubMinN and SetVarImp::lubMaxN.
10079
10080[ENTRY]
10081Module: minimodel
10082What: bug
10083Rank: minor
10084Thanks: Olof Sivertsson
10085[DESCRIPTION]
10086(In-)Equations were still not correct with respect to the sign.
10087
10088[ENTRY]
10089Module: minimodel
10090What: bug
10091Rank: minor
10092Bug: 33
10093Thanks: Olof Sivertsson
10094[DESCRIPTION]
10095Slice-operation now returns elements in right order.
10096
10097[ENTRY]
10098Module: minimodel
10099What: bug
10100Rank: minor
10101Bug: 32
10102Thanks: Olof Sivertsson
10103[DESCRIPTION]
10104Possible array-out-of bounds access fixed for MiniModel::Matrix.
10105
10106[ENTRY]
10107Module: example
10108What: performance
10109Rank: minor
10110[DESCRIPTION]
10111Added redundant constraint to social golfers example.
10112
10113
10114
10115
10116[RELEASE]
10117Version: 1.0.1
10118Date: 2006-03-01
10119[DESCRIPTION]
10120Maintenance release including some additions of domain-consistent
10121propagators and a fix for a serious bug in reified linear
10122inequalities.
10123
10124[ENTRY]
10125Module: search
10126What: change
10127Rank: minor
10128[DESCRIPTION]
10129Changed default copying recomputation distance to 8.
10130
10131[ENTRY]
10132Module: minimodel
10133What: bug
10134Rank: minor
10135Thanks: Olof Sivertsson
10136[DESCRIPTION]
10137(In-)Equations with an int on the left hand side (like 9==x) were
10138translated with a wrong sign (as -9==x).
10139
10140[ENTRY]
10141Module: other
10142What: bug
10143Rank: minor
10144Bug: 31
10145[DESCRIPTION]
10146The preprocessor macro NDEBUG for disabling assertions is no longer
10147put into config.hpp. Without this fix, user programs could not use
10148assert if %Gecode was compiled with NDEBUG.
10149
10150[ENTRY]
10151Module: minimodel
10152What: new
10153Rank: minor
10154[DESCRIPTION]
10155The post functions for linear expressions and relations also take
10156an integer consistency level as optional argument.
10157
10158[ENTRY]
10159Module: int
10160What: new
10161Rank: major
10162[DESCRIPTION]
10163Added domain-consistent linear equalities.
10164
10165[ENTRY]
10166Module: int
10167What: bug
10168Rank: minor
10169Bug: 30
10170[DESCRIPTION]
10171Fixed fixpoint detection for ternary min and max.
10172
10173[ENTRY]
10174Module: int
10175What: bug
10176Rank: minor
10177[DESCRIPTION]
10178Fixed subsumption detection for regular with multiple variable occurences.
10179
10180[ENTRY]
10181Module: int
10182What: change
10183Rank: minor
10184[DESCRIPTION]
10185Cost computation for sortedness has been changed from static to
10186dynamic (taking into account the variable reduction the
10187propagator can perform).
10188
10189[ENTRY]
10190Module: int
10191What: change
10192Rank: major
10193[DESCRIPTION]
10194Global cardinality changed to non-staged version. Further
10195inference for cardinality variables added. Parts of the graph
10196structure for the domain-consistent propagator have been revised
10197so as to avoid unnecessary propagation in case of fixed
10198cardinalities and to allow better staging for the
10199propagator. Revision of propagation for fixed cardinalities has
10200also been applied to bounds-consistent propagator.
10201
10202[ENTRY]
10203Module: int
10204What: new
10205Rank: major
10206[DESCRIPTION]
10207Added domain-consistent version of the absolute value propagator.
10208
10209[ENTRY]
10210Module: other
10211What: performance
10212Rank: major
10213[DESCRIPTION]
10214Switch assertions off in optimized builds with Microsoft's C++ compiler.
10215
10216[ENTRY]
10217Module: int
10218What: bug
10219Rank: major
10220Bug: 29
10221Thanks: Dominik Brill
10222[DESCRIPTION]
10223Fixed a very serious bug in the reified linear inequality propagator.
10224
10225[ENTRY]
10226Module: other
10227What: bug
10228Rank: minor
10229Thanks: Filip Konvicka
10230[DESCRIPTION]
10231Removed some compiler warnings for the Microsoft compiler with -W3.
10232
10233[ENTRY]
10234Module: int
10235What: bug
10236Rank: major
10237Bug: 27
10238[DESCRIPTION]
10239The strongly connected components represented by the permutation
10240variables in the extended version of Sortedness has been fixed
10241restoring bounds consistency on the permutation variables.
10242
10243[ENTRY]
10244Module: other
10245What: change
10246Rank: minor
10247Bug: 24
10248[DESCRIPTION]
10249The soname for libraries on Linux is now set properly, as well as the
10250version information on Darwin (Mac OS).
10251
10252[ENTRY]
10253Module: other
10254What: change
10255Rank: minor
10256Bug: 25
10257[DESCRIPTION]
10258The build system has been updated to support building both static and
10259shared libraries at the same time on Unix-like systems.
10260
10261[ENTRY]
10262Module: example
10263What: change
10264Rank: minor
10265[DESCRIPTION]
10266Examples now use per default the recomputation settings as
10267defined in the search module.
10268
10269[RELEASE]
10270Version: 1.0.0
10271Date: 2005-12-06
10272[DESCRIPTION]
10273Initial release.
10274
10275[ENTRY]
10276Module: kernel
10277What: new
10278Rank: minor
10279Thanks: Gilles Pesant and Samuel Gagnon
10280[DESCRIPTION]
10281Introduction of a basic structure for supporting counting-based
10282search as described in:
10283S. Gagnon, G. Pesant, Accelerating Counting-Based Search, CPAIOR 2018.
10284This is only enabled if Gecode has been compiled with the option
10285--enable-cbs.
10286[MORE]
10287A branching option will be added to compatible examples as
10288counting algorithms are added to constraints.