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