As said, check the docs. Christian
-- Christian Schulte, www.ict.kth.se/~cschulte/ -----Original Message----- From: Max [mailto:[EMAIL PROTECTED] Sent: Wednesday, October 29, 2008 11:35 AM To: Christian Schulte Cc: Guido Tack; 'Mikael Zayenz Lagerkvist'; [EMAIL PROTECTED] Subject: Re: [gecode-users] Generating constraints Sorry, it seems to me that i used minimodel functions or direct modellling or something. How can i distinguish the function Gecode::plus/2IntVar from Gecode::plus/3IntVar and what is the difference. And there exists no version of div returning an IntVar. Mfg Max Max wrote: > I habe a little problem now with the operators. > Now i do not want to use the minimodel part und tried to convert my tree > the long/boring way. > There is a little problem, all arithmetic functions seem to be > implemented for variables only. > So plus(this, v1,v2); is ok, but plus(this, 5,v2); or plus(this, > v1,5); is not. > Now Guido Tack somewhen wrote: > > div(this, x0, x1, IntVar(this, 42, 42)); > There's no specialized version for constant integers (yet). > > > But as i wanted to do something similiar, Christian Schulte answered: > > Yes, it is even worse: it sacrifices propagation! > > > So how can i post constants, not using minimodel. Is this the right way > ? (IntVar(this, 42,42)) > > Mfg > Max > > > > > > Christian Schulte wrote: > >> Yes, it is even worse: it sacrifices propagation! >> >> If you need to get started look to the code that posts propagators based on >> LinExpr and LinRel values. That is actually nothing but a tree analyzer >> posting the minimal number of required propagators for linear relations. >> >> Cheers >> Christian >> >> -- >> Christian Schulte, www.ict.kth.se/~cschulte/ >> >> >> -----Original Message----- >> From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf >> Of Max >> Sent: Tuesday, October 28, 2008 1:56 PM >> To: Mikael Zayenz Lagerkvist >> Cc: [EMAIL PROTECTED] >> Subject: Re: [gecode-users] Generating constraints >> >> I have no problem in writing a tree analyzer but i looked for a uniform >> representation of the variables, operators, relations and constants, so >> i do not have to write an extra function for all of them. >> I want to write >> >> recursive_function_call rfc(X): >> IntVar temp; >> //switch for operator >> add(rfc(x1), ADD, rfc(x2), temp); >> return temp; >> >> I don't want to distinguish the leafs of the node at this step. So i >> need a uniform return value. >> PS: Does it influence the performance if i use temporary variables for >> my constants. >> >> IntVar x(this, 5,5); >> >> >> >> >> Mikael Zayenz Lagerkvist wrote: >> >> >>> Hi, >>> >>> If you have a tree representing an expression, then you should write a >>> tree-analyzer (a tree-walker for example) that posts constraints that >>> correspond to the tree. This is how the linear expressions in Gecodes >>> MiniModel works. For more information on writing tree analyzers, see a >>> compiler text as it corresponds to instruction selection. >>> >>> There is no way to undo a tell - you have to copy the space. >>> >>> Cheers, >>> Mikael >>> >>> >>> On Tue, Oct 28, 2008 at 12:58 PM, Max <[EMAIL PROTECTED]> wrote: >>> >>> >>> >>>> Hello all, >>>> >>>> i currently try to post constraints and need your help. >>>> I have my constraints not in a textual format, but in a self made tree >>>> structure of the form >>>> >>>> >>>> rel">=" >>>> / \ >>>> op+ const=5 >>>> / \ >>>> var=x const=7 >>>> >>>> >>>> (i hope this is readable) >>>> >>>> Now i want to generate and post a gecode constraint of it. >>>> Is there an easy way to recursivly define a constraint, because it seems >>>> to me that there is no baseclass or something that can be used. >>>> >>>> I wanted to to something of the form >>>> >>>> GeCodeConstraint recursive_converter(MyConstraint) >>>> { >>>> if "variable" return x; >>>> if "constant" return 5; >>>> if "op+" return recursive_converter(left_node) + >>>> recursive_converter(right_node); >>>> if "rel>=" return recursive_converter(left_node) >= >>>> recursive_converter(right_node); >>>> } >>>> >>>> >>>> I i found for GeCodeConstraint was MiniModel::LinRel<>, is there >>>> something more uniform, because i want to use boolean and integer >>>> variables (reified constraints) and stuff. >>>> (the arithmetic functions seem very generic returning a variable, but >>>> then a lot of extra variables would have to be generated) >>>> >>>> >>>> Any ideas ? >>>> >>>> 2nd question: >>>> >>>> Is there a way to post the value of a variable not in form of a >>>> constraint, so "branch" on a boolean variable but being able to undo it >>>> >>>> >> so >> >> >>>> so >>>> b[0].set(0); >>>> //after some time >>>> b[0].set(1); >>>> >>>> without copying the whole space? >>>> >>>> Thank you a lot. >>>> >>>> Max >>>> >>>> _______________________________________________ >>>> Gecode users mailing list >>>> [EMAIL PROTECTED] >>>> https://www.gecode.org/mailman/listinfo/gecode-users >>>> >>>> >>>> >>>> >>> >>> >>> >> _______________________________________________ >> Gecode users mailing list >> [EMAIL PROTECTED] >> https://www.gecode.org/mailman/listinfo/gecode-users >> >> >> _______________________________________________ >> Gecode users mailing list >> [EMAIL PROTECTED] >> https://www.gecode.org/mailman/listinfo/gecode-users >> >> >> > > > _______________________________________________ > Gecode users mailing list > [EMAIL PROTECTED] > https://www.gecode.org/mailman/listinfo/gecode-users > > _______________________________________________ Gecode users mailing list [EMAIL PROTECTED] https://www.gecode.org/mailman/listinfo/gecode-users