70a1cfa856 Add reasoning about why a restart happens 5db96c6afc Add initial version of the 'complete' propagator 3410436fc5 Fix include problems on Linux and Windows 0218f3e7be Remove deprecated restart_count from the variables set on restart 7f4a528ced Fix makefile mistake for LastVal constraint 8a39aee00d Initialise LastVal stored as the minimal in the domain 86707c674e Update STATUS to match the new enum 44d672100f Add support for LastVal from FlatZinc bd8af2e8f6 Subsume after propagation 2f07e027ab Add LastVal propagator f05cf9daba Output number of copies 707e30c0f0 Update generated parser files 179ee693cc Add restart_number() builtin (to work around the problem that otherwise we can't implement round robin style search) 04a492da17 Fix restart numbers (didn't count incomplete neighbourhoods) fbaa3529ec Initial implementation of on_restart 6dd39a73dd Update LICENSE 8f5ea30eba Update LICENSE 4236a2e5ec Use std::vector instead of std::array c53655d685 Dynamically adjust test batch sizes 37248557b6 Require C++11 cc60ea7cde Minor, remove exraneous newline in changelog 74c5f54b9f Make Region pool thread local 6f04ac3514 Use atomic for propagator identifier 2e0c275b07 Add support for parallel testing 3ada422b76 Refactor, extracted run_test function 787c41b8c4 Refactor, move data and logic into Options 120fc512a7 Refactor, extract run_tests function 85dd87a4af Refactoring: Thread rand through calls in test cece9da4ef Refactor Assignments operator() to has_more 564410e4ee Refactor Assignment operator++ to next() e1c84af894 Separate test filtering from running 8558856298 Remove empty statement warnings a9d8cb64fa Fix compilation errors for CPProfiler support 9ec81a69b2 Add RestartStop REVERT: 313e87646d Fix include problems on Linux and Windows REVERT: 358b8ca63b Remove deprecated restart_count from the variables set on restart REVERT: 83508d5de2 Fix makefile mistake for LastVal constraint REVERT: 530bbaf107 Initialise LastVal stored as the minimal in the domain REVERT: 96ba0d3d7e Update STATUS to match the new enum REVERT: 7d772297f9 Add support for LastVal from FlatZinc REVERT: 98b0162d75 Subsume after propagation REVERT: 5cd4552144 Add LastVal propagator REVERT: 9b80e644b7 Output number of copies REVERT: aaa5301366 Update generated parser files REVERT: 6ff4efe6a4 Add restart_number() builtin (to work around the problem that otherwise we can't implement round robin style search) REVERT: 8bcbec5d6e Fix restart numbers (didn't count incomplete neighbourhoods) REVERT: 3f63e743b2 Initial implementation of on_restart REVERT: b6ffa462d1 Update LICENSE REVERT: ad0621c26c Update LICENSE REVERT: 93caa97684 Use std::vector instead of std::array REVERT: 32d6399b35 Dynamically adjust test batch sizes REVERT: e7f00e9977 Require C++11 REVERT: a5ba8e4282 Minor, remove exraneous newline in changelog REVERT: b24831354d Make Region pool thread local REVERT: b1a109ac2e Use atomic for propagator identifier REVERT: 3d77aaad71 Add support for parallel testing REVERT: b1b9526049 Refactor, extracted run_test function REVERT: 85b8a57f65 Refactor, move data and logic into Options REVERT: d2c1961437 Refactor, extract run_tests function REVERT: 0236327c75 Refactoring: Thread rand through calls in test REVERT: ba81289b02 Refactor Assignments operator() to has_more REVERT: 038a554bd8 Refactor Assignment operator++ to next() REVERT: f34f125131 Separate test filtering from running REVERT: cec6336ede Remove empty statement warnings REVERT: d63e1fc042 Fix compilation errors for CPProfiler support git-subtree-dir: software/gecode git-subtree-split: 70a1cfa856d138b0845d2681c46ca16f8507aebf
10299 lines
232 KiB
Plaintext
Executable File
10299 lines
232 KiB
Plaintext
Executable File
#
|
|
# Main authors:
|
|
# Christian Schulte <schulte@gecode.org>
|
|
#
|
|
# Copyright:
|
|
# Christian Schulte, 2005
|
|
#
|
|
# This file is part of Gecode, the generic constraint
|
|
# development environment:
|
|
# http://www.gecode.org
|
|
#
|
|
# Permission is hereby granted, free of charge, to any person obtaining
|
|
# a copy of this software and associated documentation files (the
|
|
# "Software"), to deal in the Software without restriction, including
|
|
# without limitation the rights to use, copy, modify, merge, publish,
|
|
# distribute, sublicense, and/or sell copies of the Software, and to
|
|
# permit persons to whom the Software is furnished to do so, subject to
|
|
# the following conditions:
|
|
#
|
|
# The above copyright notice and this permission notice shall be
|
|
# included in all copies or substantial portions of the Software.
|
|
#
|
|
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
# LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
# OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
#
|
|
|
|
#
|
|
# This file contains entries for changelogs
|
|
#
|
|
# There are two kinds of entries: one marking releases and the others
|
|
# being actual entries.
|
|
#
|
|
# All the lines for describing entries must start at the beginning.
|
|
#
|
|
# A release is described as follows:
|
|
# [RELEASE]
|
|
# Version: <version string>
|
|
# Date: <when release>
|
|
# [DESCRIPTION]
|
|
# ... All the text up to the next [ENTRY] is included
|
|
# as description
|
|
#
|
|
# An entry is described as follows:
|
|
# [ENTRY]
|
|
# Module:
|
|
# kernel|search|int|set|cpltset|example|minimodel|iter|support|
|
|
# driver|test|gist|flatzinc|other
|
|
# What: bug|documentation|performance|new|removed|change
|
|
# Rank: minor|major
|
|
# Bug: <optional, for number from bugzilla>
|
|
# Issue: <optional, for number from github>
|
|
# Thanks: <optional, who reported etc>
|
|
# [DESCRIPTION]
|
|
# ... All the text up to the next [ENTRY] or [RELEASE] is included
|
|
# as description
|
|
# [MORE]
|
|
# ... If a more section is included, then it will be displayed as an
|
|
# optional section in the html page.
|
|
#
|
|
|
|
[RELEASE]
|
|
Version: 6.3.1
|
|
Date: 2020-??-??
|
|
[DESCRIPTION]
|
|
Let's see.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Jip J. Dekker
|
|
[DESCRIPTION]
|
|
Add RestartStop class to enforce a limit on the amount of restarts conducted
|
|
in a search. RestartStop is included in CombinedStop and accessible from the
|
|
FlatZinc interface through the --restart-limit flag.
|
|
|
|
[RELEASE]
|
|
Version: 6.3.0
|
|
Date: 2020-??-??
|
|
[DESCRIPTION]
|
|
Let's see.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Gecode now requires C++ 11, the support for compiling without C++ 11
|
|
has been removed.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Make the region pool thread local.
|
|
[MORE]
|
|
When running tests in parallel, having a shared pool for regions took too much
|
|
time on macOS. This change makes the pool into a thread_local instead.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Jip J. Dekker
|
|
[DESCRIPTION]
|
|
Automatically generate and install a MiniZinc solver configuration and
|
|
install MiniZinc library into the share/minizinc/gecode standard location.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Add versions of element constraints with offsets, to enable fast domain
|
|
consistent index set transformations.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Use element-with-offset and 2d element propagators instead of performing
|
|
index transformations in MiniZinc.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Accept combined -cp-profiler flag for activating CP-Profiler and always
|
|
send information to profiler.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Accept combined -cp-profiler flag for activating CP-Profiler instead of
|
|
using separate script mode.
|
|
|
|
[ENTRY]
|
|
Module: test
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fix testing for IntAction, BoolAction, SetAction, FloatAction with
|
|
merit functions.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Issue: 77
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Move parser.tab.hh to parser.tab.hpp, Bison's standard location. This
|
|
ensures that the generated implementation file is compatible with
|
|
Bison 3.7.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Issue: 61
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fix fzn_table_bool and fzn_table_bool_reif predicates, which had
|
|
incorrect types.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
Issue: 63
|
|
Thanks: Markus Elfring
|
|
[DESCRIPTION]
|
|
Remove usages of reserved identifiers such as __GECODE_KERNEL_HH__ and
|
|
_View.
|
|
[MORE]
|
|
Gecode used to use include guards of the form __GECODE_KERNEL_HH__.
|
|
Using a double underscore in an identifier is reserved, and thus
|
|
undefined behaviour. Use guards of the form GECODE_KERNEL_HH instead.
|
|
Similarly, names with a single leading underscore followed by a
|
|
capital letter are also reserved, and usage is thus undefined
|
|
behaviour, and are removed.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Add MiniZinc constraint names to FlatZinc errors when applicable and
|
|
available.
|
|
[MORE]
|
|
A constraint name is specified in MiniZinc using a string annotation
|
|
"my name" on the constraint item, and is translated into FlatZinc
|
|
using the mzn_constraint_name("my name").
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The cumulative constraint now respects the semantics of the MiniZinc
|
|
definition for 0-duration tasks.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The roots and int_set_channel constraints now work for empty sets and arrays.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The MiniZinc global constraint library has been updated for MiniZinc
|
|
version 2.3.0 and higher, taking advantage of the new library
|
|
structure that separates the modelling-level definition of a predicate
|
|
from the solver-level one.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Marco Correia
|
|
[DESCRIPTION]
|
|
Do not require that cost for FloatMinimizeSpace (use the maximum
|
|
instead) and FloatMaximizeSpace (use the minimum instead) must be
|
|
assigned.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Konstantin Popov
|
|
[DESCRIPTION]
|
|
Fixed crash when killing the last propagator in a space.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Florian Fontan
|
|
[DESCRIPTION]
|
|
Do not use size-based symmetry breaking together with CDBF.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
Thanks: John W. Spirent
|
|
[DESCRIPTION]
|
|
Some small changes to compile with MSVC 2015 again.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
Thanks: John W. Spirent
|
|
[DESCRIPTION]
|
|
Some small changes to compile with MSVC 2015 again.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: minor
|
|
Thanks: John W. Spirent
|
|
[DESCRIPTION]
|
|
Some small changes to compile with MSVC 2015 again.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Mats Carlsson
|
|
[DESCRIPTION]
|
|
Fix bool-set channel propagator to work correctly when posted
|
|
with a fixed set variable.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Jip J. Dekker
|
|
[DESCRIPTION]
|
|
Update the error produced by the FlatZinc parser when an integer
|
|
literal is outside Gecode's integer limits.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The number of nodes and failures is now of type unsigned long
|
|
long int. Time is now consistently of type double.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The number of propagations, nodes, and failures is now of type
|
|
unsigned long long int. Time is now consistently of type double.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The number of nodes and failures in statistics is now of type
|
|
unsigned long long int. Time is now consistently of type double.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The number of propagations in statistics is now of type unsigned
|
|
long long int.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The linear cutoff generator started at zero rather than at the
|
|
scale factor.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
For action-based branching heuristics, one can now define whether
|
|
failure, propagation, or both should be considered.
|
|
|
|
[RELEASE]
|
|
Version: 6.2.0
|
|
Date: 2019-04-12
|
|
[DESCRIPTION]
|
|
The release enables half-reification in FlatZinc, fixes
|
|
indeterminstic behavior for shared branching criteria, and fixes
|
|
several aspects for general tracers. It is recommended to upgrade
|
|
as soon as possible.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Jip J. Dekker
|
|
[DESCRIPTION]
|
|
Enable support for half-reified constraints in the Gecode MiniZinc
|
|
library. Half-reified constraints are used when a MiniZinc
|
|
expression has to be reified and is detected to be in a positive
|
|
context. If no Half-reified constraint has been made available by
|
|
solver, the full reification will be used. Half-reifed constraints
|
|
in the MiniZinc solver library are declared in the same way as
|
|
reified constraints, but are appended by "_imp" instead of "_reif".
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
For the combination of some constraints (min, max, nvalues, and
|
|
some constraints over Boolean variables) with shared variable
|
|
selection branching (that is, AFC, Action, and CHB) the behavior
|
|
of Gecode was indeterminstic. The indeterminism was based on
|
|
using memory addresses for determining the order of variables in
|
|
some propagators which in turn affected which propagator might
|
|
record failure first and hence influenced the branching decisions.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
For the combination of binpacking and linear constraints with
|
|
shared variable selection branching (that is, AFC, Action, and
|
|
CHB) the behavior of Gecode was indeterminstic. The indeterminism
|
|
was based on using memory addresses for determining the order of
|
|
variables which in turn affected which propagator might record
|
|
failure first and hence influenced the branching decisions.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added job-shop scheduling example.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added order constraint for two unary scheduling tasks.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Support minimum_arg_bool and maximum_arg_bool constraints.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Use native offset calculation instead of additional constraints
|
|
for argmin/argmax constraints.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Add BoolVar versions of argmax and argmin.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
Thanks: Conrad Drescher
|
|
[DESCRIPTION]
|
|
The logic for recording events for general tracers was seriously
|
|
broken as events after a call to status() have been ignored.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Kurt Van Den Branden
|
|
[DESCRIPTION]
|
|
Restore floating point rounding mode under Windows.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Conrad Drescher
|
|
[DESCRIPTION]
|
|
Added TE_POST for default arguments for general tracers.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The special constructors for PBS with up to four SEB's have been
|
|
removed. Use the SEBs class instead.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Variables to be assigned during search can now be selected with
|
|
all available selection criteria available for branching.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Omitting the variable selection criterion is equivalent to
|
|
INT_VAR_NONE().
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Variables to be assigned during search can now be selected with
|
|
all available selection criteria available for branching.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Omitting the variable selection criterion is equivalent to
|
|
SET_VAR_NONE().
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Variables to be assigned during search can now be selected with
|
|
all available selection criteria available for branching.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Omitting the variable selection criterion is equivalent to
|
|
FLOAT_VAR_NONE().
|
|
|
|
|
|
[RELEASE]
|
|
Version: 6.1.1
|
|
Date: 2019-02-14
|
|
[DESCRIPTION]
|
|
This release fixes a number of minor issues and adds post events
|
|
to general tracers.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Change table and regular predicates to take 1d arrays as arguments.
|
|
Otherwise the generated FlatZinc does not typecheck.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Add colon to statistics output to conform with FlatZinc specification.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Conrad Drescher
|
|
[DESCRIPTION]
|
|
Use locks to guard mutexes in case tracers throw exceptions.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Conrad Drescher
|
|
[DESCRIPTION]
|
|
Use locks to guard mutexes in case tracers throw exceptions.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Conrad Drescher
|
|
[DESCRIPTION]
|
|
exp(0.0) now correctly evaluates to 1.0 (and not 0.0).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: changed
|
|
Rank: minor
|
|
Thanks: Jens Krueger
|
|
[DESCRIPTION]
|
|
All constructors and the bool test operator of IntSet have been
|
|
made explicit to avoid unintended behavior.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Jip J. Dekker
|
|
[DESCRIPTION]
|
|
Added installation target to the CMake configuration.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fix compilation problems with the Microsoft Visual Studio IDE
|
|
which uses -permissive- as default, rather than -permissive as
|
|
cl.exe does.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
General tracers now support post events, see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Jip J. Dekker
|
|
[DESCRIPTION]
|
|
Removed the use of glibc macros in the architecture selection
|
|
process of the boost interval library. This allows for the
|
|
compilation on unix machines based on a different implementation
|
|
of the C library.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
Author: Samuel Gagnon
|
|
[DESCRIPTION]
|
|
Added example for magic squares with pre-filled instances.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
Author: Conrad Drescher, Patrick Zimmer
|
|
[DESCRIPTION]
|
|
Fixed potential deadlock when memory has been exhausted.
|
|
|
|
[RELEASE]
|
|
Version: 6.1.0
|
|
Date: 2018-10-17
|
|
[DESCRIPTION]
|
|
This release adds reified extensional constraints; support for
|
|
negative tables; experimental support for counting-based search
|
|
(thanks to Samuel Gagnon); and support for standard C++
|
|
initializer lists. In addition, the release has lots of bug fixes
|
|
and performance improvements. It is highly recommended to switch
|
|
as soon as possible!
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Support for the CPProfiler is now enabled by default.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Sara Frimodig
|
|
[DESCRIPTION]
|
|
The default propagation for unary has been too weak (likely to
|
|
hurt Gecode in the MiniZinc competitions of 2017 and 2018),
|
|
now the default is back to maximal propagation.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Matthias Balzer
|
|
[DESCRIPTION]
|
|
Take exponent into account for float expressions with pow
|
|
and nroot.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Rui Machado, Jens Krüger
|
|
[DESCRIPTION]
|
|
The alignment of memory allocated from a Region is now as
|
|
prescribed by the maximum of std::max_align_t and
|
|
GECODE_MEMORY_ALIGNMENT (which can be re-defined). Please also check
|
|
MPG for a tip on alignment of memory handeled by Gecode.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added native support for reified extensional table constraints.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added support for reified extensional table constraints.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added support for negative table for extensional table
|
|
constraints.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed scheduling for Boolean variables (funnily, only occured
|
|
with a newly added propagator).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added missing definitions for declarations of creating Home
|
|
objects from spaces with propagator and brancher groups.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
Author: Samuel Gagnon
|
|
[DESCRIPTION]
|
|
Added experimental support for counting-based search. It can be
|
|
enabled by running configure with --enable-cbs. See
|
|
examples/qcp.cpp for an example.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Robin Eklind
|
|
[DESCRIPTION]
|
|
Fixed fall through bug for set expressions.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Improved performance of tuple-set extensional constraints by
|
|
maybe 15-20% through reordering loops.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Add -t command line option to fzn-gecode, to support new unified
|
|
time limit command line option for FlatZinc solvers.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The function shared() for testing whether a view occurs in an
|
|
array or whether two arrays contain at least on shared view is no
|
|
a simple function and not a member function (which means, use
|
|
shared(x,y) instead of x.shared(y)).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: removed
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Variables cannot any longer be compared by same() and
|
|
before(). If you want to compare two variables x and y whether
|
|
they are identical, use x.varimp() == y.varimp().
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: removed
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Variables cannot any longer be compared by same() and
|
|
before(). If you want to compare two variables x and y whether
|
|
they are identical, use x.varimp() == y.varimp().
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: removed
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Variables cannot any longer be compared by same() and
|
|
before(). If you want to compare two variables x and y whether
|
|
they are identical, use x.varimp() == y.varimp().
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: removed
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Variables cannot any longer be compared by same() and
|
|
before(). If you want to compare two variables x and y whether
|
|
they are identical, use x.varimp() == y.varimp().
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Views now are compared by the standard C++ operators "==", "!=",
|
|
and "<" (this replaces the same and before functions).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Views now are compared by the standard C++ operators "==", "!=",
|
|
and "<" (this replaces the same and before functions).
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Views now are compared by the standard C++ operators "==", "!=",
|
|
and "<" (this replaces the same and before functions).
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Views now are compared by the standard C++ operators "==", "!=",
|
|
and "<" (this replaces the same and before functions).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The SharedArray class now has an equality operator. This fixes
|
|
a problem in the FlatZinc interpreter, which is keeping a hash
|
|
set of arrays that relies on the equality test.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The add function of TupleSet now supports standard initializer
|
|
lists but do not any longer support variable argument lists (as
|
|
the combination is really confusing).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
IntArgs now support standard initializer lists but do not any
|
|
longer support variable argument lists (as the combination is
|
|
really confusing). Now one can write IntArgs c({1,2,3}) for
|
|
example.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
DFAs now support standard initializer lists.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
IntSets now support standard initializer lists, for both
|
|
individual elements (for example, IntSet s({1,2,3})) as well as
|
|
ranges (for example, IntSet s({{1,2},{6,9}})).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Integer and Boolean variable argument arrays now support standard
|
|
initializer lists.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Set variable argument arrays now support standard initializer
|
|
lists.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Float variable argument arrays now support standard initializer
|
|
lists.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
SEBs now support standard initializer lists but do not any
|
|
longer support variable argument lists (as the combination is
|
|
really confusing).
|
|
|
|
|
|
[RELEASE]
|
|
Version: 6.0.1
|
|
Date: 2018-05-21
|
|
[DESCRIPTION]
|
|
Contains a number of small fixes and one large fix for float
|
|
variables (basically, minimodel using float variables would
|
|
always lead to overflow and hence throw an exception).
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: change
|
|
Rank: major
|
|
Thanks: Kurt Van Den Branden
|
|
[DESCRIPTION]
|
|
All constraints over float variables now constrain their
|
|
variables when being posted to avoid overflow.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The interval for a float value is now printed between "[" and
|
|
"]", whereas the interval for a float variable is printed between
|
|
"[[" and "]]".
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Float values could not be printed.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Matthias Balzer
|
|
[DESCRIPTION]
|
|
Fixed strict inequalities for Float relations.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Kari Pahula
|
|
[DESCRIPTION]
|
|
Fixed compilation problem on 32 bit platforms.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Jip J. Dekker
|
|
[DESCRIPTION]
|
|
Fixed the initialisation of the random number generator for the
|
|
FlatZinc executable. This fix ensures the generator is always
|
|
initialised.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Detect is os_unfair_lock is available at runtime, in order to be able
|
|
to support older versions of macOS in the same binaries.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Add support for annotations to control restart strategy.
|
|
|
|
[RELEASE]
|
|
Version: 6.0.0
|
|
Date: 2018-02-23
|
|
[DESCRIPTION]
|
|
This major release fixes many bugs, adds quite some new
|
|
functionality, and changes how cloning works (most likely the
|
|
biggest change we ever did to %Gecode): the Boolean share argument
|
|
is not any longer needed (see how to change your programs in
|
|
\ref PageHowToChange_6 "How to Change to Gecode 6.0.0"). The added
|
|
functionality includes experimental support for the CPProfiler,
|
|
classes for lexicographic optimization (where the cost is defined
|
|
by an array of variables), a new much faster implementation of
|
|
extensional constraints using tuple sets, and support for tracing
|
|
search engines.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The statistics for parallel search engines was wrong.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed several race conditions during the termination of parallel
|
|
search engines.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Replace deprecated OSSpinLock with os_unfair_lock on newer versions
|
|
of macOS.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
A sequential portfolio ignored stop objects in certain cases.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Share tables for extensional (table) constraints, DFAs for regular
|
|
constraints, and arrays of constants for element constraints.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Change default propagation level to bounds propagation for global
|
|
cardinality constraints.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Bitsets now use 64 bit integers on all 64 bit architectures.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: major
|
|
Author: Kevin Leo, Maxim Shishmarev
|
|
[DESCRIPTION]
|
|
Added experimental support for the CPProfiler, see MPG for
|
|
details. This is only enabled, if Gecode has been configured with
|
|
the option --enable-cpprofiler.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
A new mode "-mode cpprofiler" and several command-line arguments
|
|
-cpprofiler-* have been added to connect Gecode to the
|
|
CPProfiler. For more details, see MPG.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
No hyphen must be given for a command line switch and both "-"
|
|
and "--" are automatically added.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
When posting a simple linear constraint (only two variables with
|
|
unit coefficients) with default integer propagation level, a
|
|
domain consistent propagator is posted. Now a domain consistent
|
|
propagator is always posted if the right-hand side constant is
|
|
zero and otherwise if the computations required can be done with
|
|
normal integers.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Matthias Balzer
|
|
[DESCRIPTION]
|
|
Linear constraints now check whether constant coefficients have
|
|
mixed signs (include zero) and throw an exception if yes.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Matthias Balzer
|
|
[DESCRIPTION]
|
|
Linear constraints now check properly for numerical overflow.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Add redefinition of disjunctive_strict in terms of cumulative.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: major
|
|
Thanks: Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
Added IntLexMinimizeScript and IntLexMaximizeScript for
|
|
lexicographic optimization.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: major
|
|
Thanks: Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
Added IntLexMinimizeSpace and IntLexMaximizeSpace for
|
|
lexicographic optimization.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed the deprecated classes MinimizeScript and MaximizeScript
|
|
(use IntMinimizeScript and IntMaximizeScript instead).
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed the deprecated classes MinimizeSpace and MaximizeSpace
|
|
(use IntMinimizeSpace and IntMaximizeSpace instead).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
Author: Linnea Ingmar
|
|
[DESCRIPTION]
|
|
Tuple sets can be initialized from DFAs (and hence regular
|
|
expressions).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Peter Stuckey
|
|
[DESCRIPTION]
|
|
Perform unsharing even in failed spaces to avoid exceptions in
|
|
later constraint posting.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: major
|
|
Author: Matthias Balzer
|
|
[DESCRIPTION]
|
|
Added reified dom-expressions.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: major
|
|
Author: Matthias Balzer
|
|
[DESCRIPTION]
|
|
Added relations between integer and set expressions.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Andreas Schutt
|
|
[DESCRIPTION]
|
|
Fix syntax errors in definitions of global cardinality predicates.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Make mzn-gecode script use mzn-fzn if minizinc driver is not present.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Andreas Schutt
|
|
[DESCRIPTION]
|
|
Add support for int_pow predicate.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Changed accuracy of delta information for integer views (now, all
|
|
values between new and old lower/upper bound are reported as
|
|
being discarded).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Tuple sets used for Boolean variables are allowed to contain only
|
|
zeros and ones as values.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: removed
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Removed IPL_SPEED and IPL_MEMORY as they are not any longer needed.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Re-implemented tuple sets for simplicity and ease of use. Please
|
|
see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
Author: Linnea Ingmar
|
|
[DESCRIPTION]
|
|
Replaced extensional implementation by a single implementation
|
|
based on the compact-table propagator described in:
|
|
J. Demeulenaere et. al., Compact-Table: Efficiently filtering
|
|
table constraints with reversible sparse bit-sets, CP 2016. Pages
|
|
207-223, LNCS, Springer, 2016. The extensional propagator runs up
|
|
to ten times faster than the old implementations.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed virtual method table overwrite bug for Action and CHB.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed double deletion bug in parallel portfolio-based search.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Massimo Morara
|
|
[DESCRIPTION]
|
|
Fixed printing of group information for tracing.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Massimo Morara
|
|
[DESCRIPTION]
|
|
Fixed printing of group information for tracing.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Massimo Morara
|
|
[DESCRIPTION]
|
|
Fixed printing of group information for tracing.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Now it can be controlled by an Boolean argument whether AFC
|
|
information between spaces is shared or not.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Now it can be controlled by an Boolean argument whether AFC
|
|
information between spaces is shared or not.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Now it can be controlled by an Boolean argument whether AFC
|
|
information between spaces is shared or not.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Now it can be controlled by an Boolean argument whether AFC
|
|
information between spaces is shared or not.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Conrad Drescher
|
|
[DESCRIPTION]
|
|
The bounds propagator for abs is now bounds consistent.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Conrad Drescher
|
|
[DESCRIPTION]
|
|
Added checks to avoid posting set relation propagators in case
|
|
their variables are in fact the same.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed a potential memory leak for restart-based search when the
|
|
root space was failed.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Choices do not need to implement a size function.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: major
|
|
Thanks: Maxim Shishmarev
|
|
[DESCRIPTION]
|
|
Added support for tracing search engines.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Andreas Schutt
|
|
[DESCRIPTION]
|
|
Fixed declarations of table_int and table_bool constraints.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Shared handles and objects used to implement most shared data
|
|
structures in Gecode are thread safe now. In most cases they are
|
|
lock free.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The Boolean share argument during cloning is not any longer needed.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
During unsharing of AFC information also the propagator
|
|
identifiers were changed.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The unsharing of AFC information during cloning is not any longer
|
|
needed as it happens automatically when a new AFC object is
|
|
created.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Regions can be freed without destroying them. Consult MPG for
|
|
details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Regions are now created independently of a space and the policy
|
|
using several regions simultaneously has changed. Consult MPG for
|
|
details.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed a race condition in portfolio-based search.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
For Boolean variables, an initialized BoolCHB in branching was ignored.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The -slice commandline option for sequential portfolios is not
|
|
ignored any longer.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 5.1.0
|
|
Date: 2017-04-18
|
|
[DESCRIPTION]
|
|
This is a rather major release, fixing a number of bugs and
|
|
adding quite a number of new features. Some of the features
|
|
require changes to your models.
|
|
|
|
In more detail: extended tracing so that all propagator
|
|
executions and commit operations can be traced; renamed activity
|
|
to action to avoid confusion with activity in SAT (and fixed that
|
|
action information is also recorded during failure); added CHB
|
|
(conflict-history based branching) heuristic; optimized AFC; all
|
|
functions taken as arguments by Gecode are now based on
|
|
std::function-types; instead of branching with INT_VAR_* and
|
|
INT_VAL_* for Boolean variables, BOOL_VAR_* and BOOL_VAL_* must
|
|
be used. There are a number of additional changes, so you might
|
|
want to read the whole changelog.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Some FlatZinc constraints were not guarded with assertions, which could make
|
|
Gecode crash on incorrect models.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Choices do not need to implement a size() member function (unused
|
|
since years).
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The right-hand side of a linear constraint was a number rather
|
|
than a value (FloatNum rather than FloatVal) leading to rounding
|
|
errors.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed crashes in sequential and parallel portfolios using
|
|
parallel or restart-based best solution search engines as assets.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Trace recorders have been renamed to variable (or view) trace
|
|
recorders. New trace recorders have been added that can trace
|
|
all propagate and commit operations. See MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Tracing now also records failure-events, see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Tracing now also records failure-events, see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Tracing now also records failure-events, see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Tracing now also records failure-events, see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: changed
|
|
Rank: minor
|
|
Thanks: Conrad Drescher
|
|
[DESCRIPTION]
|
|
When posting a simple linear constraint (only two variables with
|
|
unit coefficients) with default integer propagation level, a
|
|
domain consistent propagator is posted.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The integer value selections INT_VAL_NEAR_MIN(),
|
|
INT_VAL_NEAR_MAX(), INT_VAL_NEAR_INC(), and INT_VAL_NEAR_DEC()
|
|
have been removed. It is much better to use LNS (large
|
|
neighbourhood search), see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added reified versions of relation constraints between a set and
|
|
an integer variable.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The Social golfers example now includes a model variant that uses
|
|
integer distinct for ensuring all player-pairs are distinct.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Replaced initialized() function by operator bool() for RND,
|
|
Action, AFC, CHB.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added reified cardinality() constraint.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Disabled propagators can be disabled again (convenience).
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Gecode requires now at least the Microsoft Visual Studio 2013 compiler.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added support for CHB (conflict-history based branching)
|
|
heuristic for branching.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added support for CHB (conflict-history based branching)
|
|
heuristic for branching. See MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added support for CHB (conflict-history based branching)
|
|
heuristic for branching. See MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added support for CHB (conflict-history based branching)
|
|
heuristic for branching. See MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: changed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Do not count number of weakly monotonic propagators, nobody used
|
|
it anyway.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Computing the afc for an assigned variable would crash.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Reimplemented the infrastructure to record AFC, much simpler and
|
|
much faster.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Renamed Activity to Action to avoid confusion with activity in SAT.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Renamed Activity to Action to avoid confusion with activity in SAT.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Renamed Activity to Action to avoid confusion with activity in SAT.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Renamed Activity to Action to avoid confusion with activity in SAT.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Variable implementations are not allowed to return a failed
|
|
modification event directly (such as in return ME_INT_FAILED;),
|
|
they need to call the function fail() instead (such as in return
|
|
fail(home);).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Activity for branching was not counted when propagation lead to a
|
|
failed space, this is done now. The activity of a variable is now
|
|
by default initialized to 1. That makes activity actually
|
|
useful...
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Variable implementations do not need to define cancel()
|
|
functions, the kernel provides generic implementations (this only
|
|
matters for users implementing their own variables). Also cleaned
|
|
up some inlining mess which reduces object code size by around
|
|
10%.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
In certain situations the AFC could be incremented twice (could
|
|
only have occured for linear constraints with Boolean variables
|
|
and sequence constraints).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: changed
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
All branching functions (merit, value, commit, tie-breaking
|
|
limit, filter, print) can now be of std::function type.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: changed
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
All branching functions (merit, value, commit, tie-breaking
|
|
limit, filter, print) can now be of std::function type.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: changed
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
All branching functions (merit, value, commit, tie-breaking
|
|
limit, filter, print) can now be of std::function type.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: changed
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
All branching functions (merit, value, commit, tie-breaking
|
|
limit, filter, print) can now be of std::function type.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Branching on Boolean variables now requires to use BOOL_VAR_...()
|
|
and BOOL_VAL_...() functions instead of the INT_... variants.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Functions passed to wait() and when() can now be of std::function type.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Functions passed to wait() can now be of std::function type.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Functions passed to wait() can now be of std::function type.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Add assertions to regular constraint definition to avoid posting with
|
|
invalid arguments.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: David Hotham
|
|
[DESCRIPTION]
|
|
Fix parser to work with newer versions of GCC compiler.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added an abstraction RunJobs for executing several jobs in
|
|
parallel (not officially supported).
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added if-then-else constraint (called ite) also for float
|
|
variables.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added if-then-else constraint (called ite) also for set
|
|
variables.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added if-then-else constraint (called ite) also for Boolean
|
|
variables.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Relations between arrays now support also a mix between integer
|
|
(or Boolean) variable array and integer array.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Enable C++11 standard on compilers that need an explicit switch. Can be
|
|
switched off using --disable-cpp11 during configuration.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 5.0.0
|
|
Date: 2016-10-25
|
|
[DESCRIPTION]
|
|
This release adds a number of new features and fixes many bugs
|
|
(some rather serious), so it is recommended to switch as soon as
|
|
possible to this release. Some highlights are: re-added limited
|
|
discrepancy search (LDS); added sequential and parallel
|
|
portfolio-based search (PBS); added support for groups of
|
|
propagators and branchers; added extensive tracing functionality
|
|
based on groups; propagators can be disabled and re-enabled;
|
|
support for arbitrary memory allocators; changed the notion of
|
|
"integer consistency level" to the more expressive concept
|
|
"integer propagation level".
|
|
|
|
It is recommended to read the new Chapter in MPG on groups and
|
|
tracing.
|
|
|
|
As the interfaces has changed, please consult
|
|
\ref PageHowToChange_5 "How to Change to Gecode 5.0.0".
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed some idempotency problems in the n-ary union and weight propagators.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added relax() function for relaxed assignment of float variables
|
|
from a previous solution, see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added relax() function for relaxed assignment of set variables
|
|
from a previous solution, see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added relax() function for relaxed assignment of integer and
|
|
Boolean variables from a previous solution, see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The probability for relaxing variables in LNS can be passed with
|
|
the -relax commandline option.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
The domain consistent dom() constraint for integer ranges was
|
|
only bounds consistent...
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Matthias Balzer
|
|
[DESCRIPTION]
|
|
Export BoolExpr::Misc for linking.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Matthias Balzer
|
|
[DESCRIPTION]
|
|
Do not declare new and delete of ArgArrayBase as private to
|
|
support the use of placement new.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The discrepancy limit for Limited Discrepancy Search (LDS) can be
|
|
passed with the -d-l commandline option.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Limited Discrepancy Search (LDS) added. Please see MPG for
|
|
details.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Mats Carlsson
|
|
[DESCRIPTION]
|
|
Fix the FlatZinc parser for cases where variables were aliased to a fixed
|
|
variable.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Matthias Balzer
|
|
[DESCRIPTION]
|
|
Fixed memory leak for regions (occured for many large allocation
|
|
requests).
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Filip Konvicka
|
|
[DESCRIPTION]
|
|
Enable optimized rounding only if MSVC does not use SSE,
|
|
otherwise things really go wrong (necessary for MSVC 2015).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added additional propagation cost level record() which is
|
|
reserved for propagators that record information but do not
|
|
propagate.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added channeling constraint between float and Boolean variable.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Matthias Balzer
|
|
[DESCRIPTION]
|
|
FloatValArgs erroneously inherited from PrimArgArray, now it
|
|
inherits from ArgArray.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Matthias Balzer
|
|
[DESCRIPTION]
|
|
Fixed memory leak in constructor for Boolean element expression.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Matthias Balzer
|
|
[DESCRIPTION]
|
|
Fixed special case handling for sqr and pow functions.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Matthias Balzer
|
|
[DESCRIPTION]
|
|
Removed bogus declarations of comparison operators between
|
|
Boolean variables and float expressions.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Propagators and branchers now have a fixed identity available by
|
|
id() member functions.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Gilles Pesant
|
|
[DESCRIPTION]
|
|
Added an iterator SubscribedPropagators that iterates over the
|
|
subscribed propagators of views and variable implementations.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Mirko Rahn
|
|
[DESCRIPTION]
|
|
Do not use local classes as this would require C++-11.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fix n-ary lq/le propagator when used on arrays with variables occurring
|
|
multiply.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: removed
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Removed brancher handles, they are subsumed by brancher groups.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed many small quirks in propagator rewriting, where the
|
|
information on which propagator is rewritten was omitted.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Trace flags can be passed on the commandline.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added support for tracing propagation, please see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added support for tracing propagation, please see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added support for tracing propagation, please see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added support for tracing propagation, please see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
All constraint post functions should now use the macro
|
|
GECODE_POST at their start: it will check for failure but also
|
|
will set group information useful for tracing.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Some Gecode macros made the assumption that they can only be used
|
|
inside the Gecode namespace. Fixed.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added groups of branchers (class BrancherGroup) by which
|
|
groups of branchers can be controlled. See MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added groups of propagators (class PropagatorGroup) by which
|
|
groups of propagators can be controlled. See MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Propagators can now be disabled and enabled (through
|
|
PropagatorGroups). See MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
All propagators must implement a virtual member function
|
|
reschedule() that can be used to reschedule a propagator according
|
|
to its subscriptions. See MPG for more details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
All variable implementation must implement an additional
|
|
reschedule() function that can be used to reschedule a propagator
|
|
according to its subscriptions. See MPG for more details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The iterators over all propagators and branchers of a space are
|
|
not any longer accessible. Please use group iterators instead.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The member functions propagators() and branchers() of the class
|
|
Space have been removed as they can be expressed with groups.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Mirko Rahn
|
|
[DESCRIPTION]
|
|
Made copy constructor for search engines private to trigger
|
|
compiler error when trying to copy a search engine.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Mirko Rahn
|
|
[DESCRIPTION]
|
|
Fixed some linking issues for static linking.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Gecode supports now arbitrary memory allocators (the behavior can
|
|
be controlled by the commandline options -enable-allocator and
|
|
-disable-allocator). For more details, please see MPG.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Conrad Drescher
|
|
[DESCRIPTION]
|
|
Added destructor to NGL class to avoid warnings.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Matthias Balzer
|
|
[DESCRIPTION]
|
|
Fixed wrong type declaration in region_allocator::deallocate().
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Conrad Drescher, Patrick Berg
|
|
[DESCRIPTION]
|
|
Fixed two infinite recursion bugs in related to use of hull().
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Add missing declaration for bool_clause_reif builtin.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Tommy Persson
|
|
[DESCRIPTION]
|
|
FlatZinc interpreter now does not try to post constraints if there was a
|
|
syntax error during parsing.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Roberto Castañeda Lozano, Matthias Balzer
|
|
[DESCRIPTION]
|
|
Fixed posting of Boolean element expressions and relations.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Joseph Scott
|
|
[DESCRIPTION]
|
|
Fixed printing of regular expressions.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added distinct-except-constant constraint.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added distinct with optional variables.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Add support for the alldifferent_except_0 constraint by rewriting to a
|
|
global cardinality constraint.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The simple LNS using relax_and_reconstruct can now take an optional third
|
|
argument that is used as an initial solution.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The restart meta search engine must be used with the
|
|
branch-and-bound engine for best solution search.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
For meta search engines, the order of template arguments has been
|
|
changed: the first is the script type, the second is the engine
|
|
type.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
All branchers of a space can be killed by
|
|
BrancherGroup::all.kill(home). This is the default for the master()
|
|
function when using portfolio search.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The clone() function takes an additional optional argument that defines
|
|
whether AFC information is shared among clones.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The number of assets to use for portfolio-based search can be
|
|
passed on the commandline as -assets.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Portfolio-based search has been added (both sequential and
|
|
parallel). Please see "Modeling and Programming with Gecode" for
|
|
details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The master() and slave() configuration functions has been changed
|
|
as they are now also used for portfolio-based search. Please see
|
|
"Modeling and Programming with Gecode" for details.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Classes can now inherit from HeapAllocated when using the Gecode
|
|
heap object for memory management.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The restart engine would not properly delete some data structures
|
|
when being deleted.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added some additional propagation to circuit and path
|
|
constraints, based on: Kathryn Glenn Francis, Peter Stuckey,
|
|
Explaining Circuit Propagation, Constraints (2014) 19:1-29.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Joseph Scott
|
|
[DESCRIPTION]
|
|
Missing = SUBSCRIBE annotations for modification events are
|
|
properly reported.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The unary constraint now can also perform time-tabling propagation.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The level of propagation of the cumulative constraint can now be
|
|
controlled via the integer propagation level argument. Please
|
|
consult Modeling and Programming with Gecode for details.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The level of propagation of the unary constraint can now be
|
|
controlled via the integer propagation level argument. Please
|
|
consult Modeling and Programming with Gecode for details.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The selection for extensional table constraints whether to
|
|
optimize for speed or memory is now controlled by the integer
|
|
propagation level argument. The old argument of type
|
|
ExtensionalPropKind has been removed (the type has been removed
|
|
as well).
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The commandline option -icl (for integer consistency level) has
|
|
been replaced by -ipl (for integer propagation level). All new
|
|
levels can be specified by a comma separated list as argument to
|
|
-ipl.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The integer consistency level (IntConLevel) has been renamed to
|
|
integer propagation level (IntPropLevel). Additional levels for
|
|
speed, memory, basic, and advanced propagation have been added.
|
|
See Modeling and Programming with Gecode for details.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
The count constraint with INT_GR relation was broken (off-by-one error).
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Ananja Muddukrishna
|
|
[DESCRIPTION]
|
|
The bin-packing model did not use a best-fit solution for the
|
|
upper bound, but only a first-fit.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Some count constraints are now optimized in case its arguments are
|
|
assigned.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Compiles with Visual Studio 2015.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
The binpacking constraint works even if all items are of size zero.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Constrain bin variables even for zero-sized items in binpacking constraint.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fix a bug in the parser when parsing float variable domains.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Added variant of argmin and argmax with offset.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Pete Nightingale
|
|
[DESCRIPTION]
|
|
Make bounds propagation the default for global cardinality constraints
|
|
in FlatZinc.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Add support for generating the FlatZinc parser using bison version 3.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Andrea Rendl
|
|
[DESCRIPTION]
|
|
Fix branching on introduced variables, which could sometimes lead to
|
|
unassigned variables appearing in the output.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Jean-Noël Monette
|
|
[DESCRIPTION]
|
|
Improve error messages in FlatZinc for some type errors.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 4.4.0
|
|
Date: 2015-03-20
|
|
[DESCRIPTION]
|
|
This release fixes some bugs and improves some search-related aspects.
|
|
|
|
Note that you will have to change all scripts that inherit from
|
|
the pre-defined script classes (Script, IntMinimizeScript,
|
|
IntMaximizeScript, FloatMinimizeScript, FloatMaximizeScript). The
|
|
change is easy: in your constructor you have to add a call to the
|
|
constructor of the pre-defined script class with the command line
|
|
options as argument. Just check any of the Gecode example for how
|
|
it is done.
|
|
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Mark Manser
|
|
[DESCRIPTION]
|
|
An option -step now can pass an improvement step for
|
|
optimization of float problems.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
All scripts now must call the constructor of their base class
|
|
with an option argument.
|
|
|
|
Note that you will have to change your models by a call to the
|
|
constructor of the script class with an option argument!
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Mark Manser
|
|
[DESCRIPTION]
|
|
An option -step now can pass an improvement step to scripts of
|
|
type FloatMinimizeScript and FloatMaximizeScript.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Mark Manser
|
|
[DESCRIPTION]
|
|
The classes FloatMinimizeSpace and FloatMaximizeSpace can be
|
|
created with an improvement step for optimization.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Ahmed Kamal
|
|
[DESCRIPTION]
|
|
Added support for missing builtins array_float_element
|
|
(by decomposition), float_lin_lt and float_lin_lt_reif.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added functions to Stop class that can create common stop objects.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Exposed class definitions for common cutoff generators.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
LNS could fail when the search was restarted before finding the first solution.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
Fix memory leak in the DFS and BAB search engines that could make restart-based
|
|
search run out of memory very quickly.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added option -seed for passing a seed to random number generators.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added quasigroup completion benchmarks.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Delay efforts for restarting until it is really needed after a
|
|
solution has been found.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 4.3.3
|
|
Date: 2015-01-20
|
|
[DESCRIPTION]
|
|
This release adds support for LNS to FlatZinc, adds support for
|
|
MiniZinc 2, fixes a number of bugs and some new constraints.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added support for arg_min and arg_max constraints.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added argmin and argmax constraints.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Zichen Zhu
|
|
[DESCRIPTION]
|
|
Now no-goods are extracted properly in case a solution is found.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Add support for the MiniZinc 2 min/max builtins. The Gecode MiniZinc library
|
|
is now compatible with both MiniZinc 1.6 and 2.0.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Change the slave function for meta search engines to return whether the search
|
|
in the slave is going to be complete. This is necessary for example in LNS,
|
|
where completing the search in the slave does not mean that the overall search
|
|
is finished.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Make a simple form of LNS accessible from FlatZinc. To use it, include
|
|
gecode.mzn and add the relax_and_reconstruct search annotation defined in
|
|
that file.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Farshid Hassani Bijarbooneh
|
|
[DESCRIPTION]
|
|
The channeling propagator between a SetVar and an array of BoolVars
|
|
propagated incorrectly when posted on a fixed SetVar.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Support dom_w_deg search annotation.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Search on objective function variable after all other variables (but
|
|
still before introduced variables).
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Mats Carlsson
|
|
[DESCRIPTION]
|
|
Fix special case detection for cumulatives constraint, could sometimes
|
|
incorrectly turn a cumulatives into a disjunctive constraint.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Björn Böttcher
|
|
[DESCRIPTION]
|
|
Fix behavior of -a command line option for satisfaction problems.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Chris Mears
|
|
[DESCRIPTION]
|
|
Fix default search annotation for float objectives.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Willem Van Onsem
|
|
[DESCRIPTION]
|
|
Install parser.tab.hh header.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Add support for gecode_schedule_cumulative_optional constraint.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 4.3.2
|
|
Date: 2014-11-06
|
|
[DESCRIPTION]
|
|
Fixed major bug in and added extensive tests for the FlatZinc
|
|
interpreter. If you are using Gecode with FlatZinc you should
|
|
definitely upgrade!
|
|
|
|
[ENTRY]
|
|
Module: test
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added long-overdue tests for the FlatZinc interpreter.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Alex Elliott
|
|
[DESCRIPTION]
|
|
Fix cmake build file to work better when building with Qt.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Jean-Noël Monette
|
|
[DESCRIPTION]
|
|
Fixed major bug that would cause the FlatZinc interpreter to crash
|
|
on most models.
|
|
|
|
[RELEASE]
|
|
Version: 4.3.1
|
|
Date: 2014-10-22
|
|
[DESCRIPTION]
|
|
This release fixes some minor issues and a major bug for the
|
|
FlatZinc interpreter. It considerably extends restart-based
|
|
search so that it supports LNS (Large Neighborhood Search).
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The restart-based search engine has been made more powerful: the
|
|
master() and slave() configuration functions have been extended
|
|
and get more information about each restart and the engine always
|
|
maintains the last solution found. In particulae, the engine is
|
|
now powerful enough to support LNS (Large Neighborhood
|
|
Search). For details, please see MPG.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The interface of cutoff generators has been extended in that it
|
|
now offers current value access (operator()()) as well as
|
|
increment (operator++()).
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added a cutoff generator that merges the values of two cutoff generators.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Pierre Talbot
|
|
[DESCRIPTION]
|
|
Gecode can now be used together with boost without conflicts.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Petter Strandmark
|
|
[DESCRIPTION]
|
|
Added support for building examples with CMake.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Léonard Benedetti
|
|
[DESCRIPTION]
|
|
Removed potentially undefined behavior for regular expressions.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Mats Carlsson
|
|
[DESCRIPTION]
|
|
Fixed FlatZinc aliasing detection on array variables that
|
|
introduced incorrect aliases between variables.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Frank Imeson
|
|
[DESCRIPTION]
|
|
Fixed parser for integer literals to generate error message when
|
|
integers are out of bounds.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Peter Nightingale
|
|
[DESCRIPTION]
|
|
Fixed the FlatZinc interpreter to accept empty arrays as arguments in
|
|
annotations.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Carleton Coffrin
|
|
[DESCRIPTION]
|
|
Fixed the behaviour for the -n and -a command line options for
|
|
optimisation models.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 4.3.0
|
|
Date: 2014-08-28
|
|
[DESCRIPTION]
|
|
This release fixes a large number of both minor and major bugs,
|
|
has some improvements for FlatZinc, and adds multi-dimensional
|
|
bin-packing.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Victor Zverovich, Tony Kelman
|
|
[DESCRIPTION]
|
|
Various fixes for CMake:
|
|
- 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.
|
|
- Add GECODE_USE_QT variable which specifies whether to use Qt. Qt is used if GECODE_USE_QT is TRUE or unset.
|
|
- Prevent linker warnings on MSVC.
|
|
- 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.
|
|
- Fix to fully link internal dependencies needed for creating DLLs: https://github.com/ampl/gecode/pull/2
|
|
.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The --free command line option has been renamed to -f to comply with other
|
|
FlatZinc solvers.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The diffn constraint now posts additional implied cumulative constraints
|
|
to strengthen propagation.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added unshare constraints to all constraints that need them. Without unsharing,
|
|
variables occurring multiply in the same FlatZinc arrays could lead to the
|
|
FlatZinc interpreter aborting with an error.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Treat equality constraints in FlatZinc as aliases instead of posting
|
|
propagators, and post simple domain constraints before more complex
|
|
propagators to help post the most efficient versions.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Stefano Gualandi, Brian Kell, Willem-Jan Van Hoeve
|
|
[DESCRIPTION]
|
|
Added example for multi-dimensional bin-packing
|
|
constraint. Thanks to Brian and Willem-Jan for allowing us to use
|
|
their data set.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
Author: Stefano Gualandi
|
|
[DESCRIPTION]
|
|
Added multi-dimensional bin-packing constraint.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Allow 0.0 as decay value.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Roland Stigge
|
|
[DESCRIPTION]
|
|
Added patch for PowerPC (downstream patch from Debian).
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: David Rijsman
|
|
[DESCRIPTION]
|
|
Added missing boost header files.
|
|
|
|
[ENTRY]
|
|
Module: test
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Victor Zverovich
|
|
[DESCRIPTION]
|
|
Removed uninitialized access.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Victor Zverovich
|
|
[DESCRIPTION]
|
|
Removed compiler warning.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Victor Zverovich
|
|
[DESCRIPTION]
|
|
Removed compiler warning.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Victor Zverovich
|
|
[DESCRIPTION]
|
|
Fixed FlatZinc interpreter to compile with clang in C++11 mode.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Bauke Conijn
|
|
[DESCRIPTION]
|
|
Re-enabled parts of not-first-not-last propagation for unary with
|
|
optional tasks.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Catch exceptions and print proper error message.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed posting of set relations involving constants.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Roberto Castañeda Lozano, Gabriel Hjort Blindell
|
|
[DESCRIPTION]
|
|
In extremely rare cases, the bounds-consistent distinct (and
|
|
hence all other distinct propagators as they use the
|
|
bounds-consistent one internally) propagator could suffer from
|
|
numerical overflow.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
The function brancher did not return a handle.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Duane Leslie
|
|
[DESCRIPTION]
|
|
No-good literals for greater-or-equal did not prune as much as they should.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 4.2.1
|
|
Date: 2013-11-05
|
|
[DESCRIPTION]
|
|
This release fixes several major bugs and adds some minor
|
|
improvements.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Compiles with MSVC 2013.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
Fix for restart-based search when the master does not have a branching.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
Restart-based search did not work when the cutoff limit did not
|
|
strictly increase.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
Added support for a repeat cutoff generator.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
Thanks: Anne Meyer
|
|
[DESCRIPTION]
|
|
Fix performance of domain consistent element for the case that the result
|
|
variable is assigned.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Bauke Conijn
|
|
[DESCRIPTION]
|
|
Fixed incorrect propagation in sortedness with permutation variables.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Duane Leslie
|
|
[DESCRIPTION]
|
|
Fixed cumulative constraint for 0-usage tasks.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Duane Leslie
|
|
[DESCRIPTION]
|
|
Fixed special case check for cumulative that would wrongly classify
|
|
some instances as disjunctive.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
The nroot constraint now propagates correctly for negative
|
|
numbers when the exponent is odd.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fix CMake to also build FlatZinc and Driver correctly.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug in auxiliary variable branching.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Philippe Kezirian
|
|
[DESCRIPTION]
|
|
The sum of IntArgs can now be computed similarly to the sum of
|
|
IntVarArgs.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Activity information can now be initialized with a branch merit function.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Activity information can now be initialized with a branch merit function.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Activity information can now be initialized with a branch merit function.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Activity information can now be initialized with a branch merit function.
|
|
|
|
|
|
|
|
[RELEASE]
|
|
Version: 4.2.0
|
|
Date: 2013-07-19
|
|
[DESCRIPTION]
|
|
This release adds no-goods from restarts, removes memory
|
|
statistics (but Gecode can be configured for more accurate
|
|
statistics), and fixes a number of bugs.
|
|
|
|
[ENTRY]
|
|
Module: iter
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Farshid Hassani Bijarbooneh, Joseph Scott
|
|
[DESCRIPTION]
|
|
Fixed segfault in NaryUnion iterator.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added configure switch --enable-peakheap that adds support for
|
|
memory statistics to the kernel. This comes with a runtime overhead,
|
|
but provides more accurate information than the previous search
|
|
engine based statistics.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: removed
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Removed memory statistics from the search engines. The reason is
|
|
that the figures were too inaccurate (memory for shared data
|
|
structure, caches, etc were not counted) and computing the
|
|
figures was complicated. This feature is replaced by a configure
|
|
switch that enables peak memory tracking based on operating system
|
|
information.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Low-level support for AFC is now public.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Search options have an additional field nogoods_limit that
|
|
defines too which depth a search tree is inspected for no-goods.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The master() member function used during restart-based search now
|
|
takes an additional no-goods argument. The default master()
|
|
function posts no-goods (only effective when enabled in
|
|
Search::Options). See MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
When using restart-based search, the use of no-goods from
|
|
restarts can be switched on/off with the -nogoods command line
|
|
option and the depth limit for extraction of no-goods with the
|
|
-nogoods-limit command line option.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added support for no-goods from restarts, see Modeling and
|
|
Programming with Gecode for details.
|
|
|
|
Note that also entails that the statistics will report different
|
|
a different peak depth than in previous releases of Gecode when
|
|
using no-goods.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added support for value_precede_int and value_precede_set constraints.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Chris Mears
|
|
[DESCRIPTION]
|
|
Fixed a memory leak in FlatZincSpace and a few more in the FlatZinc
|
|
parser.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Chris Mears
|
|
[DESCRIPTION]
|
|
Fixed a bug in implicit search heuristic that could lead to a
|
|
segmentation fault when minimizing an array element.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Victor Zverovich
|
|
[DESCRIPTION]
|
|
Fixes link error for CMake with MSVC.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 4.1.0
|
|
Date: 2013-07-01
|
|
[DESCRIPTION]
|
|
This release adds a really useful feature and the required
|
|
infrastructure to Gist (it now can show information on the
|
|
alternatives in a search tree), has some new features, and fixes
|
|
quite a number of bugs (some of which are quite serious, in
|
|
particular for: LDSB, restart-based search, and FlatZinc).
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Vincent Barichard
|
|
[DESCRIPTION]
|
|
Fixed a race condition when using parallel search.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed SET_VAR_ACTIVITY_SIZE_MIN/MAX, which used to compute
|
|
size/activity instead of activity/size.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Implement the AFC search heuristic using FastMutex, which greatly
|
|
improves parallel search performance on Mac OS X when using AFC.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added FastMutex class that is implemented using spin locks on
|
|
some platforms.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Victor Zverovich
|
|
[DESCRIPTION]
|
|
Fixed INT_VALUES_MAX() branching (INT_VALUES_MIN() was used instead).
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed FLOAT_VAR_ACTIVITY_SIZE_MIN/MAX, which used to compute
|
|
size/activity instead of activity/size.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Stefano Gualandi
|
|
[DESCRIPTION]
|
|
Added LDSB-based symmetry breaking to graph coloring example.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Peter Nightingale
|
|
[DESCRIPTION]
|
|
Fixed printing of float variables to be compatible with MiniZinc output.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Peter Nightingale
|
|
[DESCRIPTION]
|
|
Fixed a segmentation fault when using FlatZinc with float variables
|
|
that have initializers.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Stefano Gualandi
|
|
[DESCRIPTION]
|
|
Fixed crash due to combination of LDSB and Activity.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Stefano Gualandi
|
|
[DESCRIPTION]
|
|
Fixed crash due to combination of LDSB and Activity.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The internal representation of integer variable domains could leak
|
|
memory to the space.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The FlatZinc interpreter now supports float variables as objective
|
|
functions.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Gist now can show information on the alternatives in a search tree,
|
|
using the new menu options "Label branches" and "Label path".
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Random value selection for float branchings was not declared with
|
|
the right types.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Set branchings now take an optional argument for a
|
|
user-defined print function. See MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Float branchings now take an optional argument for a
|
|
user-defined print function. See MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Integer and Boolean branchings now take an optional argument for a
|
|
user-defined print function. See MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Branchers now support a print() member function.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added {int,bool,set,float}_default_search annotations. These can be used
|
|
on solve items to declare the default search strategy for the respective
|
|
variable types.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
Boolean expressions could lead to a segfault when initialized
|
|
with default constructor.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Both AFC and Activity can be changed by a set() function.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added if-then-else constraint (called ite) for integer variables.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Pascal Francq
|
|
[DESCRIPTION]
|
|
Added classes FloatMinimizeScript and FloatMaximizeScript for
|
|
cost-based optimization with a float cost variable.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added classes IntMinimizeScript and IntMaximizeScript for
|
|
cost-based optimization with an integer cost variable. While the
|
|
classes MinimizeScript and MaximizeSpcript are still available,
|
|
there use is deprecated and a later release might remove them.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added classes IntMinimizeSpace and IntMaximizeSpace for
|
|
cost-based optimization with an integer cost variable. While the
|
|
classes MinimizeSpace and MaximizeSpace are still available,
|
|
there use is deprecated and a later release might remove them.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Pascal Francq
|
|
[DESCRIPTION]
|
|
Added classes FloatMinimizeSpace and FloatMaximizeSpace for
|
|
cost-based optimization with a float cost variable.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed the random search strategies to all use the same random number
|
|
generator instead of different generators all initialised with the same
|
|
seed (and therefore all producing the same sequences).
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Tias Guns
|
|
[DESCRIPTION]
|
|
Added int2float constraint which was missing in the FlatZinc
|
|
interpreter.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: David Rijsman
|
|
[DESCRIPTION]
|
|
Fixed binpacking crash when the b and s arrays are empty.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Cliff Yapp
|
|
[DESCRIPTION]
|
|
CMake build system tweaked for out-of-source-dir building.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Duong Khanh Chuong
|
|
[DESCRIPTION]
|
|
Fixed missing propagation in reified rel-constraints.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Chris Mears, Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
Fixed a bug in restart-based search, which would crash if the
|
|
problem is failed at the root or only had a single solution
|
|
during best-solution search.
|
|
|
|
[RELEASE]
|
|
Version: 4.0.0
|
|
Date: 2013-03-14
|
|
[DESCRIPTION]
|
|
This release adds a multitude of new features, fixes many bugs,
|
|
and offers a number of performance improvements. There are too
|
|
many major improvements to even summarize them here all, so here
|
|
are just some highlights: LDSB as automatic symmetry breaking
|
|
during search; restart-based search; complete redesign and
|
|
reimplementation of branching enhancing the expressiveness
|
|
massively (AFC with decay, activity, user-defined variable and
|
|
value selection, tie-break control, better randomization, ...);
|
|
half-reification; addition of floating point constraints.
|
|
|
|
It is recommended to read the new Chapter in MPG on branching as
|
|
the changes are substantial and require you to change your
|
|
programs, see also the full list of changes below.
|
|
|
|
As the interfaces has changed, please consult \ref
|
|
PageHowToChange_4 "How to Change to Gecode 4.0.0".
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Renamed the FlatZinc executable to fzn-gecode, to better distinguish
|
|
it when installed alongside other FlatZinc implementations.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
Author: Christopher Mears
|
|
[DESCRIPTION]
|
|
Gecode now supports Lightweight Dynamic Symmetry Breaking (LDSB),
|
|
see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: major
|
|
Author: Christopher Mears
|
|
[DESCRIPTION]
|
|
Gecode now supports Lightweight Dynamic Symmetry Breaking (LDSB),
|
|
see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
Thanks: Manuel Loth
|
|
[DESCRIPTION]
|
|
Added value selection strategies for branching
|
|
INT_VAL_NEAR_MIN(), INT_VAL_NEAR_MAX(), INT_VAL_NEAR_INC(), and
|
|
INT_VAL_NEAR_DEC(). They can take a previous assignment to the
|
|
variables to branch on and try to choose values which are near
|
|
(see MPG for details).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added domain constraint that constrains a variable (or an array)
|
|
according to the domain of another variable.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added domain constraint that constrains a variable (or an array)
|
|
according to the domain of another variable.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added domain constraints for arrays of set variables.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The default constrain() function for best-solution search now
|
|
does by default nothing (it used to throw an exception).
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added commandline options to control restart-based search, see
|
|
MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added support for restart-based search, see MPG for details.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added support for more search annotations (defined in gecode.mzn), and for
|
|
the restart and decay command line options.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Victor Zverovich
|
|
[DESCRIPTION]
|
|
Added CMake build script for Gecode (CMakeLists.txt).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added variants of dom that copy the domain from one variable to
|
|
another.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Decay values can now be passed on the command line using the
|
|
switch -decay.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Variable selection for branching used the quotient of size
|
|
divided by degree, accumulated failure count, or activity. They
|
|
now use the inverse. That is, for example, it is not any longer
|
|
INT_VAR_SIZE_DEGREE_MIN() but INT_VAR_DEGREE_SIZE_MAX() (that is,
|
|
largest degree divided by size).
|
|
[MORE]
|
|
That looks like an annoying change but is in fact essential: the
|
|
strategies using accumulated failure count and activity now could
|
|
have run into division by zero issues. And just changing the
|
|
implementation is not good enough because the values of these
|
|
measures can now be exposed during tie-breaking.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Variable selection using AFC now supports decay. Read more in MPG.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Arithmetic, linear, and cumulative constraints now resort to
|
|
internal operations using "long long int" rather than
|
|
"double". This improves performance but also extends the range
|
|
over integer coefficients that can be handled by linear
|
|
constraints.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The mzn-gecode shell script now passes arguments correctly to the
|
|
FlatZinc interpreter.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Compiles with MSVC 2012.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Updated to compile with Qt version 5.0 (still works with Qt >= 4.3 as well).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
Fixed precede constraint with less than two values.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
Fixed precede constraint with less than two values.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The nooverlap constraint now allows sharing of unassigned
|
|
variables in its argument arrays.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added half-reification for reified constraints (see Modeling and
|
|
Programming with Gecode for details).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added half-reification for reified constraints (see Modeling and
|
|
Programming with Gecode for details).
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Simon Ekvy
|
|
[DESCRIPTION]
|
|
Removed spurious debug output for among constraint.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Lin Yong
|
|
[DESCRIPTION]
|
|
Fixed a bug where bounds consistent distinct reported subsumption
|
|
instead of failure in certain cases.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed a concurrency problem that caused an exception to be thrown at
|
|
the end of a multi-threaded search on some platforms.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The coefficients for linear constraints are now divided by
|
|
their greatest common divisor. That means that some equations
|
|
can be handled now that previously threw an OutOfLimits exception,
|
|
and some equations can be handled with the more efficient integer
|
|
precision propagators that previously required double precision.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The entire infrastructure for variable-value branchers has been
|
|
reimplemented from scratch. The new design makes a much better
|
|
compromise between code size, efficiency, and expressiveness:
|
|
the efficiency is about the same (for examples with no
|
|
propagation and just branching one can note a slowdown of 2-4%)
|
|
while code size shrinks drastically (the overall code size for
|
|
integer variables shrinks by 20%) and the architecture is much
|
|
more expressive (in particular, it supports tie-break limits, see
|
|
MPG).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
Generalized definition of no-overlap propagators for better reuse.
|
|
|
|
[ENTRY]
|
|
Module: iter
|
|
What: documentation
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Clarified for several iterators that when using the assignment
|
|
operator both iterators must be allocated from the very same
|
|
region.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The interface for branching on integer and Boolean variables has
|
|
changed considerably (supporting user-defined variable and value
|
|
selection, tie-break limit functions, handlers to created
|
|
branchers, and more). In order to change, you have to add () to
|
|
all variants of INT_VAR, INT_VAL, and INT_ASSIGN. For example,
|
|
INT_VAR_SIZE_MIN becomes the function call INT_VAR_SIZE_MIN() and
|
|
INT_VAL_MIN_MIN becomes the function call INT_VAL_MIN_MIN(). Some
|
|
of these functions expect additional arguments and can take also
|
|
optional arguments (this replaces the VarBranchOptions and
|
|
ValBranchOptions). Please read the new "Branching" chapter
|
|
in MPG.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The interface for branching on integer and Boolean variables has
|
|
changed considerably (supporting user-defined variable and value
|
|
selection, tie-break limit functions, handlers to created
|
|
branchers, and more). In order to change, you have to add () to
|
|
all variants of SET_VAR, SET_VAL, and SET_ASSIGN. For example,
|
|
SET_VAR_SIZE_MIN becomes the function call SET_VAR_SIZE_MIN() and
|
|
SET_VAL_MIN_INC becomes the function call SET_VAL_MIN_INC(). Some
|
|
of these functions expect additional arguments and can take also
|
|
optional arguments (this replaces the VarBranchOptions and
|
|
ValBranchOptions). Please read the new "Branching" chapter in
|
|
MPG.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The random seeds for variable and value branching options can now
|
|
be initialized from a hardware random number generator (see MPG
|
|
for details).
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The restart best solution search engine has been removed (it is
|
|
subsumed by the new restart-based meta search engine RBS).
|
|
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added pow and nroot expressions for integer variables.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added pow and nroot constraints.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed potential rounding issues in sqr and sqrt constraints.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The search engines now do not allocate memory on the search stack for
|
|
the rightmost branch of each node. This means that the search tree
|
|
depth is now computed differently. It now represents the actual peak
|
|
depth required at any one time, taking into account that rightmost
|
|
branches reuse the stack entry of their parents.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Manuel Baclet
|
|
[DESCRIPTION]
|
|
Fixed copying of tuple sets in extensional constraints and IntSets in
|
|
sequence constraints (could lead to crashes when using parallel search).
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Max Ostrowski
|
|
[DESCRIPTION]
|
|
Fixed a bug in the allocation of very large bitsets.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: performance
|
|
Rank: major
|
|
Thanks: Zandra Norman
|
|
[DESCRIPTION]
|
|
Fixed a bug in the main memory allocation routine: now heap block
|
|
sizes are decreased dynamically as they should be. Also changed
|
|
the memory configuration parameters as explained in: Zandra
|
|
Norman, Memory Management for Gecode. KTH Royal Institute of
|
|
Technology, Sweden, Bachelor thesis, TRITA-ICT-EX-2012:143, 2012.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Andrea Pretto
|
|
[DESCRIPTION]
|
|
Added options -file-sol and -file-stat for writing solutions and
|
|
statistics to arbitrary files and streams.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Jean-Noël Monette
|
|
[DESCRIPTION]
|
|
Exported registry and helper functions so that users can add
|
|
constraint handlers to the FlatZinc interpreter.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added option to invoke move cursors during the automatic search.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Respect IntConLevel argument for reified linear constraints with a
|
|
single integer variable.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Jean-Noël Monette
|
|
[DESCRIPTION]
|
|
Added missing propagation for nary min/max constraint.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added native support for lex_less_bool and lex_lesseq_bool.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Peter Nightingale
|
|
[DESCRIPTION]
|
|
Make extensional constraints work with empty tuple sets.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Peter Nightingale
|
|
[DESCRIPTION]
|
|
Fix count (global cardinality constraint) for multiple occurrences
|
|
of the same value in the cover array.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Gecode/FlatZinc now supports float constraints and variables.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
All ArgArrays now accept STL vectors and input iterators for construction.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: major
|
|
Thanks: Gabriel Hjort Blindell
|
|
[DESCRIPTION]
|
|
The FlatZinc interpreter now supports comparing of nodes in Gist.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The FlatZinc interpreter no longer performs a complete search on variables
|
|
annotated as var_is_introduced, but tries to extend a solution on the model
|
|
variables to a solution that includes the introduced variables. Each solution
|
|
on the model variables is therefore only reported once.
|
|
|
|
[ENTRY]
|
|
Module: float
|
|
What: new
|
|
Rank: major
|
|
Author: Vincent Barichard
|
|
[DESCRIPTION]
|
|
Added support for float variables.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Kathrin Dannmann, Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
The binpacking constraint now also accepts items of size zero.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added activity-based branching strategies for integer and Boolean
|
|
variables: INT_VAR_ACTIVITY_MIN, INT_VAR_ACTIVITY_MAX,
|
|
INT_VAR_ACTIVITY_SIZE_MIN, INT_VAR_ACTIVITY_SIZE_MAX. For
|
|
details, see "Modeling and Programming with Gecode".
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added activity-based branching strategies for set variables:
|
|
SET_VAR_ACTIVITY_MIN, SET_VAR_ACTIVITY_MAX,
|
|
SET_VAR_ACTIVITY_SIZE_MIN, SET_VAR_ACTIVITY_SIZE_MAX. For
|
|
details, see "Modeling and Programming with Gecode".
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The kernel now can record the activity of variables. The activity
|
|
of a variable is defined as how often the domain of a variable
|
|
has been pruned during search. For details, see "Modeling and
|
|
Programming with Gecode".
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
New example: Colored matrix without monochromatic rectangles.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Josef Eisl
|
|
[DESCRIPTION]
|
|
The command line -print-last configures whether only the last
|
|
solution found is printed.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Boolean options (BoolOption) can now be given a false or true argument
|
|
and hence are in-line with all other option types.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Throw exception when the user-defined copy constructor of a class
|
|
that inherits from Space does not call the Space copy constructor.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: major
|
|
Author: Denys Duchier
|
|
[DESCRIPTION]
|
|
Added channeling constraint between arrays of set variables.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added native support for the inverse_set constraint.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Made implementations of MiniModel expressions private, so that the
|
|
MiniModel headers do not have to include propagator headers like
|
|
gecode/int/linear.hh any longer.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.7.3
|
|
Date: 2012-03-23
|
|
[DESCRIPTION]
|
|
This release fixes some small bugs in the FlatZinc interpreter and library.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Marco Correia
|
|
[DESCRIPTION]
|
|
Fixed "largest" variable selection strategy for set variables.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed the print command line option. Instead, for optimization problems,
|
|
using -a will print all solutions, while not using -a will only print the
|
|
last one. This is consistent with the G12 FlatZinc command line interface.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Thibaut Feydy
|
|
[DESCRIPTION]
|
|
Fixed the parser for set literals.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added mzn-gecode scripts for conveniently solving MiniZinc models
|
|
using the Gecode FlatZinc interpreter.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Integer variables with empty domains result in unsatisfiable models
|
|
instead of an error message.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Support 0-length array declarations.
|
|
|
|
[RELEASE]
|
|
Version: 3.7.2
|
|
Date: 2012-02-27
|
|
[DESCRIPTION]
|
|
This release fixes several small bugs.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Export RTTI symbols for the FlatZinc AST so that it can be used
|
|
by client code.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Adam Russell
|
|
[DESCRIPTION]
|
|
Gecode now compiles on NetBSD.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Throw exception of type OutOfLimits instead of Exception when
|
|
numerical arguments to sequence constraint are out of range.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Joseph Scott
|
|
[DESCRIPTION]
|
|
Added missing pruning to cumulative edge finding propagator.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Serge Le Huitouze
|
|
[DESCRIPTION]
|
|
Fixed rounding for printing the runtime (for example,
|
|
1:60:56.157 could be printed...).
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Denys Duchier
|
|
[DESCRIPTION]
|
|
The element constraint with SOT_UNION and IntSetArgs reported
|
|
subsumption too early, resulting in incorrect propagation.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The BoolExpr default constructor did not properly initialize
|
|
its members, causing crashes.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Posting a reified dom constraint on IntVars with an assigned control
|
|
variable does not create propagators any more, but updates the
|
|
domain immediately.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Nicholas Tung
|
|
[DESCRIPTION]
|
|
Do not crash when encountering undefined identifier as constraint argument.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Fixed sorted constraint to accept zero-length arrays.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Added some missing propagation when posting a channel constraint
|
|
between an array of Boolean variables and an integer variable.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Denys Duchier
|
|
[DESCRIPTION]
|
|
Added a macro GECODE_VERSION_NUMBER that is defined as
|
|
x*1000000+y*100+z for Gecode version x.y.z.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Jan Kelbel
|
|
[DESCRIPTION]
|
|
Fixed time output for times with zero minutes but nonzero hours.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added Archive operators for floats and doubles.
|
|
|
|
[RELEASE]
|
|
Version: 3.7.1
|
|
Date: 2011-10-10
|
|
[DESCRIPTION]
|
|
This release fixes several bugs, upgrades to MiniZinc version
|
|
1.4, and features some minor improvements.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The semantics of n-ary Boolean implication has been changed (to
|
|
the more convential reading): rel(home, BOT_IMP, x, y) where x is
|
|
an array of Boolean variable now assumes implication to be right
|
|
associative. See MPG for explanation.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added efficient propagators for n-ary Boolean xor and equivalence
|
|
(as they are now primitive in MiniZinc).
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The FlatZinc interpreter is now compatible with the G12 MiniZinc
|
|
distribution 1.4. This adds support for var and par identifiers that
|
|
begin with underscores, the array_bool_xor primitive, as well as the
|
|
command line option -r for specifying a random seed.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Domain consistency for simple counting constraints can be
|
|
switched off.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
Fixed linear inequations over integer variables that are channeled
|
|
from Boolean variables.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Compile again if threads are disabled.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Domain consistent distinct runs 10-20% faster.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Do not use SharedArray<IntSet> in the set element constraints,
|
|
because it does not properly udpate the IntSet during copying.
|
|
This could cause memory corruption.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed bugs in the computation of the required precision
|
|
(int or double) for linear propagation, and in division
|
|
operations of scale views. These could cause an incorrect
|
|
treatment of overflow in linear constraints.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed a bug that crashed the single-thread branch-and-bound
|
|
search engine when initialized with a failed space.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed a crash that occurred when double-clicking an unexplored
|
|
node while move inspectors were active.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.7.0
|
|
Date: 2011-08-31
|
|
[DESCRIPTION]
|
|
This release adds and improves quite a number of constraints
|
|
(total lexicographic order for set variables, membership
|
|
constraints for integer variables, counting constraints for
|
|
integer variables using integer sets, range, roots, set element
|
|
constraints for integer variables, number of values for integer
|
|
variables). All of these constraints (and some more) are now also
|
|
available in FlatZinc. Additionally, some fixes and improvements.
|
|
|
|
This release is an important milestone as %Gecode now provides
|
|
native implementations for all important constraints available
|
|
in MiniZinc/FlatZinc.
|
|
|
|
The documentation of constraints in "Modeling and Programming
|
|
with Gecode" now refers to the Global Constraint Catalog (for
|
|
those constraints that are listed in the catalog).
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Call solution inspectors also when exploring manually.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Flush output to Gist console, so that output that is not ended by a
|
|
newline is not lost.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added missing primitives set_le, set_lt, set_ge, and set_gt.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added set relations SRT_LQ, SRT_LE, SRT_GQ, SRT_GR for total
|
|
(lexicographic) order.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Gustavo Gutierrez
|
|
[DESCRIPTION]
|
|
Install generated variable implementation headers instead of the shipped
|
|
versions (fixes a problem when building Gecode in a separate directory).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added normal and reified membership constraints for integer and
|
|
Boolean variables.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added a convenience function values that restricts the set of values
|
|
taken by an array of integer variables to a fixed set, using the nvalues
|
|
constraint. The channel constraints between IntVarArgs and a SetVar now
|
|
also use nvalues to increase propagation.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added some additional propagation for the count constraints (now,
|
|
for example, count(home, x, y, IRT_GQ, 1) also constrains y to
|
|
only take values supported by x).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The count constraints now also support comparison to integer sets
|
|
in addition to integers and integer variables (which then implements among
|
|
from the GCCAT).
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added range and roots, which decompose into set element constraints.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added native support for among, nvalues, int_set_channel,
|
|
member_bool, member_int, sum_pred, and the range and roots
|
|
constraints.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added set element constraints with singleton integer variables
|
|
as arguments.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Johannes Inführ
|
|
[DESCRIPTION]
|
|
Fixed a memory leak in the set weights constraint, and use
|
|
IntSharedArray instead of IntArgs as parameters for weights.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Max Ostrowski
|
|
[DESCRIPTION]
|
|
Array slices can now be created from empty arrays.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added nvalues constraint.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added Dominating %Queens puzzle.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
View arrays can now also use region-allocated memory.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The estimation of bounds on linear terms did not handle overflow
|
|
correctly.
|
|
|
|
[ENTRY]
|
|
Module: iter
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Cached iterators such as n-ary union and intersection, minus, and
|
|
cache (of course) are not any longer template classes but take
|
|
template constructors and member functions. N-ary union and
|
|
intersection iterators can now also be initialized incrementaly
|
|
with iterators of different types.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The set_in and set_in_reif constraints now work for constant sets
|
|
even when %Gecode is compiled without support for set variables.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.6.0
|
|
Date: 2011-07-15
|
|
[DESCRIPTION]
|
|
This release adds new constraints (value precedence constraints
|
|
for integer and set variables, no-overlap constraints for
|
|
rectangles, constraints for Hamiltonian paths), improves and
|
|
cleans up a number of existing constraints (scheduling,
|
|
channeling, relation, bin-packing, lexicographic relations), and
|
|
adds new functionality (support for externalization of choices
|
|
for distributed search, support for incremental propagation).
|
|
|
|
Some models might have to be changed as the graph and scheduling
|
|
modules have been incorporated into the integer module (removing
|
|
the respective include directives is sufficient).
|
|
|
|
On top, there are many small fixes, in particular for FlatZinc.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The cumulatives constraint now does not post the s+p=e constraints,
|
|
harmonizing its semantics with the cumulative and unary constraints.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The cumulative constraints now support an IntVar as the capacity
|
|
argument.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added Schur's Lemma puzzle.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Optimized channeling propagator between an array of Boolean
|
|
variables and an integer variables.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Changed semantics of rel(home, x, IRT_NQ), enforces that not all
|
|
variables in x are equal. See "Modeling and Programming with
|
|
Gecode" for details.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added native support for the precedence constraint.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: major
|
|
Author: Christopher Mears
|
|
[DESCRIPTION]
|
|
Added value precedence constraint.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
Author: Christopher Mears
|
|
[DESCRIPTION]
|
|
Added value precedence constraint.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The disequality constraint between variable arrays has an efficient
|
|
propagator now.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The ordering constraints rel(home, x, IRT_LE) (also for IRT_LQ,
|
|
IRT_GR, IRT_GQ) now have an optimal implementation (single
|
|
incremental propagator).
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Jan Kelbel
|
|
[DESCRIPTION]
|
|
Fixed a small memory leak in the driver (stop objects were not deleted).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Increased performance of bin-packing propagator by 40 to 300
|
|
percent by using staging.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added native support for the no-overlap constraint (called diffn in
|
|
MiniZinc/FlatZinc).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added no-overlap constraint that enforces that rectangles do not
|
|
overlap (also known as diffn). See "Modeling and Programming with
|
|
Gecode" for details.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added constraints for Hamiltonian paths (called
|
|
path). See "Modeling and Programming with Gecode" for details.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
Support indomain_middle and indomain_interval search annotation by
|
|
replacing them with indomain_median and indomain_split, respectively.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Zoom-to-fit can now be selected during search.
|
|
|
|
[ENTRY]
|
|
Module: graph
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The graph module has been removed and its constraints have been
|
|
added to the integer module.
|
|
|
|
[ENTRY]
|
|
Module: scheduling
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The scheduling module has been removed and its constraints have been
|
|
added to the integer module.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed element and sequence propagators, which were only
|
|
correct by accident (incorrect use of GECODE_ME_CHECK instead of
|
|
GECODE_ES_CHECK).
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed sequence, partition, and union propagators, which were only
|
|
correct by accident (incorrect use of GECODE_ME_CHECK instead of
|
|
GECODE_ES_CHECK).
|
|
|
|
[ENTRY]
|
|
Module: scheduling
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed scheduling code for mandatory flexible tasks, which was only
|
|
correct by accident (incorrect use of GECODE_ME_CHECK instead of
|
|
GECODE_ES_CHECK).
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added native support for link_set_to_booleans,
|
|
global_cardinality_low_up_closed, and decreasing_bool.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Generalized lexicographic constraint to arrays of different sizes.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed memory leak when passing a failed space to a search engine with cloning
|
|
option set to false.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Moved RangeList class, which is a list of ranges implemented as a FreeList,
|
|
from the set module into the kernel. Also added corresponding
|
|
Iter::Ranges::RangeList iterator.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added a CachedView that can cache the domain between propagator invocations
|
|
and provides an efficient test whether a view has changed since the previous
|
|
invocation as well as an iterator over the removed domain values. This makes
|
|
it easier to implement incremental propagation algorithms that need exact
|
|
delta information.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added a CachedView that can cache the domain between propagator invocations
|
|
and provides an efficient test whether a view has changed since the previous
|
|
invocation as well as an iterator over the removed domain values. This makes
|
|
it easier to implement incremental propagation algorithms that need exact
|
|
delta information.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Use new cached views for a more efficient implementation of the channel constraint between IntVarArgs and SetVarArgs.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Changed keyboard shortcuts in Gist so that they work on all platforms: "Inspect"
|
|
is now Ctrl+number of inspector, for "Inspect before fixpoint" press Alt in
|
|
addition (on Mac OS, use the Command key instead of Ctrl).
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Martin Mann
|
|
[DESCRIPTION]
|
|
Fixed Makefile, now installation works when FlatZinc library is disabled.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Ruben Zilibowitz
|
|
[DESCRIPTION]
|
|
Added configure option --enable-small-codesize that results in
|
|
slightly less efficient but more compact code being generated for
|
|
non-debug builds.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The constructors for set variable arrays and argument arrays threw incorrect
|
|
VariableEmptyDomain exceptions.
|
|
|
|
[ENTRY]
|
|
Module: graph
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added circuit constraints with offsets.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The channel constraints between two integer arrays are now more
|
|
memory efficient when offsets are used.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Choices can now be written into an externalized form (called an Archive),
|
|
and reconstructed from it. This is necessary for serializing paths in
|
|
a distributed search engine.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Adapted the MiniZinc declarations and the command line options for
|
|
Gecode/FlatZinc to MiniZinc 1.3. The fz binary now works with the
|
|
minizinc driver script.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
Re-enabled the global cardinality constraint in the FlatZinc interpreter.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
Fixed the MiniZinc definition for the circuit constraints to work with
|
|
arbitrarily indexed arrays.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Alin Gherman
|
|
[DESCRIPTION]
|
|
Compiles under MSVC 2005 SP1 again.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Marco Correia
|
|
[DESCRIPTION]
|
|
Added channel aliases for set union of an array of integer variables,
|
|
and renamed channel to channelSorted.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: documentation
|
|
Rank: minor
|
|
Thanks: Marco Correia
|
|
[DESCRIPTION]
|
|
Fixed documentation for set channeling constraint.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.5.0
|
|
Date: 2011-02-01
|
|
[DESCRIPTION]
|
|
This release fixes serious bugs in parallel search, FlatZinc,
|
|
fixes some DLL issues on Windows, adds support for FreeBSD, and
|
|
adds STL-style iterators for arrays.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Denys Duchier, Chris Mears
|
|
[DESCRIPTION]
|
|
Fixed a serious bug in parallel search (took over a year to
|
|
isolate the bug).
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Peter Penchev
|
|
[DESCRIPTION]
|
|
Gecode now compiles on FreeBSD.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
Author: Gregory Crosswhite
|
|
[DESCRIPTION]
|
|
Added STL compatible iteration support for arrays (variable
|
|
arrays, argument arrays, view arrays, and shared arrays).
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Alexander Kleff
|
|
[DESCRIPTION]
|
|
Do not inline construction of linear, Boolean, and set
|
|
expressions to avoid cross-DLL allocation/deallocation issues on
|
|
Windows.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Embed resource information into Gecode DLLs and EXEs on Windows.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
Fixed incorrect posting of linear constraints with variable arrays
|
|
of size one.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Embed manifest into Gecode DLLs on Windows.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed the definitions of global_cardinality to work with MiniZinc 1.2 and
|
|
newer, and added corresponding definitions of global_cardinality_closed and
|
|
global_cardinality_low_up_closed.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.4.2
|
|
Date: 2010-10-09
|
|
[DESCRIPTION]
|
|
This release removes LDS from Gecode as it is patented in the US.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed limited discrepancy search (LDS) as it is patented in the US.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added support for binpacking constraint.
|
|
|
|
[RELEASE]
|
|
Version: 3.4.1
|
|
Date: 2010-10-08
|
|
[DESCRIPTION]
|
|
This release adds a new global constraint for binpacking (with
|
|
extended example) and filter functions for branchers. The
|
|
reference documentation has been cleaned up. In particular,
|
|
information on how to obtain, install, and link Gecode has been
|
|
expanded and moved to "Modeling and Programming with Gecode"
|
|
(Section 2.6). Additionally, the release fixes some bugs and
|
|
contains some performance improvements.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added a binpacking model using the binpacking constraint and CDBF
|
|
(complete decreasing best fit) search.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added a binpacking constraint and propagator.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added a class InstanceOptions that takes one additional string argument.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added support for global_cardinality_low_up.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: documentation
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed obsolete Glossary in reference documentation.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Gustavo A. Gómez Farhat
|
|
[DESCRIPTION]
|
|
Do not inline functions with variable arguments.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Only center node on double-click if it was undetermined (otherwise
|
|
inspecting several nodes becomes slightly annoying).
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added element expression for BoolVarArgs.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed memory allocation for non-linear expressions and made the
|
|
LinExpr constructor explicit for non-linear expressions (previously
|
|
the automatic cast from integers to LinExpr was sometimes ambiguous).
|
|
|
|
[ENTRY]
|
|
Module: scheduling
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Roberto Castañeda Lozano
|
|
[DESCRIPTION]
|
|
Fixed initialization for unary and cumulative edge-finding (just
|
|
worked accidentally).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
Thanks: Felix Brandt
|
|
[DESCRIPTION]
|
|
Branching now honors filter functions, where variables are
|
|
considered for branching only if the filter functions returns
|
|
true (see "Modeling and Programming with Gecode" for details).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Variable implementation views are now parametric with respect to
|
|
variables but not variable implementations (see "Modeling and
|
|
Programming with Gecode" for details).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Renamed the template class for variables defined by a variable
|
|
implementation from Var to VarImpVar and re-added a class Var as
|
|
base class for any variable type.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
The reified dom constraint failed instead of setting the BoolVar to 0 when the
|
|
minimum argument given was greater than the maximum.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Fixed sortedness constraint by replacing an algorithm that is linear in the
|
|
width of the union of all domains with an algorithm that is quadratic in the
|
|
number of variables. The previous algorithm crashed for domains with large
|
|
values due to excessive memory use.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Using ICL_DOM for binary linear equations with unit coefficients (such as x =
|
|
y+3) is now implemented using the much more efficient binary equality
|
|
propagator instead of the linear equation propagator (which has worst case
|
|
exponential runtime).
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Saved some memory for each node in Gist (one pointer per node, two integers
|
|
per inner node, and some additional memory on 64 bit platforms due to optimizing
|
|
alignment), and speeded up deallocation of the tree (e.g. when resetting or
|
|
closing Gist).
|
|
|
|
[ENTRY]
|
|
Module: iter
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Reimplemented n-ary union, minus, and cache iterators for much
|
|
better efficiency.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The FlatZinc parser now uses hash maps instead of STL maps, which
|
|
significantly increases parsing performance for larger files.
|
|
Furthermore, a single symbol table is used, also increasing
|
|
performance and allowing to report duplicate symbol errors,
|
|
which were previously ignored.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.4.0
|
|
Date: 2010-07-26
|
|
[DESCRIPTION]
|
|
This release includes: considerably improved support for posting
|
|
expressions and relations (also including set and full arithmetic
|
|
expressions); other improvements for modeling (array
|
|
initialization and element addition to arrays); state-of-the-art
|
|
unary and cumulative scheduling propagators (including optional
|
|
and flexible tasks); major cleanups of the variable and view
|
|
infrastructure (now also documented in MPG); cleanups of the
|
|
examples; several other fixes and performance improvements.
|
|
|
|
This release is the first to be accompanied by a complete version
|
|
of "Modeling and Programming in Gecode" which has been extended
|
|
by many new case studies and parts on programming search engines
|
|
and variables.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Boolean relations were incorrect on assigned arguments.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Posting a propagator in a failed space could make the space
|
|
non-failed again.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added LocalObject and LocalHandle classes that can be used for
|
|
space-allocated objects that are shared within a space, for
|
|
example among several propagators or propagators and branchers.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Completely cleaned up variables and views, drastically saving code.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Variables do not have init functions any longer as they are not
|
|
needed, see MPG for discussion.
|
|
|
|
[ENTRY]
|
|
Module: scheduling
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added scheduling constraints for tasks with flexible duration
|
|
(for both unary and cumulative resources), and made all scheduling
|
|
propagators deal correctly with zero length tasks.
|
|
|
|
[ENTRY]
|
|
Module: scheduling
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added propagators for cumulative scheduling.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
Fixed a bug in minimodel, which could crash when using zero
|
|
coefficients.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The driver now catches SIGINT (i.e., pressing Ctrl-C) and stops
|
|
the search properly, printing statistics up to the point where
|
|
it stopped.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
If an inspector throws an exception, an error message is
|
|
printed indicating which inspector caused the problem.
|
|
Previously, Gist would crash with a Qt error that was difficult
|
|
to trace.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed garbage collection of variables that are not printed. The
|
|
bug lead to variables being mixed up in the output.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed stress tests, the real examples are much more stressful,
|
|
actually!
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The Matrix class now supports const operations and has an output
|
|
operator.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Linear expressions can now contain non-linear parts, such as
|
|
multiplications or divisions, or set expressions such as
|
|
cardinality.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The minimodel post functions have been split into two functions, rel
|
|
and expr. While rel posts a constraint, expr returns a new variable
|
|
constrained to the given expression. This change makes it possible to
|
|
get rid of the reification operator (~) as well as the tt and ff
|
|
functions, which were previously needed to distinguish between
|
|
relations and expressions. Boolean equivalence and implication can
|
|
now be expressed using operators (==,<<,>>).
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The minimodel library now provides convenient post functions
|
|
for set constraints.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed the include and exclude tell operations of set variables so
|
|
that they work with empty ranges.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The Nonogram example now uses AFC as the default branching and
|
|
includes some more instances.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
New custom branching for the BACP example using a custom value selection.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The configure script now checks for qmake-qt4 and moc-qt4, which are used on
|
|
some Linux systems to distinguish between Qt3 and Qt4.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Running a script in time mode stops all iterations and samples
|
|
immediately if a single run reaches a limit (eases benchmarks
|
|
with timeouts).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Optimized element propagator, expect a speed up of around 35-50%
|
|
in most cases.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Posting linear expressions performs more aggressive optimizations
|
|
for assigned variables.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Arithmetic modeling functions now try to avoid creating new
|
|
variables and posting propagators for common cases.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The argument arrays now have constructors that create new variables.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The argument arrays now have constructors that create new variables.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
IntArgs with simple sequences of values can now be created using the
|
|
IntArgs::create static member function.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The build system now supports Visual C++ 2010.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Array slices can now be empty.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The support for dynamically resizing variable arrays has been
|
|
removed (it was buggy and inefficient). Instead, all argument
|
|
arrays now support adding elements using operator<<. In addition,
|
|
all arrays now support concatenation using operator+ and slicing,
|
|
and variable arrays, view arrays, and variable argument arrays
|
|
include a test whether all variables are assigned.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Take advantage of the better modeling support for the BIBD, Golomb
|
|
ruler, Kakuro, Black Hole, and Warehouse examples (nothing but dusting off
|
|
examples that have been around for ages).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
You can now construct IntArgs from an STL vector, an IntSharedArray,
|
|
or using simple comprehensions.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug in Gist where signals were sent across threads, which
|
|
makes Qt crash in certain situations on some platforms.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: David Zaremby
|
|
[DESCRIPTION]
|
|
Fixed bug in interactive search where every move in the tree required
|
|
recomputation.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.3.1
|
|
Date: 2010-04-09
|
|
[DESCRIPTION]
|
|
This release adds many new features to Gist, fixes two major bugs
|
|
in extensional constraints, and has some more cleanups to comply
|
|
with the first release of the "Modeling and Programming with
|
|
Gecode" document. And, as always some small fixes and cleanups.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: documentation
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed many small documentation quirks.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Variables that do not have output annotations are now garbage
|
|
collected during copying.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
When using sums of Boolean variables using bool2int in MiniZinc,
|
|
the FlatZinc interpreter now posts the more efficient propagators
|
|
that work directly on the Boolean variables.
|
|
|
|
[ENTRY]
|
|
Module: scheduling
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The unary scheduling propagator with optional tasks missed some
|
|
propagation sometimes.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed extensional constraint with finite automata for very
|
|
unlikely (but apparantely possible) border case.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
In addition to inspectors, you can now also register comparators, which can be
|
|
used to compare two nodes in the tree. In combination with the option to
|
|
compare before computing a fixpoint of the second node, this lets you see what
|
|
exactly was modified by a branching.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed channeling between set and integer variables which did not propagate
|
|
enough.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The extensional constraints with tuple sets could cause crashes
|
|
when used with parallel search.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Missing export declarations prevented embedding Gist as a widget. There is
|
|
now example code for embedding Gist in the directory
|
|
gecode/gist/standalone-example.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Gist can now stop exploration after all alternatives of a certain branching
|
|
are exhausted. This feature can be turned on by posting a special branching
|
|
using the Gist::stopBranch post function. Gist will then stop whenever that
|
|
special branching becomes active.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug in VarArray::resize function that occurred when shrinking
|
|
variable arrays.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The (unused and unusable) CopiedHandle have been removed.
|
|
|
|
[ENTRY]
|
|
Module: scheduling
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Tasks in unary scheduling constraints may now have processing times of 0.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added inspection of nodes before fixpoint computation.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed Set::IntSetPropagator and Set::IntSetRePropagator because they are
|
|
subsumed by the MixBinaryPropagator patterns.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed a bug where sometimes clicking on a node would select a different node.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Scrolling and zooming have been reimplemented. The new implementation is more
|
|
efficient and works around problems that occurred with large trees on some
|
|
platforms. Zooming is now more intuitive, keeping the current center
|
|
centered. You can now also zoom by pressing shift while using the mouse wheel.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added Gist inspectors for the Knights and Queens examples.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
You can now register Gist inspectors in the driver options.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Nodes can now be bookmarked.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added inspectors that react whenever a node is selected.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Comply with MiniZinc 1.1. String literals are not allowed any longer
|
|
except in annotations, the solver outputs UNKNOWN and UNSATISFIABLE
|
|
instead of just ==========, and the global constraints all_equal,
|
|
decreasing_int, and decreasing_bool are supported.
|
|
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.3.0
|
|
Date: 2010-03-15
|
|
[DESCRIPTION]
|
|
This release provides some fixes, some performance improvements
|
|
for domain propagators, and quite some clean ups how propagators
|
|
and advisors report their status to the kernel. Many of these
|
|
clean ups are essential to make it easier to program propagators
|
|
and branchers with Gecode.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Configure now prepend options to the CXXFLAGS and CFLAGS variables
|
|
instead of appending them. That way, defining the variables when
|
|
invoking configure overrides the choices configure makes (e.g.
|
|
overriding the default -O3 with -O2).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Patterns for reified propagators have been moved to the
|
|
Gecode::Int namespace.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Patterns for set propagators have been moved to the
|
|
Gecode::Set namespace.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
ViewValBrancher with random value selection did not produce a
|
|
random sequence of values.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Advisors now can force its propagator to be rescheduled,
|
|
including recomputation of its cost used for scheduling
|
|
(normally, a propagator is only rescheduled if its modification
|
|
event delta changes). An advisor can signal forceful rescheduling
|
|
by returning ES_NOFIX_FORCE or returning the return value of
|
|
ES_NOFIX_FORCE_DISPOSE. Read the forthcoming "Modeling and
|
|
Programming with Gecode" for details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The failure macros for posting GECODE_ES_FAIL and GECODE_ME_FAIL
|
|
now only accept a single argument and assume that "home" actually
|
|
refers to the home space. Read the forthcoming "Modeling and
|
|
Programming with Gecode" for details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The functions ES_FIX_PARTIAL, ES_NOFIX_PARTIAL, ES_FIX_DISPOSE,
|
|
and ES_NOFIX_DISPOSE are now member of Space. Read the
|
|
forthcoming "Modeling and Programming with Gecode" for details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The function ES_SUBSUMED now is a member of Space and accepts a
|
|
propagator as its single argument. The variant with a size as the
|
|
second argument is available as ES_SUBSUMED_DISPOSED but use is
|
|
highly discouraged. Read the forthcoming "Modeling and
|
|
Programming with Gecode" for details.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The functions ES_SUBSUMED_FIX and ES_SUBSUMED_NOFIX for advisors
|
|
have been renamed to ES_FIX_DISPOSE and ES_NOFIX_DISPOSE. Read
|
|
the forthcoming "Modeling and Programming with Gecode" for
|
|
details.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The FlatZinc interpreter can now be extended by plugins that implement
|
|
custom search strategies. The plugins are implemented as dynamically loaded
|
|
libraries using the Qt plugin mechanism. An example can be found in the
|
|
directory gecode/flatzinc/exampleplugin.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The index of the variable used for optimization is now available in the
|
|
FlatZincSpace class.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added command line option -print, which controls whether all solutions are
|
|
printed or only the last one that is found, and -search, to choose between
|
|
branch-and-bound and restart optimization.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The FlatZinc library can now parse a FlatZinc model into any subclass of
|
|
FlatZincSpace, so that custom extensions can be built. Annotations on the
|
|
solve item can now be accessed from the returned FlatZincSpace, so that
|
|
additional search strategies can be implemented.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The FlatZinc interpreter ignored the -c-d and -a-d command line
|
|
switches when used with Gist.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed special cases for posting linear and Boolean expressions
|
|
consisting of a single variable only (was highly ambigious).
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Linear expressions can freely mix integer and Boolean variables
|
|
and support construction from variable arrays via a sum function.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Changed to single, really efficient bitset implementation used
|
|
allover the system.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Considerably improved performance and memory consumption of the
|
|
DFA-based extensional constraint (regular).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Integer sets (IntSet) now have a in member function for testing
|
|
whether an integer is included.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Avoid inter-thread call to QWidget::update, which apparently causes a slight
|
|
memory leak (and warning messages on stderr) on Mac OS.
|
|
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.2.2
|
|
Date: 2009-11-30
|
|
[DESCRIPTION]
|
|
This release adds the sequence constraint (contributed by David
|
|
Rijsman, Quintiq) and has as always some small additions and
|
|
fixes.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Alberto Delgado
|
|
[DESCRIPTION]
|
|
The global cardinality (count) constraint now accepts unsorted
|
|
arrays of values. It previously propagated incorrectly if the
|
|
array was not sorted.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug in the ICL_VAL propagator for global cardinality.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
Support search annotations with constants in the variable arrays.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The memory reported could be sometimes too low (the previous fix
|
|
for 3.2.0 did not fix it for branch and bound search).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Gustavo Gutierrez
|
|
[DESCRIPTION]
|
|
Added missing assignment operator for space-based allocators for
|
|
STL data structures.
|
|
|
|
[ENTRY]
|
|
Module: iter
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Renamed test for subset or disjointness of range iterators to "compare".
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The set_in and set_in_reif constraints were buggy when used with Boolean
|
|
variables (which are usually not generated by mzn2fzn so that the issue
|
|
probably does not occur in practice).
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Subscription to constant views did not honor the flag to avoid
|
|
processing (did not occur in practice).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Subscription to constant views did not honor the flag to avoid
|
|
processing.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added car sequencing example (problem 1 in CSPLib). Uses the new
|
|
sequence-constraint.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
Author: David Rijsman
|
|
[DESCRIPTION]
|
|
Added sequence constraint.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Report if search engine has been stopped.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The global_cardinality constraint was not completely compatible with
|
|
the MiniZinc semantics. It would constrain values not mentioned in the
|
|
array to have zero occurrences, while in MiniZinc they are unrestricted.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
Element constraints in reified positions produced an error in the mzn2fzn
|
|
translation.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.2.1
|
|
Date: 2009-11-04
|
|
[DESCRIPTION]
|
|
This release fixes one serious bug in the element constraint for
|
|
matrices; adds branchings using accumulated failure counts (also
|
|
known as weighted degree); provides some optimizations (mostly
|
|
for element constraints and for regular expressions with millions
|
|
of nodes); adds two cute models (word-square and crossword); and
|
|
a little this and that as always.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: performance
|
|
Rank: minor
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
Conversion of a regular expression to a DFA would crash on
|
|
regular expressions with several million nodes (due to running
|
|
out of call stack space).
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Split rel-op.cpp and rel-op-const.cpp into several compilation units, to avoid
|
|
excessive memory and time usage of the gcc compiler.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Element constraints for integer arrays now accept shared integer
|
|
arrays (IntSharedArray). By this, the very same array can be
|
|
shared among several element constraints. Models require no
|
|
change, as IntArgs are automatically coerced to
|
|
IntSharedArrays. See "Modeling with Gecode" for more
|
|
explanation.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The semantics of division and modulo has changed to match the C standard. This
|
|
means that the operations round towards zero, and that the result of the
|
|
modulo has the same sign as its first argument.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Jan Wolter
|
|
[DESCRIPTION]
|
|
The Nonogram example no longer crashes on empty lines.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Optimized element for matrices (in special cases, the propagator
|
|
is up to six times as efficient as before).
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed statistics output (number of solutions was sometimes wrong).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed segfault in matrix element constraint.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
Author: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
Added word square puzzle.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Peter Van Beek
|
|
[DESCRIPTION]
|
|
Added crossword puzzle (thanks to Peter Van Beek for providing
|
|
access to some crossword grids).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added INT_VAL_RANGES_MIN (and INT_VAL_RANGES_MAX) as value
|
|
selection for branching: it tries the values from the smallest
|
|
(largest) range first, if the variable's domain has several
|
|
ranges, otherwise it splits the domain.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added missing dispose function for linear disequality of Boolean
|
|
variables (the only problem was that with a proper dispose
|
|
function more memory can be reused when the propagator becomes
|
|
subsumed, so really a tiny quirk).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added AFC-based branching strategies for integer and Boolean
|
|
variables: INT_VAR_AFC_MIN, INT_VAR_AFC_MAX,
|
|
INT_VAR_SIZE_AFC_MIN, INT_VAR_SIZE_AFC_MAX. For details, see
|
|
"Modeling with Gecode".
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added AFC-based branching strategies for set variables:
|
|
SET_VAR_AFC_MIN, SET_VAR_AFC_MAX, SET_VAR_SIZE_AFC_MIN,
|
|
SET_VAR_SIZE_AFC_MAX. For details, see "Modeling with Gecode".
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Propagators and variables now maintain an accumulated failure
|
|
count (AFC).
|
|
[MORE]
|
|
The AFC of a propagator counts how often has the propagator
|
|
failed during the entire search, and the AFC of a variable is its
|
|
degree plus the sum of the AFCs of all propagators depending on
|
|
the variable. While it looks straightforward, this required a
|
|
major extension of the Gecode kernel to deal with global
|
|
information accessed concurrently from several threads during
|
|
search. The AFC is also known as "weighted degree".
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Sudoku and GraphColor now uses smallest size over accumulated failure
|
|
count (AFC) as the default heuristic.
|
|
|
|
[ENTRY]
|
|
Module: bug
|
|
What: set
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
For branching, SET_VAR_DEGREE_MAX would select the variable with
|
|
smallest rather than largest degree.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Now posting of propagators and branchers take an object of class
|
|
Home (rather than just a space) that can carry additional
|
|
information relevant for posting (for example, groups and
|
|
accumulated failure information). Models do not need to be
|
|
changed in any way!
|
|
[MORE]
|
|
While models require no change, propagator rewriting does (it
|
|
will work but some information might be lost). Instead of writing
|
|
something like
|
|
GECODE_REWRITE(*this,SomeProp::post(home,...));
|
|
where *this is the propagator to be rewritten, you should now
|
|
write
|
|
GECODE_REWRITE(*this,SomeProp::post(home(*this),...));
|
|
By this, the new propagator will inherit information from *this
|
|
(in particular the accumulated failure count).
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.2.0
|
|
Date: 2009-10-05
|
|
[DESCRIPTION]
|
|
This release has some important bug fixes (in particular for
|
|
global cardinality aka count), the documentation has been
|
|
improved (worked around some issues with generation by doxygen),
|
|
integrates the FlatZinc interpreter into the Gecode source tree,
|
|
provides propagators for disjunctive scheduling (experimental),
|
|
and lots of small changes and fixes. For more consistent names,
|
|
branchings are branchers now and branching descriptions are
|
|
choices (this you might have to adapt to).
|
|
|
|
|
|
[ENTRY]
|
|
Module: scheduling
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added propagators for disjunctive scheduling (unary resource
|
|
scheduling). This is still experimental as the propagators are
|
|
not yet optimized and branching and modelling support is not yet
|
|
available.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The memory reported could be sometimes too low (that could only
|
|
happen when an advisor allocates memory which they do only now).
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: documentation
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Cleaned up the generated reference documentation, and introduced a number
|
|
of workarounds for issues in doxygen. In particular, the documentation for
|
|
linear constraints over Boolean variables and for the thread abstractions
|
|
is now generated properly.
|
|
|
|
[ENTRY]
|
|
Module: flatzinc
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The Gecode interpreter for the FlatZinc language is now part of the main
|
|
Gecode source tree.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
Thanks: George Katsirelos, Nina Narodytska
|
|
[DESCRIPTION]
|
|
Extensional propagators using DFAs or REGs (aka regular) use a
|
|
more compact state representation but create their state more
|
|
eagerly. That can improve performance considerably (twice as fast) at a slight
|
|
increase in memory.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Gist now places clones also on the leftmost branch during search.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: documentation
|
|
Rank: minor
|
|
Thanks: Vivian De Smedt
|
|
[DESCRIPTION]
|
|
Mention that also grep is needed for building Gecode.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Jan Kelbel
|
|
[DESCRIPTION]
|
|
Slightly improved strength of the division propagator.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Geoffrey Chu
|
|
[DESCRIPTION]
|
|
Fixed wrong symmetry breaking for TSP.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Alexandre Fayolle
|
|
[DESCRIPTION]
|
|
No longer depend on availability of timersub.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Optimized n-ary disjunction and conjunction and the clause constraint.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Linear constraints over Boolean variables with unit coefficients
|
|
(aka Boolean cardinality constraints) have been
|
|
reimplemented. Less memory (minus 30%) and more speed. For
|
|
example, BIBD runs 10% faster now.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Optimized thread creation by thread pools, now the creation and
|
|
deletion of arbitrarily many parallel search engines also works
|
|
for platforms using pthreads (Linux and MacOS).
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
Thanks: David Rijsman
|
|
[DESCRIPTION]
|
|
Compiles with MSVC 2005 again.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The configure script checked for Qt 4.2, although Gist requires at least
|
|
Qt 4.3.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed serious bug in the bounds propagator for global cardinality.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
A branching is now a brancher and a branching description is now a choice.
|
|
[MORE]
|
|
Classes and member functions have been renamed accordingly. The
|
|
change is necessary due to proper explanation in the forthcoming
|
|
"Programming with Gecode".
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Compiles again if no threads available.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The Gist console now has a toolbar that provides buttons to clear the text
|
|
as well as to configure the console window to stay on top of Gist.
|
|
Furthermore, after adding output, the console now automatically scrolls to the
|
|
bottom.
|
|
|
|
[ENTRY]
|
|
Module: graph
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Cost-based variants for circuit added.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The element constraint with an integer index variable now throws
|
|
an exception if used with an empty array.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The element constraint now computes more accurate variable bounds
|
|
when being posted (to avoid arithmetic overflow in naive models).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The element constraint now throws an exception if used with an
|
|
empty array.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed zero cost edges in TSP examples.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Examples now use the symmetry-option for symmetry-breaking.
|
|
[MORE]
|
|
The affected examples are:
|
|
- BlackHole
|
|
- EFPA
|
|
- Pentominoes
|
|
- SteelMill
|
|
.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added new standard option for options called symmetry.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Kish Shen
|
|
[DESCRIPTION]
|
|
Added regret_min and regret_max for IntVar and BoolVar (they were
|
|
only available for IntView).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Moved cumulatives to the new scheduling library.
|
|
|
|
[ENTRY]
|
|
Module: scheduling
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added a new module for scheduling. To use scheduling
|
|
constraints, you have to include <gecode/scheduling.hh> and link
|
|
against the scheduling library.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Moved circuit to the new graph library.
|
|
|
|
[ENTRY]
|
|
Module: graph
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added a new module for graph constraints. To use graph
|
|
constraints, you have to include <gecode/graph.hh> and link
|
|
against the graph library.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added branching following Warnsdorff's heuristic for Knights.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added branch and assign for single integer and Boolean variable.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added branch and assign for single set variable.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
Added element constraints for Matrix interface to arrays.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
Added element constraints for Matrix arrays.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
Added element constraints for Matrix arrays.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Vincent Barichard
|
|
[DESCRIPTION]
|
|
Path for search provides top and empty methods.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: change
|
|
Rank: minor
|
|
Bug: 59
|
|
Thanks: Luca Di Gaspero
|
|
[DESCRIPTION]
|
|
The driver takes copies of all string values passed top it.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.1.0
|
|
Date: 2009-05-20
|
|
[DESCRIPTION]
|
|
This release introduces parallel search, features improved memory
|
|
management (can double efficiency on MacOS X), and provides a
|
|
reusable command line driver upon popular request. And, of
|
|
course, some this and that.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The set constraint sequentialUnion has been renamed to sequence.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The parameters of the Hamming Codes example are now configurable
|
|
through command line options (instead of hard-coded).
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The stop function of stop objects now also takes a second argument
|
|
of type Search::Options. This is in particular useful for
|
|
decisions that involve the number of threads used for search.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added parallel search engines for DFS, BAB, and Restart (but not
|
|
LDS). Please make sure to read the section "Parallel search" in
|
|
"Modeling with Gecode".
|
|
[MORE]
|
|
Parallel search is still experimental: creating and destroying a
|
|
large number (more than 1000) of search engines (and hence a
|
|
large number of threads) might raise exceptions on operating
|
|
systems using pthreads as thread implementation. This will be
|
|
fixed in a future release by using thread pools.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added a tiny portable thread package specifically tailored to the
|
|
needs for parallel search. Unfortunately, other portable thread
|
|
packages have just too many issues.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed a dead lock that could occur when closing the Gist main window while
|
|
search is still running.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The inspectors are finalized before Gist exits. This fixes a bug
|
|
where (at least on Mac OS) some memory was not freed in the
|
|
correct order.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Gist now correctly centers the current node after search has finished.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Small user interface changes: disable search from hidden nodes, add depth
|
|
information to status bar, and add statistics for subtrees (available from the
|
|
node context menu and the Node menu).
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Easily add multiple inspectors to Gist. Inspectors are not
|
|
exclusive any longer, you can select any combination of them to
|
|
respond to clicks or solutions simultaneously.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The INT_VAL_MED value selection now consistently selects the greatest element
|
|
in the domain not greater than the median.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
If Gist is not available, -mode gist is the same as -mode
|
|
solution. Invocation with -help also prints information about how
|
|
Gecode has been configured.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added new example for equidistant frequency permutation arrays (EFPA).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Cache memory blocks from deleted spaces. This hardly increases
|
|
peak memory consumption. It improves performance on Windows and
|
|
Linux only by up to 5%, but on MacOS by 50% in some cases (this
|
|
improvement is absolutely essential for parallel execution).
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added a wait propagator: executes a function when a variable (or
|
|
variables) become(s) assigned.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added a wait propagator: executes a function when a variable (or
|
|
variables) become(s) assigned.
|
|
|
|
[ENTRY]
|
|
Module: driver
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added a new module "driver" as a commandline driver for
|
|
scripts. This is due to popular request: most people have been
|
|
using the support functionality for examples anyway. This
|
|
function is now wrapped into a proper module (and Example is
|
|
now called Script to be more general). See "Modeling with Gecode"
|
|
for documentation.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Support::quicksort and Support::insertion support using the less than
|
|
operator for the sort order by leaving out the comparator object.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.0.2
|
|
Date: 2009-03-26
|
|
[DESCRIPTION]
|
|
This is a bug fix release fixing two more embarrassing
|
|
bugs. However, this time we redesigned our tests carefully such
|
|
that they cover all changes and optimizations done for the
|
|
transition from 2.2.0 to 3.0.*. Please update asap.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
The radiotherapy example was missing in the Makefile.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed bug in optimization of extensional constraints with DFAs
|
|
(hard to reproduce, almost impossible).
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Gustavo Guiterrez
|
|
[DESCRIPTION]
|
|
Fixed bug in posting of Boolean expressions including reified
|
|
linear expressions. Again, that escaped our testsuite (also
|
|
fixed).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Reoptimized element with integer values and created bizarre
|
|
testcases.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
A separator is printed between solutions in the TextInspector.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.0.1
|
|
Date: 2009-03-24
|
|
[DESCRIPTION]
|
|
This is a bug fix release fixing two embarrassing bugs that were
|
|
not caught by our test infrastructure. Please update asap.
|
|
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Vincent Barichard
|
|
[DESCRIPTION]
|
|
Fixed bug in element with integer values.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
IntSetArgs no longer inherit from PrimArgArray, which was wrong
|
|
as IntSet is no primitive type and hence does not support vararg
|
|
initializers.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The examples now pass the c-d and a-d command line options correctly to Gist.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Alberto Delgado
|
|
[DESCRIPTION]
|
|
Fixed bug in reified Boolean linear constraints (an optimization
|
|
is currently disabled and will be active in the next release: the
|
|
optimization was incorrect and was never tested).
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: bug
|
|
Rank: minor
|
|
Bug: 56
|
|
Thanks: Chris Mears
|
|
[DESCRIPTION]
|
|
The Steel Mill Slab Design example had two bugs in the search
|
|
heuristic and a missing redundant constraint.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added new example for Radiotherapy.
|
|
|
|
|
|
|
|
[RELEASE]
|
|
Version: 3.0.0
|
|
Date: 2009-03-13
|
|
[DESCRIPTION]
|
|
This release is a major consolidation release: interfaces have
|
|
been cleaned up (consistent parameter passing, consistent naming,
|
|
simpler Gist interface, namespaces for operator overloading);
|
|
some functionality has been extended (propagators can be
|
|
non-monotonic; branchings support tie-breaking and random
|
|
variable and value selection); some functionality that did not
|
|
meet our quality goals has been removed (complete set variables,
|
|
reflection); usage has been simplified (auto-linking on Windows,
|
|
more commonly used filename extensions); important aspects have
|
|
been optimized (memory management, memory usage and efficiency on
|
|
64bit machines). These cleanups were in particular necessary to
|
|
make %Gecode easier to document (this release is the first to be
|
|
accompanied by tutorial documentation explaining how to model
|
|
with %Gecode).
|
|
|
|
Apart from that, many small fixes and additions. Please see below
|
|
for the details.
|
|
|
|
As the interfaces have changed considerably, please consult \ref
|
|
PageHowToChange_3 "How to Change to Gecode 3.0.0".
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: performance
|
|
Rank: minor
|
|
Thanks: Håkan Kjellerstrand
|
|
[DESCRIPTION]
|
|
Improved branching for Nonogram examples.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Stefano Gualandi
|
|
[DESCRIPTION]
|
|
Fixed bug in creation of set variables.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Vincent Barichard
|
|
[DESCRIPTION]
|
|
Updating of a council of advisors crashed if a propagator has no
|
|
advisors (as we had no example of this kind of propagators).
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Element and convexity constraints on set variables have a more
|
|
uniform interface, and the match constrained has been renamed to
|
|
channel.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Gist now takes an optional argument specifying options for the
|
|
search, including the inspectors to be used. The Qt interface has
|
|
been cleaned up, so that Gist is easier to extend.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added inspectors that react on every solution instead of a double
|
|
click.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
A TupleSet must be finalized before an extensional constraint can
|
|
be posted using it.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed automatically generated set projectors, they will come
|
|
back eventually. This makes no change to the available
|
|
functionality for set variables.
|
|
|
|
[ENTRY]
|
|
Module: cpltset
|
|
What: removed
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Complete sets have been removed (just not good enough).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
Author: Filip Konvicka
|
|
[DESCRIPTION]
|
|
Integrated space and region-based allocators that work with STL
|
|
classes.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug in domain consistent min and max propagators.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: major
|
|
Author: Tias Guns
|
|
[DESCRIPTION]
|
|
Integrated an efficient implementation of reified linear
|
|
constraints over Boolean variables.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Stefano Gualandi
|
|
[DESCRIPTION]
|
|
A bug in the independent set example has been fixed (most edges
|
|
were ignored).
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
More set branching strategies have been added (for instance random variable
|
|
and value selection), as well as set assignment.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: removed
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
All support for reflection has been removed: not clean enough,
|
|
not powerful enough, too difficult, and too much trouble.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Denys Duchier
|
|
[DESCRIPTION]
|
|
Added support for synchronized execution during branching
|
|
(executes a function).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The specification of propagation cost has changed. It now must be
|
|
computed by the static member functions of the class
|
|
Gecode::PropCost.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added support for synchronized execution that executes a function
|
|
or a static member function when a Boolean variable becomes
|
|
assigned (called when).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
Thanks: David Rijsman
|
|
[DESCRIPTION]
|
|
Make the variable deltas generated for minus_r more meaningful if
|
|
possible.
|
|
|
|
[ENTRY]
|
|
Module: iter
|
|
What: documentation
|
|
Rank: minor
|
|
Thanks: Anden Blah, Morten Boysen
|
|
[DESCRIPTION]
|
|
Mention that arrays for Iter::Values::Arrays must be sorted.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Roland Yap Hock Chuan
|
|
[DESCRIPTION]
|
|
Fixed off-by-one bug in extensional for DFAs.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The clone operation on spaces is now const.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
TupleSet now accepts duplicate tuples.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Renamed size() to ranges() for IntSet (returning the number of
|
|
ranges). Added a size() and width() function that return the size
|
|
and width of the set respectively.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Introduced CopiedHandle as a new base class for SharedHandle.
|
|
[MORE]
|
|
A copied handle provides access to an object that is used by
|
|
entities in a space, and that is copied when then space is
|
|
copied. This abstraction can be used e.g. to pass information
|
|
between different entities in a space, such as between
|
|
propagators and branchings.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Michal Dobrogost
|
|
[DESCRIPTION]
|
|
Sorting (quicksort and insertion) require strict orders and now
|
|
work with arrays of more than 2^32 elements.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Integer sets can now be initialized from integer argument arrays.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Chris Mears
|
|
[DESCRIPTION]
|
|
Output operators (<<) now respect formatting width and work with
|
|
output streams using arbitrary character types.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Denys Duchier
|
|
[DESCRIPTION]
|
|
Made macros semicolon-safe.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Denys Duchier
|
|
[DESCRIPTION]
|
|
Fixed constructors for set variables. They now throw proper exceptions when
|
|
trying to create empty variable domains.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Denys Duchier
|
|
[DESCRIPTION]
|
|
Added reified propagators constraining an integer variable to be the minimum
|
|
or maximum element of a set variable.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Support for PropKind has been removed for all but extensional constraints.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Domain constraints (dom) also accept integers now.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: major
|
|
Thanks: Max
|
|
[DESCRIPTION]
|
|
All operators are now in their correct namespace.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
LinExpr, LinRel, BoolExpr are now part of the Gecode namespace
|
|
rather than Gecode::MiniModel (to support operator resolution).
|
|
|
|
[ENTRY]
|
|
Module: test
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Tests for testing claims of bounds(Z) and bounds(D) consistency. These
|
|
tests would have found the bug in the binary min and max propagators.
|
|
[MORE]
|
|
An integer test can enable these new tests by setting the contest member
|
|
to CTL_BOUNDS_Z or CTL_BOUNDS_D. For domain-consistency propagators
|
|
the contest member is set automatically to CTL_DOMAIN. If no
|
|
consistency-testing should be done, contest should be set to CTL_NONE.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The search engines now collect statistics for the number of nodes
|
|
visited and the maximum depth of the search tree. The information
|
|
for number of clone and commit operations has been removed as it
|
|
was too confusing.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Search engines have been completely reimplemented.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Jonathan Cederberg
|
|
[DESCRIPTION]
|
|
The binary min and max propagators did not do all pruning they
|
|
should do.
|
|
[MORE]
|
|
Given the constraint x = max(y,z) with the store {x->{1,2,3},
|
|
y->{1,2}, z->{3}}, propagation did not yield any new information
|
|
(now it gives the correct result {x->{3}, y->{1,2}, z->{3}}).
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
New example: the steel mill slab design problem (Problem 38 in <a
|
|
href="http://csplib.org">CSPLib</a>).
|
|
[MORE]
|
|
The model used is from Gargani and Refalo, "An efficient model and
|
|
strategy for the steel mill slab design problem.", CP 2007. The
|
|
symmetry-breaking search is from Van Hentenryck and Michel, "The Steel
|
|
Mill Slab Design Problem Revisited", CPAIOR 2008.
|
|
|
|
[ENTRY]
|
|
Module: iter
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Stefano Gualandi
|
|
[DESCRIPTION]
|
|
Fixed init method of SingletonAppend range iterator.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed a bug in the extensional propagation-version of the domino example.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
For the Microsoft compiler, auto-link information is added during
|
|
compilation.
|
|
[MORE]
|
|
That is, by including %Gecode headers during
|
|
compilation the right libraries will be found automatically
|
|
during linking. To simplify development and deployment, the
|
|
libraries (and DLLs) encode version, platform, and build type
|
|
(release or debug) in their filename.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Posting constraints according to Boolean expressions now uses a
|
|
negation normalform and by this avoids any propagator for
|
|
negation and uses fewer propagators due to the new clause constraint.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Changed naming scheme for files.
|
|
[MORE]
|
|
All files with extension .cc have been renamed to .cpp, and .icc
|
|
has become .hpp. This avoids conflicts as .icc is typically used
|
|
for other file types. All include directives are now specified
|
|
using <...> notation instead of "...", so that %Gecode headers do
|
|
not clutter the include namespace of a client program.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The Matrix class is now in the Gecode namespace (and not in
|
|
Gecode::MiniModel).
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Reorganized the internal data structures of set variables so that each
|
|
variable takes up 8 bytes less memory on 64 bit machines.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The index structure for variable dependencies is now implemented using integers
|
|
instead of pointers, saving memory on 64 bit machines.
|
|
[MORE]
|
|
For example, the index
|
|
structure of integer variables is now 40% smaller, for Boolean variables
|
|
(which have the smallest possible index structure) we still save 16%.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added a Boolean clause constraint that supports conjunction and
|
|
disjunction of both positive and negative variables.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Now n-ary Boolean disjunction and conjunction are constant time
|
|
(rather than linear time, as before), even when a variable for
|
|
the result is used.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
%Gecode now supports weakly monotonic propagators.
|
|
[MORE]
|
|
A weakly monotonic propagator must only be able to decide for
|
|
assignments whether they are solutions or not (which is a very
|
|
natural property as it means the propagator must be a correct
|
|
implementation of a constraint). Otherwise, the propagator does
|
|
not have to be monotonic, it can even be indeterministic.
|
|
|
|
Weakly monotonic but not monotonic propagators must notify a
|
|
space about their existence: if a weakly monotonic propagator is
|
|
created, it must execute "home.notice(*this,AP_WEAKLY)"; if it is
|
|
disposed, it must execute "home.ignore(*this,AP_WEAKLY)".
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The functions force and unforce of an actor to force disposal
|
|
have been removed.
|
|
[MORE]
|
|
Now, the new interface based on notice and ignore using actor
|
|
properties must be used instead. So, instead of "force(home)",
|
|
write "home.notice(*this,AP_DISPOSE)" and, instead of
|
|
"unforce(home)", write "home.ignore(*this,AP_DISPOSE)".
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The incremental extensional propagator for tuplesets uses less
|
|
memory (around 25%) and reports its size correctly.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The element propagator for integer arrays now chooses
|
|
datastructures according to and the elements of the array.
|
|
[MORE]
|
|
This can save more than 80% memory on a 64 bit machine, and up to
|
|
75% on a 32 bit machine. In common cases, one can expect a
|
|
reduction by at least 50%.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The regular propagator now chooses datastructures according to
|
|
the size of the DFA. This can save up to 80% memory on a 64 bit
|
|
machine, and still up to 50% on a 32 bit machine.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The home space is now also passed to the cost function of a propagator.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Now everything is passed as reference (Space, Propagator,
|
|
ModEventDelta, Advisor, Branching, and BranchingDesc).
|
|
[MORE]
|
|
The reason for this massive change is to be more C++ compliant
|
|
and make the interfaces more consistent (at some places things
|
|
were passed as references and at other places as pointers, for no
|
|
obvious and explainable reason). Routines that create objects
|
|
rather than pass them (such as copy, clone, or description) still
|
|
return a pointer to an object (so that it can actually be
|
|
deleted!).
|
|
|
|
You will have to rewrite your models and other programs using
|
|
%Gecode. For models this is easy enough:
|
|
- Replace "(Space* home" by "(Space& home".
|
|
- Replace "home->" by "home.".
|
|
- Replace "(this" by "(*this".
|
|
.
|
|
That should do the trick for 99% of the models.
|
|
|
|
For the other changes, just lookout for the changes in types and
|
|
that "this" becomes "*this" now.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The memory management has been completely reworked.
|
|
[MORE]
|
|
It is now more robust, more portable (does not use alloca any
|
|
longer), more efficient, fits C++ better and is much easier too
|
|
understand. There are now three memory areas: a single heap,
|
|
spaces, and regions. Heap and spaces are as before. A region (an
|
|
object of class Region) is a simple and very efficient memory
|
|
manager for temporary memory managed in a stack fashion. These
|
|
three memory managers provide uniform operations for allocation
|
|
(alloc), deallocation (free), and reallocation (realloc). These
|
|
operations use constructors, destructors, and assignment
|
|
operators as required by C++ and are implemented with efficient
|
|
specializations for basic data types.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
PQueue has been removed (too specialized to be reused anyway).
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
GECODE_AUTOARRAY has been removed. Use a Region for memory
|
|
management instead.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
GECODE_AUTOSTACK and SentinelStack has been removed. Use
|
|
StaticStack instead.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Simpler and more efficient memory management for element
|
|
propagators (integer arrays).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
All functions for checking sharing for arrays (same, shared,
|
|
unique) require a space argument (for memory management).
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added MinimizeSpace and MaximizeSpace classes for cost-based
|
|
optimization (requires implementing a cost function returning an
|
|
integer cost variable). Optimization can now be implemented by
|
|
inheriting from these classes rather than from Space and by
|
|
implementing a cost function.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The description() member function of a space is not any longer
|
|
const: it can be called at most once.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The constrain method used for best solution search must be
|
|
virtual and takes an argument of type const Space& rather than
|
|
Space* as argument.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Tie-breaking and random selection for branch is now supported.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The values for variable and value selection for branching have
|
|
been made consistent and extended.
|
|
[MORE]
|
|
The following values have been renamed:
|
|
- SET_VAR_MIN_CARD -> SET_VAR_SIZE_MIN
|
|
- SET_VAR_MAX_CARD -> SET_VAR_SIZE_MAX
|
|
- SET_VAR_MIN_UNKNOWN_ELEM -> SET_VAR_MIN_MIN
|
|
- SET_VAR_MAX_UNKNOWN_ELEM -> SET_VAR_MAX_MAX
|
|
- SET_VAL_MIN -> SET_VAL_MIN_INC
|
|
- SET_VAL_MAX -> SET_VAL_MAX_INC
|
|
.
|
|
Tie-breaking and random selection is now supported.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The variable selection INT_VAR_DEGREE_MIN and INT_VAR_DEGREE_MAX
|
|
do not have tiebreaking with smallest domain size built in.
|
|
[MORE]
|
|
The old behavior can be reclaimed by explicit tiebreaking, for
|
|
example replace INT_VAR_DEGREE_MAX by
|
|
tiebreak(INT_VAR_DEGREE_MAX,INT_VAR_SIZE_MIN).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
View and value branchings have been completely reimplemented to support
|
|
tie-breaking and state (for randomized selection).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: removed
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
View and value assignments have been removed as they now can be
|
|
expressed by view and value branchings.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 2.2.0
|
|
Date: 2008-08-25
|
|
[DESCRIPTION]
|
|
This release adds many domain consistent propagators for
|
|
arithmetic constraints and fixes a number of bugs. Some of these
|
|
bugs fixed are potentially serious, in particular as they occur
|
|
very seldom. Please change to 2.2.0 as soon as possible (in
|
|
particular if you are using the 64bit Microsoft Visual C++
|
|
compiler). And, of course, the usual small fixes and changes.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed a bug in the memory alignment on Windows 64bit (very hard to reproduce).
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added configure options for adding a prefix and a suffix to the names of the
|
|
compiled libraries.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed a bug in the domain consistent distinct propagator that would cause
|
|
a stack overflow under rare circumstances.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The ternary intersection propagator was incorrect if any of the sets had a
|
|
maximum cardinality of Set::Limits::card.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Raphael Reischuk
|
|
[DESCRIPTION]
|
|
The attempt to access the value of an unassigned integer or
|
|
Boolean variable (IntVar or BoolVar) throws an exception now.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added bounds consistent division/modulo propagator.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
All functional linear and arithmetic constraints now put sharp
|
|
bounds on the output variable (eases interfacing to modelling
|
|
languages).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The channel constraint now comes in a version that allows to specify offsets
|
|
to the array indices.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Example-based support for SAC (singleton arc consistency) has
|
|
been removed. Might be reintroduced later in a more general
|
|
fashion.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The Makefile has a new target, check, which performs a minimal integrity check
|
|
using some tests from the test suite.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The set selection constraints are now called element.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug for domain-consistent distinct that never occurred in
|
|
practice.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug that could potentially have affected certain staged
|
|
propagators.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: documentation
|
|
Rank: minor
|
|
Thanks: David Rijsman
|
|
[DESCRIPTION]
|
|
Fixed explanation of ES_FIX and ES_NOFIX for advisors
|
|
(description was mixed up).
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The configure script now always uses the Microsoft compiler on Windows. Use
|
|
the CC and CXX environment variables to override this if you want to use
|
|
gcc.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added domain consistent multiplication propagator.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Filip Konvicka
|
|
[DESCRIPTION]
|
|
Generated variable stubs were wrong (could only be observed for
|
|
new variable types).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: David Rijsman
|
|
[DESCRIPTION]
|
|
Cumulatives did not do all the pruning it should do.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug in element with IntArgs and sharing between the two IntVars.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Jaroslav Mlejnek
|
|
[DESCRIPTION]
|
|
Fixed bug in sqrt.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: David Rijsman
|
|
[DESCRIPTION]
|
|
Fixed bug in ValSplitMin::branchingSpec.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed ViewTuple. Just not useful enough...
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Cleaned up Reflection::Var type, overloading did not conform to the C++
|
|
standard.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added domain consistent minimum (min) and maximum (max) propagators.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added domain consistent square root propagator (sqrt).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added domain consistent squaring propagator (sqr).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: documentation
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added documentation for domain consistent absolute value (abs) propagator.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added reified propagators for relations over Boolean variables.
|
|
|
|
[RELEASE]
|
|
Version: 2.1.1
|
|
Date: 2008-03-06
|
|
[DESCRIPTION]
|
|
This is a bugfix release.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Non-shared copying of dfa was broken (matters only for parallel execution).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The generated med_updated function was incorrect, resulting in potential
|
|
crashes of programs that use SetVars.
|
|
|
|
[ENTRY]
|
|
Module: cpltset
|
|
What: documentation
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The CpltSet variables are now in the correct documentation group.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed redraw artefacts on Windows.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed boost serialization.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Made the constructor of Reflection::Var explicit, otherwise overloading for
|
|
output stream operators does not work as expected.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 2.1.0
|
|
Date: 2008-02-29
|
|
[DESCRIPTION]
|
|
This release makes two essential contributions: a partly
|
|
reimplemented kernel that is faster, is simpler, and uses less
|
|
memory and lots of small and not so small fixes. This release is
|
|
the first release where really everything that we can test
|
|
(rather than everything that we initially believed to matter) has
|
|
been systematically tested. So, better switch now to 2.1.0!
|
|
|
|
Apart from that, the value range for variables has been increased
|
|
(basically, 32 bits minus three values, so that is 32 bits), the reflection
|
|
API is now fully functional and no longer considered experimental, and we have
|
|
the usual small additions.
|
|
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added interface to extensional constraints defined by TupleSets with
|
|
BoolVars.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Reimplemented linear expressions from scratch, they were just
|
|
hopelessly screwed.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added work-around for compiler bug in MSVC.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Support reified linear expressions with Boolean variables.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Throw an exception if variables occur multiply for array-based
|
|
channel constraints.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed multiplication propagator for x*y=x.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
All search engines now take an option value for configuration
|
|
instead of individual arguments for recomputation, stop objects,
|
|
etc.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed scheduling abstractions.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed extensional constraints with offset arguments.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
All minimodel functionality now understands both IntConLevel and
|
|
PropKind arguments.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed bugs in several set constraints:
|
|
rel(Space*,SetVar,IntRelType irt,IntVar) for irt=IRT_NQ,
|
|
rel(Space*,SetVar,SetOpType sot,const IntSet&,SetRelType srt,SetVar) for
|
|
sot=SOT_MINUS, srt=SRT_SUP, selectDisjoint, selectUnion with constant IntSet
|
|
arguments, dom with SRT_NQ.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug in unreflection of empty VarArrays.
|
|
|
|
[ENTRY]
|
|
Module: linear
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed overflow checking error in linear constraints.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added sqrt function.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added sqrt propagator.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added sqr post function.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The overloaded versions of dom for variable arrays could not be
|
|
resolved automatically.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added missing branching for INT_VAR_SIZE_DEGREE_MIN and
|
|
INT_VAR_SIZE_DEGREE_MAX for Boolean variables.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Stanimir Dragiev
|
|
[DESCRIPTION]
|
|
Fixed bug in posting linear expressions.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
IntSet have been reimplemented for efficiency.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: documentation
|
|
Rank: minor
|
|
Thanks: Martin Mann
|
|
[DESCRIPTION]
|
|
Function prototypes are now highlighted in the detailed function documentation.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The offset arguments for element constraints have been removed, as you can
|
|
simply add dummy elements to the array to achieve the same effect.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The offset arguments for selection constraints have been removed, as you can
|
|
simply add dummy elements to the array to achieve the same effect.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The serialization library now contains a registry of all the %Gecode post
|
|
functions. This makes interfacing to %Gecode much easier. The registry is
|
|
automatically generated from the post functions defined in gecode/int.hh and
|
|
gecode/set.hh.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Cleaned up reflection. Unreflection is now part of the kernel instead of the
|
|
serialization library. Branchings now provide a human-readable description of
|
|
a BranchingDesc. The name function of a Propagator has been renamed to ati
|
|
(actor type identifier). All reflection is now const where possible.
|
|
Unreflection of variables now checks dynamically that the variable types
|
|
match. Unreflection of propagators checks the number of arguments. A
|
|
tutorial-style section on reflection has been added to the documentation.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The limits for set variables have been moved from Limits::Set to
|
|
Set::Limits.
|
|
|
|
The range of set variables has been adapted to the range of
|
|
integer variables. For example, on a standard machine
|
|
(regardless of 32 or 64 bits), a set can hold values from -2^30+2
|
|
to 2^30-2, its maximum cardinality therefore is 2^31-3.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The limits for set variables have been moved from Limits::Set to
|
|
Set::Limits.
|
|
|
|
The range of integer variables have been extended by one bit. For
|
|
example, on a standard machine (regardless of 32 or 64 bits), the
|
|
largest possible integer value for an integer variable is 2^31-2,
|
|
the smallest -2^31+2. With other words, only the integer values
|
|
2^31-1, -2^31, and -2^31+1 are missing from the two-complement
|
|
representation (and we will never use these values for the sake
|
|
of mental sanity. We promise.).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Distinct with integer offsets checks accurately for overflow now.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Boolean variables consume 20% less memory.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Only stable and non-failed spaces can be cloned, otherwise
|
|
Space::clone raises an exception. This makes cloning and
|
|
propagation fully orthogonal. To emulate the old behavior, just
|
|
execute Space::status before Space::clone.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The number of propagators and branchings can be accurately
|
|
retrieved from both failed and non-stable spaces.
|
|
|
|
[ENTRY]
|
|
Module: examples
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added an example that interprets a JavaScript program and runs a search of the
|
|
model that the program encodes. This is an example of how to use the
|
|
JavaScript interpreter. A simple JavaScript model for n-Queens has been added,
|
|
too.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
A generic variable class has been added that can be used for interfacing. It
|
|
can store arbitrary %Gecode variables (e.g. IntVar and SetVar), and cast them
|
|
back using a run-time type check. The update, reflection, and output
|
|
operations are implemented through the reflection registry.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
(De-)Serialization to and from JavaScript added.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Both the cost and propagate function of a propagator take the
|
|
current modification event delta as input. Likewise,
|
|
retrieving the modification event for a particular View must use
|
|
the static function View::me with the passed
|
|
modification event delta. Again, this feature committed the kernel to a
|
|
particular implementation which might not be available in the
|
|
future.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Views and variables do not any longer reveal whether they have
|
|
been modified: this feature committed the kernel to a particular
|
|
implementation which might not be available in the future.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Simple Singleton Arc Consistency pre-processing has been added as an
|
|
optional step for examples.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The kernel has undergone some cleanups and improvements (much of
|
|
it got actually reimplemented):
|
|
- Automatically generated stubs for variable implementations are directly
|
|
inlined into the kernel. This improves performance, but more
|
|
importantly, lifts some limits on the number of variables. Now, the
|
|
only limit is that the sum of the ceiling of the logarithms of the
|
|
number of modification events of all variables does not exceed 32
|
|
(as an estimate, the kernel now can handle around 10 to 16 variable
|
|
types). Moreover, if the need for more variable types arises this is
|
|
straightforward to do.
|
|
- The addition of new variable types for users has been simplified.
|
|
- The main propagation loop has been entirely rewritten (much much simpler).
|
|
Now, the kernel does not optimize any longer for the case that a
|
|
variable is modified more than once during propagator execution.
|
|
While this changes the asymptotic complexity, it reduces the propagator
|
|
execution overhead by up to 30%. And a propagator is still free
|
|
to make sure that a variable is modified only once (many propagators
|
|
do that already).
|
|
- Variable implementations became smaller by one word. Now variable
|
|
implementations are optimal in the sense that no additional memory
|
|
is needed for cloning or book-keeping, the memory required for
|
|
propagation is sufficient.
|
|
- Spaces have lost some weight as memory for datastructures only used
|
|
during cloning or propagation are shared (saves some 25% of memory
|
|
per space).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Propagator modification events have been renamed to modification event
|
|
deltas (because that is what they are).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
To not confuse variable implementations with variables, variable
|
|
implementations are now always called VarImp, and not Variable.
|
|
|
|
[ENTRY]
|
|
Module: gist
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The %Gecode Interactive Search Tool (Gist), a Qt-based graphical search
|
|
engine, is now part of the main %Gecode distribution. It is currently included
|
|
as an experimental beta preview and may not be completely stable yet.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 2.0.1
|
|
Date: 2008-02-07
|
|
[DESCRIPTION]
|
|
This is a bug-fix only release. Very unfortunately, it fixes
|
|
three serious bugs in search (LDS, Restart, and assignment
|
|
branchings). We highly encourage you to switch to Gecode 2.0.1 as
|
|
soon as possible.
|
|
|
|
[ENTRY]
|
|
Module: test
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed memory leak in reflection tests.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed memory leak in set projection propagators.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed memory leak in IntSet.
|
|
|
|
[ENTRY]
|
|
Module: test
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added comprehensive tests for all search engines.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Assignment branchings wrongly reported that they feature two alternatives
|
|
rather than one.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Stefano Gualandi
|
|
[DESCRIPTION]
|
|
LDS had numerous quirks. It has been fixed and greatly improved:
|
|
it detects when the entire search tree has been probed,
|
|
independent of the maximal discrepancy.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Stefano Gualandi
|
|
[DESCRIPTION]
|
|
Restart was broken in case the problem failed immediately with
|
|
propagation only, both when being initialized or when requesting
|
|
a next solution.
|
|
|
|
[ENTRY]
|
|
Module: iter
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: David Barton
|
|
[DESCRIPTION]
|
|
Changed Ranges::Diff to make older versions of gcc happy.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: David Barton
|
|
[DESCRIPTION]
|
|
Fixed linking order so that static linking works again.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Mohamad Rabbath
|
|
[DESCRIPTION]
|
|
Re-added reified linear constraints for Boolean variables.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Domain-consistent abs could crash in certain (extremely rare) border cases.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Static initialization order was undefined, making reflection work unreliably.
|
|
In particular, linking Gecode statically did not work.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Initializing an IntVar with an empty IntSet did not throw the appropriate
|
|
exception but crashed.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Exceptions did not have rtti information when compiled with gcc and
|
|
visibility, which meant that they could not be caught.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Helmut Simonis
|
|
[DESCRIPTION]
|
|
Fixed a bug and quirk in %Kakuro puzzles.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The VarMapIter can now return both a specification and the actual VarBase* of
|
|
the currently iterated variable.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Revived boost serialization. The serialization functions will be compiled if
|
|
Gecode is configured with --with-boost.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Be less aggressive in increasing size of heap chunks.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: documentation
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug in documentation of table-based extensional constraint.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed a bug in the hash function for pointers, which could return
|
|
negative array indices.
|
|
|
|
|
|
|
|
[RELEASE]
|
|
Version: 2.0.0
|
|
Date: 2007-11-14
|
|
[DESCRIPTION]
|
|
As witnessed by the version number change, this is a major
|
|
release with too many changes, fixes, and additions to mention
|
|
them all: please consult the changelog.
|
|
|
|
The highlights are:
|
|
- New propagators: channeling between Integer variable and array
|
|
of Boolean variables, circuit, table constraint (extensional),
|
|
incremental regular constraint (extensional), incremental
|
|
Boolean linear constraints
|
|
- Boolean variables have a dedicated implementation: twice as
|
|
fast, half the memory
|
|
- Advisors for incremental propagation (see: Lagerkvist,
|
|
Schulte, Advisors for Incremental Propagation, CP 2007)
|
|
- Many crucial performance and scalability improvements: memory
|
|
management, memory footprint of propagators
|
|
- Many cleanups and more documentation, many new examples
|
|
- New set variables with complete domain representation
|
|
(CpltSetVar) [experimental]
|
|
- A reflection API to query spaces about their propagators
|
|
[experimental]
|
|
|
|
The features marked as experimental are all functional, but might
|
|
be revised in the next releases.
|
|
|
|
As %Gecode 2.0.0 is a major release, you might have to adapt your
|
|
programs: \ref PageHowToChange_2 "How to Change to Gecode 2.0.0".
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added table-based extensional constraint.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
When compiling with gcc, the default visibility of symbols in the
|
|
generated dynamic library is set to hidden.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed buggy distinct propagator for finite sets.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Helmut Simonis
|
|
[DESCRIPTION]
|
|
New example: %Kakuro puzzles.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Martin Mann
|
|
[DESCRIPTION]
|
|
Added dist and distdir targets for creating source distribution.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Filip Konvicka
|
|
[DESCRIPTION]
|
|
On windows with MSVC, always build program database files to ease
|
|
debugging of applications using %Gecode (files are also included in
|
|
packages).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added new variable selection based on largest or smallest
|
|
quotient of size and degree.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Variable arrays, view arrays, and argument arrays can directly be
|
|
printed on standard output streams.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The structure of includes has been drastically
|
|
simplified. Support for iterators ("gecode/iter.hh") is
|
|
automatically included with integers ("gecode/int.hh") and sets
|
|
("gecode/set.hh"). Likewise, all support functionality becomes
|
|
available by including "gecode/support.hh" (one can assume that
|
|
this is included in "gecode/kernel.hh").
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Shared arrays are now available in the kernel (where they properly
|
|
belong). This entails that they are available in the Gecode
|
|
namespace and not in Gecode::Support.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The extensional constraint specified by a DFA or a regular
|
|
expression (formerly known as regular) is now named "extensional"
|
|
rather than "regular".
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed small quirk in posting an absolute propagator via a function.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added channeling propagator between a SetVar and a BoolVarArray
|
|
that propagates the characteristic function of the set to the
|
|
Boolean variables.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Changed the datastructure for set variables to use singly-linked
|
|
lists.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The values (and types) for selecting how to branch have been made
|
|
uniform for all variables types: they start with INT_ (or SET_ or
|
|
CPLTSET_), followed by either VAL or VAR and the respective
|
|
strategy.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The interface for the global cardinality constraint has been simplified.
|
|
The constraint is now called count.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Regular expressions (REG) have been moved from the integer module to
|
|
the minimodel module.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Most examples have been cleaned up.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Parsing of commandline arguments has been completely redone and
|
|
is much more extensible and flexible.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
All of %Gecode has been put under the MIT license (which the
|
|
previous license was a simple rewording of).
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed huge number of casts that could (only potentially)
|
|
compromise portability.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Finite set projectors can now be specified using formulas, in addition to
|
|
set expressions.
|
|
|
|
[ENTRY]
|
|
Module: cpltset
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Finite integer set variables with complete domain representation,
|
|
based on binary decision diagrams (BDDs), have been added as a
|
|
new variable type.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
A reflection API has been added, which allows querying spaces
|
|
about the variables and propagators they contain.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Branching ids were not properly initialized. This was a serious
|
|
problem if you posted branchings in spaces other than the root
|
|
space.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Iterator-based domain operations have been renamed,
|
|
reimplemented, and extended. Now operations for both range and
|
|
value iterators are supported and the operations can be told to
|
|
perform more efficient destructive updates.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Sortedness constraints have been renamed to sorted constraints.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
VarArrays can now be resized dynamically.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Boolean linear equations and inequalities with constant
|
|
right-hand sides use constant time propagators whenever
|
|
appropriate (linear time with less overhead and memory for
|
|
propagators with few variables).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added advisors as an abstraction for incremental propagation:
|
|
advisors are executed for their propagator whenever their view
|
|
changes. Advisors, when not being used, add one word of overhead
|
|
to each variable and slow down the system in the worst case by
|
|
less than 1%. In average, no slowdown can be observed.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed a border-case bug for n-ary Boolean conjunction and disjunction.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
A new propagation condition PC_GEN_NONE (and hence, PC_INT_NONE,
|
|
...) has been introduced. Propagator patterns with this
|
|
propagation condition now do not create any subscriptions.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The regular constraint has been reimplemented, the new version
|
|
runs more than twice as fast.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added a model for the traveling salesman problem, mostly
|
|
intended to exercise the new circuit constraint (as the model is not
|
|
very competitive).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Support for reference-counted shared objects added: they handle
|
|
both reference counting as well as non-shared copying. This fixes
|
|
some bugs with the handling of shared arrays, integer sets, and
|
|
finite automata.
|
|
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Examples reported wrong number of propagator invocations (the
|
|
invocations for problem setup were missing).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added classes for shared objects and handles. Handles to shared
|
|
objects allow to either share copies among spaces when being
|
|
copied or to create a new shared copy, if requested.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Martin Mann
|
|
[DESCRIPTION]
|
|
Added a new version of count (and also atleast, atmost, exactly)
|
|
that counts the number of variables equal to integers in an
|
|
array.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: bug
|
|
Rank: minor
|
|
Bug: 50
|
|
[DESCRIPTION]
|
|
The number of colors in graph-color was off by one.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added channel constraints that channel an integer variable to
|
|
either a single or an array of Boolean variables.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug in copying of n-ary or-propagator for a special boundary case.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Relaxed sharing restrictions for channel, in particular
|
|
channel(this, x, x) is allowed.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added propagators for the circuit constraint.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Improved automatic memory management on Windows platforms.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Domain consistent distinct and channel allocate memory from the
|
|
space heap now. Much simpler.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The Boolean tell operations one_none and zero_none now also
|
|
return a ModEvent and hence must be checked for failure. This is
|
|
needed for simpler advisors.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The memory management policies have been completely reworked. Now
|
|
memory requests are much more regular. Hence, memory is much more
|
|
likely to be returned to the operating system. Furthermore, the
|
|
flush member functions for actors have been removed (they were
|
|
unneeded) and actors and spaces now have allocated member
|
|
functions for returning how much memory is allocated by a space.
|
|
|
|
Moreover, the memory reported by some propagators has been
|
|
ignored. Note that this flaw did not affect the benchmark figures
|
|
on the %Gecode webpage.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The multiplication uses integer precision if possible for better
|
|
performance.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Integer and Boolean variables are now guaranteed to be
|
|
inspectable (that is, all const member functions work on them),
|
|
even though a space is failed. However, the variables might have
|
|
been modified during a tell operation that has failed.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Linear expressions and relations can also be created from Boolean
|
|
variables, with the restriction that Boolean relations cannot be
|
|
reified.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Boolean variables (and hence Boolean views) do not any longer
|
|
share the implementation with integer variables. That has the
|
|
following consequences:
|
|
- Boolean variables are not any longer integer variables. The same
|
|
holds true for arrays of variables.
|
|
- All constraints that make sense for both Boolean and integer
|
|
variables have post functions that support both integer and
|
|
Boolean variables.
|
|
- Memory for Boolean variables is reduced by 50% and performance
|
|
increases in problems with many Boolean variables by up to 50%.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added propagators for linear constraints over Boolean variables,
|
|
in particular specialized and efficient versions for non-unit
|
|
coefficients.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The linear constraints are now more careful (that is, they will
|
|
use more efficient versions more often if it is safe) to
|
|
determine whether overflow occurs and which precision (integer or
|
|
double) should be chosen.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The element constraints now accept an additional offset argument.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added selection and reified relation constraints with constant sets.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Slightly stronger inferences for the finite set sequence and selection
|
|
constraints.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
New example: the balanced academic curriculum problem (problem 030 from
|
|
CSPlib).
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed the n-ary partition propagator to handle overflow of the sum of
|
|
cardinalities correctly.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Subscription to constant views now should use the propagate
|
|
member function from a variable implementation: it guarantees
|
|
execution of a propagator at least once (int and set views have
|
|
been adopted accordingly).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Bug: 48
|
|
[DESCRIPTION]
|
|
Branching on maximum regret would always crash on non-range domains.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The finite set selection propagators accept an additional
|
|
argument that specifies where the indexing should start. It
|
|
should make some models more natural to express, and helps in
|
|
porting code from other systems, such as Prolog or Mozart. In
|
|
addition, the selectUnion propagator is now hand-written again,
|
|
resulting in better performance.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
All Boolean constraints got a new and regular interface. Rather
|
|
than providing different post functions for the different
|
|
constraints, the single post function rel is used: the Boolean
|
|
operation then is described by a value of type BoolOpType. In
|
|
addition, all Boolean propagators have been reimplemented for
|
|
better performance and less memory use.
|
|
|
|
[ENTRY]
|
|
Module: test
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added simple testing for branchings.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The way how propagators report subsumption and partial fixpoints
|
|
has changed. Now, a propagator must first call dispose (which
|
|
then cancels subscriptions and possibly frees external resources)
|
|
and only then can return that the propagator is subsumed. For
|
|
that purpose a new function Gecode::ES_SUBSUMED has been
|
|
defined. Likewise, ES_FIX_PARTIAL and ES_NOFIX_PARTIAL are
|
|
functions rather than member functions of Gecode::Propagator. The
|
|
benefit is that this saves memory and is more efficient.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The use of the consistency options were a little confusing, now
|
|
the rule is: the level of consistency increases from ICL_VAL to
|
|
ICL_BND to ICL_DOM.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Boolean expressions erroneously decomposed into ternary Boolean
|
|
constraints, while not incorrect rather inefficient for large
|
|
Boolean expressions.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Made all macros type safe.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added macro GECODE_REWRITE for rewriting propagators. It is strongly advised
|
|
to always use this macro!
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: bug
|
|
Rank: minor
|
|
Bug: 46
|
|
[DESCRIPTION]
|
|
Orientation of Sudokus now match the orientation in the specification-file.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
New example: MineSweeper.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
New example: Domino.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Set projectors could subscribe with bogus propagation conditions.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Performance of the tell operations on finite set variables was
|
|
improved. Especially the intersect operation benefits from this.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The element constraint now also supports integer values as result.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Add a generic class for assignments during search (similar to
|
|
generic branchings for views and values).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
All branching classes for value and view selection are now
|
|
parametric.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Boolean variables cannot longer be initialized from an integer
|
|
variable. If needed, a channel propagator must be posted (added).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The equality constraints have been replaced by a variant of rel.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The propagator abstractions Inhom* have been renamed to Mix*.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The operations t_one, t_one_none, t_zero, t_zero_none for Boolean
|
|
views have been renamed to one, one_none, zero, zero_none.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Explicit disposal of actors has been reimplemented (the old
|
|
design was nothing but darn stupid). The memory overhead of
|
|
propagators is reduced by 40% for most propagators and 20% for
|
|
all. That is, a binary propagator takes 30% less memory and a
|
|
ternary propagator takes 25% less memory. Programs with many
|
|
binary or ternary propagators can run up to 20% faster.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Propagators and branchings that require disposal when a space is
|
|
deleted must now be explicitly registered via a force function
|
|
and explicitly deregistered by an unforce function.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed memory leak in reified dom constraint.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed memory leak in distinct constraint for sets.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
New example: Pentominoes. The example uses extensional
|
|
constraints specified as regular expressions to place
|
|
irregular-shaped pieces on a board.
|
|
|
|
|
|
|
|
[RELEASE]
|
|
Version: 1.3.1
|
|
Date: 2006-10-25
|
|
[DESCRIPTION]
|
|
This is a minor release which fixes a major bug (the first real
|
|
serious bug). Please update as soon as possible.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Rafael Meneses
|
|
[DESCRIPTION]
|
|
Branch&Bound search with ViewValBranchings (all standard branchings) together
|
|
with batch recomputation was severely broken. The problems ranged from wrong
|
|
search trees (missing solutions) to segmentation faults. The fix changes the
|
|
way assigned variables are removed from the array in a ViewValBranching.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Bounds-consistent distinct catches border case when an assigned variable
|
|
during bounds propagation leads to value removal for value propagation.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Bounds-consistent distinct eliminates assigned variables more
|
|
aggressively (can save up to 10% runtime in some cases).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Alejandro Arbelaez
|
|
[DESCRIPTION]
|
|
IntVar::init now also raises exceptions for illegal domain specifications.
|
|
|
|
|
|
|
|
|
|
|
|
[RELEASE]
|
|
Version: 1.3.0
|
|
Date: 2006-09-19
|
|
[DESCRIPTION]
|
|
This release adds a compiler for finite set projectors and provides new
|
|
infrastructure making it easier to add new variable domains. In addition,
|
|
it contains recent bug fixes and minor improvements.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Compiler for finite set projectors. Given a specification of a finite set
|
|
constraint as a projector set, it generates C++ code for the corresponding
|
|
propagator. Together with the dynamic propagator for finite set projectors,
|
|
this implements the backend of the technique described in the paper
|
|
"Generating Propagators for Finite Set Constraints" (Tack, Schulte,
|
|
Smolka; CP 2006.).
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Jorge Marques Pelizzoni
|
|
[DESCRIPTION]
|
|
Also pass options for linking standard libraries for MSVC.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The pkg-config files now contain the correct path if you configured to the
|
|
default prefix (i.e. /usr/local).
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added aliases lex, atleast, atmost, and exactly for the count constraint.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Renamed lex constraint to rel (as it also supports equality and disequality).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Make count constraints with integer number of equal occurrences
|
|
more incremental using dynamic subscriptions (gives a 20-30%
|
|
speedup).
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added an example for solving Black Hole patience games.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Subscription to variables now features an additional and optional
|
|
Boolean argument whether the propagator is to be processed. This
|
|
allows dynamically creation of subscriptions during propagation.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
New configure switches: --enable-audit to include audit code, which may
|
|
contain expensive checks of internal invariants or alternative, checked
|
|
implementations of critical parts of %Gecode. --enable-universal and
|
|
--with-sdk, to support building universal binaries on Mac OS X.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Variables can now be deallocated when the Space is deallocated (for example in
|
|
case of failure). This is important in case a variable implementation needs to
|
|
reference external resources. Deallocation can be switched on in the
|
|
high-level description used for generating the variable implementation.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Rafael Meneses
|
|
[DESCRIPTION]
|
|
Under certain conditions (posting in a failed space), the post function
|
|
returned uninitialized variables.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Variable implementations are now generated from a high-level
|
|
description (taking care of all aspects relating to modification
|
|
events and propagation conditions). While simplifying the
|
|
implementation of new variable domains considerably, this also can,
|
|
in lucky cases, deliver a speed-up of 5%.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Allocate subscriptions in separate memory area. Can speedup execution
|
|
in some (but few) cases by up to 15-20%.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: documentation
|
|
Rank: minor
|
|
Bug: 43
|
|
[DESCRIPTION]
|
|
Fixed documentation problem due to doxygen...
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Branch-and-bound search now interleaves recomputation with adding
|
|
bounding constraints. This can prune the search tree much
|
|
earlier: instead of recomputing many nodes from the same copy
|
|
node and then adding a constraint that fails all these nodes, it
|
|
might be possible to already fail the copy node directly. In
|
|
principle, the difference can be exponential, however for
|
|
examples we tried the effect is minor.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Now commits can be interleaved with adding new constraints during
|
|
batch recomputation. This also entails that commit does not raise
|
|
an exception when applied to an already failed space (it is
|
|
simply ignored). The bug could not be observed (unless you did
|
|
some very fancy search engines yourself) and one could actually
|
|
see it as an extension.
|
|
|
|
|
|
|
|
|
|
[RELEASE]
|
|
Version: 1.2.2
|
|
Date: 2006-07-25
|
|
[DESCRIPTION]
|
|
This release switches recomputation back on and removes some
|
|
experimental code that had sneaked into the system...
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Some experimental code had sneaked into the release, slowing down
|
|
the system by more than 10%...
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
With the changes to search in %Gecode 1.2.1 recomputation was
|
|
actually almost switched off...
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Improve performance of domain-consistent distinct (by providing
|
|
special ternary version). Can reduce runtime by 10-20% for some
|
|
examples.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Cut memory requirements for element (for integer arrays) by half.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added stress test for element constraint (originally due to Neng-Fa Zhou).
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added stress test for min constraint.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added possibility to stop the search for solutions in examples based
|
|
on the time taken, the number of fails, or both.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added an example for solving Peacable co-existing armies of %Queens.
|
|
|
|
|
|
|
|
[RELEASE]
|
|
Version: 1.2.1
|
|
Date: 2006-07-19
|
|
[DESCRIPTION]
|
|
In addition to the usual fixes and improvements, the biggest
|
|
change is that all branchings now must support branching
|
|
descriptions. This also entails straightforward changes
|
|
(simplifications) to search-related space operations and to the
|
|
implementation of search engines.
|
|
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added a macro GECODE_NEVER that assert that this command is never
|
|
executed. This is preferred over assert(false) as it is used for
|
|
optimization, if supported by a compiler (for example, Microsoft
|
|
Visual C++).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed fixpoint detection bug in n-ary min and max propagators.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Min and max propagators now correctly handle cases such as min(x,y)=x.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: removed
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Removed bounds-consistent propagation for count constraint (not worth
|
|
the trouble, just use domain-consistent).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
Thanks: Martin Mann
|
|
[DESCRIPTION]
|
|
The ViewValBranching class now passes the home space to all member
|
|
functions used in selecting the view and the value.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed fixpoint detection for n-ary partition propagator.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added finite set projection propagators. They allow to propagate all
|
|
finite set constraints expressible as finite set projectors, including
|
|
negated and reified constraints.
|
|
|
|
[ENTRY]
|
|
Module: support
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added simple class encapsulating a linear congruential pseudo-random
|
|
number generator.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The interface for branchings has changed considerably, reflecting
|
|
the fact now that all branchings must support branching descriptions.
|
|
This is also reflected in the Space::status operation which has its
|
|
arguments reversed and corrected const qualifiers on its arguments.
|
|
But the good news is that it is considerably simpler than before.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Assignment branchings (that is, branchings with a single alternative)
|
|
could possibly take the wrong values for assignment during recomputation.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
The status operation does not any longer accept an argument for
|
|
the number of alternatives. The number of alternatives is now
|
|
available from a branching description (where it is passed upon
|
|
creation of the description). This reflects the fact that
|
|
branching descriptions are mandatory now.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Fixed a serious bug where during recomputation the search stack
|
|
was always inspected behind the last element: the reason why
|
|
recomputation never crashed has been that stacks always keep one
|
|
element extra for optimization. So, serious bug but looks as if
|
|
no one stumbled over this...
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
As Boolean variables can be derived from integer variables, the
|
|
assumption that a not yet assigned Boolean variable can not be
|
|
modified is wrong.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: documentation
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Generate one page per version released in changelog.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
Bug: 41
|
|
[DESCRIPTION]
|
|
Change exceptions thrown by %Gecode to be compliant with C++
|
|
exceptions.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Bug: 42
|
|
[DESCRIPTION]
|
|
Renamed macros so as to avoid nameclashes (all macros start with
|
|
GECODE_).
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Search engines now correctly count the number of propagation
|
|
steps including propagation that occurs when adaptive
|
|
recomputation creates additional clones.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Branchings now must return branching descriptions and commit
|
|
operations also insist on being provided with branching
|
|
descriptions. This change reflects that batch recomputation is
|
|
of vital importance for efficiency in %Gecode.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Make Boolean linear constraints with constant right hand sides
|
|
more incremental using dynamic subscriptions (gives a 20-30% speedup).
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Take advantage of specialized Boolean propagators in Boolean
|
|
expressions and relations.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Made n-ary Boolean conjunction and disjunction more incremental by
|
|
using dynamic subscriptions.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Provide special versions of Boolean propagators optimizing cases
|
|
where n-ary disjunctions are true.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Change implementation of Boolean propagators from conjunction
|
|
to disjunction so that disjunction can be used as special case
|
|
for Boolean sum with inequalities.
|
|
|
|
|
|
[RELEASE]
|
|
Version: 1.2.0
|
|
Date: 2006-06-20
|
|
[DESCRIPTION]
|
|
This release makes quite some drastic changes to how propagators
|
|
and branchings are deleted: instead of using destructors they use
|
|
a dispose method that allows passing a home space during deletion
|
|
(we will use this infrastructure measure to speed up cloning
|
|
considerably a little later). Moreover the directory structure
|
|
has changed on popular request so that all include files are to
|
|
be found in a gecode subdirectory. Apart from that, some small
|
|
fixes and extensions due to requests.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Luis Otero
|
|
[DESCRIPTION]
|
|
Fixed memory leak in finite set distinct propagator.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed memory leak in global cardinality constraint.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Martin Mann
|
|
[DESCRIPTION]
|
|
Fixed bug in equality tests that could lead to reified (dis)equality
|
|
propagators not achieving domain consistency.
|
|
|
|
[ENTRY]
|
|
Module: test
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added --enable-leak-debug configure option. This option causes the test suite
|
|
to call mtrace() under Linux, which can be used to test for memory leaks.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
More aggressive inlining for canceling subscriptions.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: bug
|
|
Rank: minor
|
|
Bug: 39
|
|
[DESCRIPTION]
|
|
Fixed linkage of BAB destructor under Cygwin.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The branch member function for branchings now also takes a home space
|
|
as argument.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Canceling subscriptions on views and variable implementations now
|
|
require also a home space (this has become possible due to not using
|
|
destructors but ordinary "dispose" member functions).
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Actors (propagators and branchings) do not any longer use destructors
|
|
but a "dispose" member function that takes a home space as argument
|
|
and must return the size of the actor.
|
|
Important: this requires that dispose member functions from super-classes
|
|
and class members are called explicitly!
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Spaces can be queried for number of propagators and branchings.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Search engines can now be checked whether they have been stopped.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: documentation
|
|
Rank: minor
|
|
Thanks: Martin Mann
|
|
[DESCRIPTION]
|
|
Fixed bug in description of PC_INT_DOM.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: major
|
|
Thanks: Martin Mann
|
|
[DESCRIPTION]
|
|
Moved library source code into gecode subdirectory. Facilitates cleaner
|
|
installation. Programs compiling against %Gecode now need to include
|
|
e.g. "gecode/int.hh".
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Sudoku example generalized to arbitrarily sized Sudokus.
|
|
|
|
[RELEASE]
|
|
Version: 1.1.0
|
|
Date: 2006-04-10
|
|
[DESCRIPTION]
|
|
This minor release adds some new constraints (see below), adds support
|
|
for stopping search engines based on definable criteria, and some other
|
|
small fixes. Most notably, the test infrastructure has been extended to
|
|
also check whether propagators correctly claim that they have computed
|
|
a fixpoint (now all invariants a propagator must obey in %Gecode are covered
|
|
by the test infrastructure). This has lead to many small fixes.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Bug: 37
|
|
Rank: minor
|
|
Thanks: Kari Pahula
|
|
[DESCRIPTION]
|
|
Added a configure switch --enable-doc-dot. If enabled, this checks for
|
|
presence of the dot tool (used for generating graphs in the documentation)
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added all-interval series using distinct.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added functions returning variables for arithmetic
|
|
(min, max, abs, mult, plus, minus).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Support for shared views has been removed in
|
|
sortedness propagator and in the propagator
|
|
for global cardinality with fixed cardinalities.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug in fixpoint detection of sortedness and
|
|
global cardinality propagator.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
Bug: 36
|
|
Thanks: Javier Mena
|
|
[DESCRIPTION]
|
|
A non-debug version of %Gecode could not be linked to a program compiled with
|
|
assertions switched on, as BndSet::isConsistent was missing from the library.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Staged propagation for domain-consistent absolute value propagator
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
EqBnd and EqDom now take two template parameters for their view types. This
|
|
supports using different views, e.g. to express x0=-x1 using a MinusView.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: new
|
|
Rank: major
|
|
Thanks: Rafael Meneses
|
|
[DESCRIPTION]
|
|
Added functionality to interrupt search engines (introduced
|
|
a Search::Stop class).
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Removed search engines optimizing for copying only (after
|
|
all, one should always use some recomputation).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug in fixpoint detection of n-ary maximum/minimum
|
|
propagator.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The status member function now also allows the first
|
|
argument to be optional.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bugs in fixpoint detection of several set propagators (match,
|
|
convexity, sequence, n-ary (disjoint) union).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug in fixpoint detection of bounds-consistent
|
|
element for variables propagator.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug in fixpoint detection of bounds-consistent squaring
|
|
propagator (mult with the same variable twice).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed bug in fixpoint detection of bounds-consistent abs
|
|
propagator.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Rewrite n-ary linear, min/max, and Boolean propagators to binary/ternary
|
|
variants during cloning if possible (saves memory).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Stefano Gualandi
|
|
[DESCRIPTION]
|
|
Fixed wrong assertion in gcc-bnd propagator.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Thanks: Jean-Christophe Godart
|
|
[DESCRIPTION]
|
|
Fixed indexing bug in SupportSet (part of the domain consistent linear
|
|
equation propagator).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added new constraint channel for variable/value channeling
|
|
between two variable arrays.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
All distinct propagators raise an exception if a variable occurs
|
|
multiply in its arguments.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Renamed the set propagators minElement to min, maxElement to max,
|
|
and channelVarVal to channel.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Improved initialization of domain-consistent distinct propagator,
|
|
in common cases for distinct this can save up to 10% runtime.
|
|
|
|
[ENTRY]
|
|
Module: set
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Patrick Pekczynski
|
|
[DESCRIPTION]
|
|
Fixed off-by-one bug in SetVarImp::lubMinN and SetVarImp::lubMaxN.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Olof Sivertsson
|
|
[DESCRIPTION]
|
|
(In-)Equations were still not correct with respect to the sign.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Bug: 33
|
|
Thanks: Olof Sivertsson
|
|
[DESCRIPTION]
|
|
Slice-operation now returns elements in right order.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Bug: 32
|
|
Thanks: Olof Sivertsson
|
|
[DESCRIPTION]
|
|
Possible array-out-of bounds access fixed for MiniModel::Matrix.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: performance
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Added redundant constraint to social golfers example.
|
|
|
|
|
|
|
|
|
|
[RELEASE]
|
|
Version: 1.0.1
|
|
Date: 2006-03-01
|
|
[DESCRIPTION]
|
|
Maintenance release including some additions of domain-consistent
|
|
propagators and a fix for a serious bug in reified linear
|
|
inequalities.
|
|
|
|
[ENTRY]
|
|
Module: search
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Changed default copying recomputation distance to 8.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Olof Sivertsson
|
|
[DESCRIPTION]
|
|
(In-)Equations with an int on the left hand side (like 9==x) were
|
|
translated with a wrong sign (as -9==x).
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Bug: 31
|
|
[DESCRIPTION]
|
|
The preprocessor macro NDEBUG for disabling assertions is no longer
|
|
put into config.hpp. Without this fix, user programs could not use
|
|
assert if %Gecode was compiled with NDEBUG.
|
|
|
|
[ENTRY]
|
|
Module: minimodel
|
|
What: new
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
The post functions for linear expressions and relations also take
|
|
an integer consistency level as optional argument.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added domain-consistent linear equalities.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
Bug: 30
|
|
[DESCRIPTION]
|
|
Fixed fixpoint detection for ternary min and max.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Fixed subsumption detection for regular with multiple variable occurences.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Cost computation for sortedness has been changed from static to
|
|
dynamic (taking into account the variable reduction the
|
|
propagator can perform).
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: change
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Global cardinality changed to non-staged version. Further
|
|
inference for cardinality variables added. Parts of the graph
|
|
structure for the domain-consistent propagator have been revised
|
|
so as to avoid unnecessary propagation in case of fixed
|
|
cardinalities and to allow better staging for the
|
|
propagator. Revision of propagation for fixed cardinalities has
|
|
also been applied to bounds-consistent propagator.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: new
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Added domain-consistent version of the absolute value propagator.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: performance
|
|
Rank: major
|
|
[DESCRIPTION]
|
|
Switch assertions off in optimized builds with Microsoft's C++ compiler.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Bug: 29
|
|
Thanks: Dominik Brill
|
|
[DESCRIPTION]
|
|
Fixed a very serious bug in the reified linear inequality propagator.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: bug
|
|
Rank: minor
|
|
Thanks: Filip Konvicka
|
|
[DESCRIPTION]
|
|
Removed some compiler warnings for the Microsoft compiler with -W3.
|
|
|
|
[ENTRY]
|
|
Module: int
|
|
What: bug
|
|
Rank: major
|
|
Bug: 27
|
|
[DESCRIPTION]
|
|
The strongly connected components represented by the permutation
|
|
variables in the extended version of Sortedness has been fixed
|
|
restoring bounds consistency on the permutation variables.
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
Bug: 24
|
|
[DESCRIPTION]
|
|
The soname for libraries on Linux is now set properly, as well as the
|
|
version information on Darwin (Mac OS).
|
|
|
|
[ENTRY]
|
|
Module: other
|
|
What: change
|
|
Rank: minor
|
|
Bug: 25
|
|
[DESCRIPTION]
|
|
The build system has been updated to support building both static and
|
|
shared libraries at the same time on Unix-like systems.
|
|
|
|
[ENTRY]
|
|
Module: example
|
|
What: change
|
|
Rank: minor
|
|
[DESCRIPTION]
|
|
Examples now use per default the recomputation settings as
|
|
defined in the search module.
|
|
|
|
[RELEASE]
|
|
Version: 1.0.0
|
|
Date: 2005-12-06
|
|
[DESCRIPTION]
|
|
Initial release.
|
|
|
|
[ENTRY]
|
|
Module: kernel
|
|
What: new
|
|
Rank: minor
|
|
Thanks: Gilles Pesant and Samuel Gagnon
|
|
[DESCRIPTION]
|
|
Introduction of a basic structure for supporting counting-based
|
|
search as described in:
|
|
S. Gagnon, G. Pesant, Accelerating Counting-Based Search, CPAIOR 2018.
|
|
This is only enabled if Gecode has been compiled with the option
|
|
--enable-cbs.
|
|
[MORE]
|
|
A branching option will be added to compatible examples as
|
|
counting algorithms are added to constraints.
|