[gecode-users] Using Linear Constraints

Max chaosangel at gmx.de
Mon Dec 1 17:24:13 CET 2008


Hello, as already asked some time ago i still want to speed up my parser 
building the constraints using linear expressions.
Currently i'm doing the following:
I got two values (either variables or constant integers) and i want to 
for example add them:

At first, all Integer Values are converted to Variables

IntVar(this, a->getInteger(), a->getInteger());

Now, for the following operands i do:

 return plus(this, v1,v2);

Returns the linear constrained variable, thats ok, the same for minus.
If i now want to multiply two Values, i use

 return mult(this, v1,v2);
or for division

       IntVar ret(this, Gecode::Int::Limits::min, Gecode::Int::Limits::max);
       div(this, v1,v2, ret);
       return ret;
Both returning a variable.
Now i want to use linear constraints if one of my values is a constant 
integer.
I found out that plus(this, v1,v2);
translates into  linear(home, xy, IRT_EQ, z, icl, pk);
and then returns "z" as a variable.
For multiplication (constant with variable) i only found:
Minimodel::operator*
It does create a Minimodel::LinExpr.
Now i want to know how can i convert it back to variable, to set further 
operators.

For example:

(X*5)+Y

I want to create a linear expression with X*5.
Using Minimodel i do get a LinExpr.
How can i now use the function plus(this, v1,v2) to add Y as linear 
function?

Thank you for any help.
Max





More information about the gecode-users mailing list