[gecode-users] Custom constraint to external progam

Mikael Zayenz Lagerkvist zayenz at gmail.com
Thu Nov 13 12:05:07 CET 2008


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
>



-- 
Mikael Zayenz Lagerkvist, http://www.ict.kth.se/~zayenz/




More information about the gecode-users mailing list