About Cumulative Propagators

35 views
Skip to first unread message

Fabio Tardivo

unread,
Nov 2, 2022, 6:29:29 AM11/2/22
to Gecode
Hello,

I am experimenting with the Cumulative constraint using the MiniZinc interface and I am wondering which propagator is Gecode using. 
The documentation is referring to the paper "A New Multi-Resource cumulatives Constraint with Negative Heights", but in the code there are implementation of the TimeTable and EdgeFinding algorithm. 
Is it possible to select the algorithm by annotations ?  

Best regards

Mikael Zayenz Lagerkvist

unread,
Nov 2, 2022, 6:34:47 AM11/2/22
to gec...@googlegroups.com
Hi,

The cumulatives constraint (note the s at the end, can handle
multiple resources) uses the propagation described in "A New
Multi-Resource cumulatives Constraint with Negative Heights".

The cumulative constraint (note no s at the end, handles single
resource) always does overload checking and has an argument that can
be used to select if time-tabling, edgefinding, or both should be
used. The different variants of cumulative have their own references
to the algorithms used.

Hope that clarifies it for you.
/Mikael
> --
> You received this message because you are subscribed to the Google Groups "Gecode" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to gecode+un...@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/gecode/bcf431d6-0534-48a1-9cfd-51d9450613a3n%40googlegroups.com.



--
Mikael Zayenz Lagerkvist

Fabio Tardivo

unread,
Nov 2, 2022, 3:17:20 PM11/2/22
to Gecode
Hi Mikael,

Thank you for the answer. One more question: I am using this benchmark (https://github.com/MiniZinc/minizinc-benchmarks/tree/master/rcpsp) and the flattening translates the cumulative constraint in a cumulatives constraint. Then the FlatZinc parser decides if use cumulative or cumulatives (https://github.com/Gecode/gecode/blob/release/6.3.0/gecode/flatzinc/registry.cpp#L1308) but there is no way to choose between TimeTabling and EdgeFiltering unless I modify the code, am I correct?

Mikael Zayenz Lagerkvist

unread,
Nov 2, 2022, 5:00:10 PM11/2/22
to gec...@googlegroups.com
Hi,

That is right, there is currently no way to influence the propagation
level for the cumulative constraint used by Gecode from a MiniZinc
model. If you want to do that, you will have to either compile a new
version of Gecode or make a Gecode model for the problem in C++
instead.

Related to this I posted a couple of Gecode issues some time ago that
could be useful to try for someone that is interested in the area:
* https://github.com/Gecode/gecode/issues/80
* https://github.com/Gecode/gecode/issues/81

Cheers,
Mikael
> To view this discussion on the web visit https://groups.google.com/d/msgid/gecode/a709f50d-6873-4f33-b365-95760498203fn%40googlegroups.com.



--
Mikael Zayenz Lagerkvist

Fabio Tardivo

unread,
Nov 2, 2022, 5:03:58 PM11/2/22
to Gecode
Perfect, I will compile a new version of Gecode. Than you for the clarification.
Reply all
Reply to author
Forward
0 new messages