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