[gecode-users] Unary and Cumulative constraints

David Rijsman David.Rijsman at quintiq.com
Tue Aug 10 11:44:23 CEST 2010


Hi Guido,

would it make more sense to always propagate when mandatory argument is not part of the argument list. When we allow a task not to be mandatory only enforce s = p + e when mandatory becomes true and make mandatory false when s = p + e can no longer be enforced (reify s = p + e on mandatory)? 

This way we can model a task which can require one or more resources using the sum of the mandatory variables for the different constraints as the minimum and maximum constraints without having to worry about the temporal constraints within a task?

David

>>> 
From: 	Guido Tack <tack at gecode.org>
To:	David Rijsman <David.Rijsman at quintiq.com>
CC:	<users at gecode.org>
Date: 	8/10/2010 11:07 AM
Subject: 	Re: [gecode-users] Unary and Cumulative constraints

David Rijsman wrote:

> Hi,
> 
> First of all compliments for another very nice version. I am looking at the new scheduling constraints introduced in version 4.3.0, and I trying to understand why you have decided the following for some of the new cumulative and unary constraints:
> 
> "The propagator does not enforce s = p + e, this constraint has to be posted in addition to ensure consistency of the task bounds."
> 
> I can not figure out what a use case would be where you do not want s = p + e enforced. If there are use cases why is it enforced in some of the constraints? 

The reason is that you can have the same task on several resources at once, which would cause an overhead if each resource constraint in addition propagated s=p+e.  Currently, the interface is a bit inconsistent, as the cumulatives constraint does propagate s=p+e.

We plan to add modeling support for scheduling constraints in the future (I'm working on it), where you would declare task variables that encapsulate the s=p+e propagation.  In fact, there would be one propagator for all the simple temporal constraints (such as task A is before task B, which translates to e(A) <= s(B) ), which gives strictly stronger propagation than the individual constraints.
The resource constraints can then be posted in terms of these task variables.

Cheers,
	Guido

-- 
Guido Tack, http://people.cs.kuleuven.be/~guido.tack/ 







More information about the users mailing list