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
