[gecode-users] Custom constraint to external progam

Tias Guns tias.guns at cs.kuleuven.be
Thu Nov 13 13:24:56 CET 2008


Cool, I didn't know adding a custom propagator could be as easy as  
including the implementation in your model directly !

Note that in the example the 'propagate' function misses the ModEventDelta  
parameter:
line 57 should be:     virtual ExecStatus propagate(Space* home,  
ModEventDelta);
line 93 should be:   DisEq<View>::propagate(Space* home, ModEventDelta) {


Thanks for the tip,
Tias

On Thu, 13 Nov 2008 12:05:07 +0100, Mikael Zayenz Lagerkvist  
<zayenz at gmail.com> wrote:

> Hi,
>
> There are no examples currently in Gecode that implement custom  
> propagators.
>
> There is an old post in the mailinglist with a custom
> propagator-example [1]. Note that there is a bug in the logic, the
> line
>     GECODE_ME_CHECK(x1.inter_r(home, u12, false));
> should be
>     GECODE_ME_CHECK(x0.inter_r(home, u12, false));
> I missed that on a variable-renaming before posting it.
>
> Hope that helps,
> Mikael
>
> [1] http://article.gmane.org/gmane.comp.lib.gecode.user/1276/
>
>
> On Thu, Nov 13, 2008 at 11:51 AM, Pedro Salgueiro <pds at di.uevora.pt>  
> wrote:
>> Ok, I think thats what I want to do.
>>
>> Is there any examples in Gecode that implement a custom propagator?
>>
>> Pedro Salgueiro
>>
>> On Thu, 2008-11-13 at 11:10 +0100, Mauricio Toro wrote:
>>> Hello,
>>>
>>>
>>> I made something similar once.
>>> My approach was writting a propagator
>>> that waits until cvars[0] and cvars[1]
>>> are assigned. Once they are assigned
>>> it calls run_something.
>>>
>>>
>>> I hope that helps,
>>>
>>>
>>> Mauricio
>>>
>>> 2008/11/13 Pedro Salgueiro <pds at di.uevora.pt>
>>>         Hi!
>>>
>>>         I have been experimenting Gecode for a while, and now I want
>>>         to make
>>>         something wich I don't know if its possible:
>>>
>>>         I want to create a new "custom" constraint that allows to
>>>         relate/constraint a variable with a function that receives two
>>>         other
>>>         gecode variables as parameters. This function will be
>>>         something
>>>         completely external to gecode, and evan c++, so, by the the
>>>         this
>>>         function is called the gecode variables that are used on it
>>>         should
>>>         already have some values assigned to it.
>>>
>>>         Here's how it would look:
>>>
>>>         post(this, cvars[0] < 5)
>>>         post(this, cvars[1] < cvars[0] + 2)
>>>         post(this, new_constraint(cvars[2], run_something(cvars[0],
>>>         cvars[1])
>>>
>>>         In this example, we could just assume that the
>>>         "new_constraint" is used
>>>         to make sure that cvars[2] "<"
>>>         run_something(cvars[0],cvars[1]).
>>>
>>>         Is this possible to do? If so, where should I start?
>>>
>>>         Thank you all
>>>         Pedro Salgueiro
>>>
>>>
>>>         _______________________________________________
>>>         Gecode users mailing list
>>>         users at gecode.org
>>>         https://www.gecode.org/mailman/listinfo/gecode-users
>>>
>>>
>>>
>>> --
>>> Mauricio Toro Bermudez
>>> Estudiante de Ingeniería de Sistemas
>>> Pontificia Universidad Javeriana, Colombia
>>>
>>> Stagiare à l'Ircam
>>> 1, place Igor-Stravinsky 75004 Paris,
>>> France de 2008 à 2009
>>>
>>
>>
>> _______________________________________________
>> Gecode users mailing list
>> users at gecode.org
>> https://www.gecode.org/mailman/listinfo/gecode-users
>>
>
>
>






More information about the gecode-users mailing list