[gecode-users] FloatVar alpha release

Christian Schulte cschulte at kth.se
Wed Jun 25 15:10:11 CEST 2008


Dear Filip,

thanks for the contribution. When we release Gecode 3.0.0 (late autumn) we will check whether we can make it an experimental contribution.

Thanks for your effort!

All the best
Christian

--
Christian Schulte, www.ict.kth.se/~cschulte/

-----Original Message-----
From: users-bounces at gecode.org [mailto:users-bounces at gecode.org] On Behalf Of Filip Konvicka
Sent: Tuesday, June 17, 2008 4:27 PM
To: users at gecode.org
Cc: Luboš Moric
Subject: [gecode-users] FloatVar alpha release

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











More information about the gecode-users mailing list