# [gecode-users] Using Linear Constraints

Christian Schulte cschulte at kth.se
Mon Dec 1 17:31:37 CET 2008

```I think I already answered that: please use linear directly! Do not
decompose int several plus or minus constraints as this sacrifices
propagation.

So, in your example for 5*x+y=z, you post:
IntArgs c(3);
IntVarArgs xyz(3);
c[0]= 5; xyz[0]=x;
c[1]= 1; xyz[1]=y;
c[2]=-1; xyz[3]=z;
linear(home,c,xyz,IRT_EQ,0);

Cheers
Christian

--
Christian Schulte, www.ict.kth.se/~cschulte/

-----Original Message-----
From: users-bounces at gecode.org [mailto:users-bounces at gecode.org] On Behalf
Of Max
Sent: Monday, December 01, 2008 5:24 PM
To: users at gecode.org
Subject: [gecode-users] Using Linear Constraints

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

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

_______________________________________________
Gecode users mailing list
users at gecode.org
https://www.gecode.org/mailman/listinfo/gecode-users

```