Christian Schulte wrote: > Please do the following: familiarize yourself somehwat with what constraints > Gecode actually implements. That's well documented. Look to the examples > that come with Gecode. > > Then, creating additional integer variables that are just constants is no > problem, the constants will be eliminated automatically if possible. > Thank you, that is the way i i hoped it works. So i can set my constraints now. > Then, what is more important (and that was what I referred to in my previous > email): make sure that you do not decompose a constraint into several > smaller constraints if not necessary. That is, you have to read how linear > works as opposed to plus and minus. > As i understand linear, it works for polynomials and operations over arrays of variables. But i do not choose the constraints by myself, its more kind of an interpreter, as in Prolog, you write:
A=B+C. B=C*D-15. C::12..42. B-D > C. Some kind of this stuff, so i don't see the possibility to integrate linear's(and i do not want to search for them anaylzing the constraints). Maybe in a later point of time i could use linear constraints in the input language if they are helpful, so time can be modelled as in. timesteps(1..n). timestep(X) #< timestep(X+1); So far, thanks for your great help. I hope the normal arithmetic constraints are not too slow, but more important is that everything works fine. Mfg Max > Cheers > Christian > > -- > Christian Schulte, www.ict.kth.se/~cschulte/ > > > -----Original Message----- > From: Max [mailto:[EMAIL PROTECTED] > Sent: Wednesday, October 29, 2008 11:25 AM > To: Christian Schulte > Cc: 'Mikael Zayenz Lagerkvist'; [EMAIL PROTECTED]; Guido Tack > Subject: Re: [gecode-users] Generating constraints > > 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
