[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