[gecode-users] FloatVar alpha release
Filip Konvička
filip.konvicka at logis.cz
Tue Jun 17 16:26:47 CEST 2008
Dear all,
sorry for taking so long, here's the initial version of our float
variable efforts. The purpose of this release is to get initial feedback
and start discussions about both the design and implementation.
The code has been lying here for at least a month and we're currently
busy with many other things, but I do not want to wait any longer so I
hope that any feedback we might get from you will make us improve what
we've done so far. Any feedback is highly welcome!
The patch (float.zip/float.patch) is generated against the 2.1.1
release. I hope I've included all that is necessary.
The changes to Gecode itself are the float.patch and the float.vis file
(that goes to the source root directory, where "variables.vsl" resides).
The change involves adding a new variable type "slot" to Gecode, without
adding a corresponding variable implementation.
The actual implementation of "FloatVars" is in float_var.hpp and
float_view.hpp. These are template classes that are instantiated in your
application based on what interval library implementation you use with
them. We provide a specialization of the templates for Boost.Interval,
which ( to make things more obscure :-) ) can be used with multiple
low-level FP libraries itself.
The release includes:
template<typename DomainType> struct FloatVarImp;
- a "concept", unspecialized template FloatVar implementation
class and an associated delta class
template<typename IntervalArg>
struct FloatVarImp<boost::numeric::interval<IntervalArg> >;
- specialization of the above template for Boost.Interval.
- Delta and View classes for the same
I also include a preview of propagator implementations for
boost::numeric::interval<double> (see float_prop_preview.zip). Now these
are really a preview (although we are currently using similar code in
our development branch) and need some serious work that I hope I get to
soon. The provided propagators are:
- binary minimum, maximum
- binary relational and reifieed binary relational (lq, gq, eq)
- arithmetic (add, sub, mul, div)
The intended changes include changing the classes to templates to
support other Boost.Interval types and renaming of the propagators.
Overall, I'd like to address at least the following topics before a
"beta" release:
- Finish the propagators and maybe provide a simple "splitting" branching.
- Support explicit instantiation of the templates. This means moving
implementation out of the .hpp files, both for the variable and propagators.
- Verify the overall design. And this is my question to you all - is
there some reason to have a Delta class at all? (I always forget what
the deltas are supposed to represent...)
Cheers,
Filip
-------------- next part --------------
A non-text attachment was scrubbed...
Name: float.zip
Type: application/x-zip-compressed
Size: 8569 bytes
Desc: not available
URL: <http://www.ps.uni-sb.de/pipermail/users/attachments/20080617/71f7c82a/attachment.bin>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: float_prop_preview.zip
Type: application/x-zip-compressed
Size: 4392 bytes
Desc: not available
URL: <http://www.ps.uni-sb.de/pipermail/users/attachments/20080617/71f7c82a/attachment-0001.bin>
More information about the gecode-users
mailing list