Not in-equal operator in constraint

Dear all user,
How can i code (x(i,i)≠x(k,k), i≠k) in MIP model?
Thanks in advance,


To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.

Dear all user,
How can i code (x(i,i)≠x(k,k), i≠k) in MIP model?
Thanks in advance,

perhaps you can try if this way would work:

YourExpr(i,k) $ ( ord(i) ord(k) ) Sqr( x(i,i) - x(k,k) ) =g= 0;

HTH,

Yan


\

Hi,

The piece of code by Yan may work but it is non-linear because it incorporates the SQR function.

You may try the following (linear formulation):

YourEquation(i,k) $ (ORD(i) NE ORD(k)) …
x(i,i) =N= x(k,k);

I hope that helps.

Destin

On Sun, May 20, 2012 at 6:36 PM, 任彦 wrote:

\

Dear all user,
How can i code (x(i,i)≠x(k,k), i≠k) in MIP model?
Thanks in advance,

perhaps you can try if this way would work:

YourExpr(i,k) $ ( ord(i) ord(k) ) Sqr( x(i,i) - x(k,k) ) =g= 0;

HTH,

Yan

\

To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.

\

To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.

Thanks, but i try this equation (i.e. x(i,i) =N= x(k,k):wink: and it
doesn’t work in my MIP model.

On 5/21/12, Destin Zed wrote:

Hi,

The piece of code by Yan may work but it is non-linear because it
incorporates the SQR function.

You may try the following (linear formulation):

YourEquation(i,k) $ (ORD(i) NE ORD(k)) …
x(i,i) =N=
x(k,k);

I hope that helps.

Destin

On Sun, May 20, 2012 at 6:36 PM, 任彦 wrote:

Dear all user,
How can i code (x(i,i)≠x(k,k), i≠k) in MIP model?
Thanks in advance,

perhaps you can try if this way would work:

YourExpr(i,k) $ ( ord(i) ord(k) ) Sqr( x(i,i) - x(k,k) ) =g= 0;

HTH,

Yan


“gamsworld” group.
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to
gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/gamsworld?hl=en.


“gamsworld” group.
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to
gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/gamsworld?hl=en.


\

The =N= relationship means ’non-binding’ which means that the constraint can be ignored so this proposal will not work.



The original question did not specify whether x is continuous, integer, or binary:



If x is binary then x(i,i) not equal to x(k,k) is equivalent to x(i,i) + x(k,k) =E= 1. If x(i,i) is 1 then x(k,k) must be zero and if x(i,i) is 0 then x(k,k) must be 1.



If x is integer then you need an extra binary variable to indicate which of the two variables is larger.



And if x is supposed to be continuous then you are in trouble. Not equal is not well defined in continuous numerical optimization.



Good luck



Arne


\

Arne Stolbjerg Drud

ARKI Consulting & Development A/S

Bagsvaerdvej 246A, DK-2880 Bagsvaerd, Denmark

Phone: (+45) 44 49 03 23, Fax: (+45) 44 49 03 33, email: adrud@arki.dk



From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com] On Behalf Of Destin Zed
Sent: Monday, May 21, 2012 12:35 PM
To: gamsworld@googlegroups.com
Subject: Re: Not in-equal operator in constraint



Hi,

The piece of code by Yan may work but it is non-linear because it incorporates the SQR function.

You may try the following (linear formulation):

YourEquation(i,k) $ (ORD(i) NE ORD(k)) …
x(i,i) =N= x(k,k);

I hope that helps.

Destin

On Sun, May 20, 2012 at 6:36 PM, 任彦 wrote:

\

Dear all user,
How can i code (x(i,i)≠x(k,k), i≠k) in MIP model?
Thanks in advance,

perhaps you can try if this way would work:

YourExpr(i,k) $ ( ord(i) ord(k) ) Sqr( x(i,i) - x(k,k) ) =g= 0;

HTH,

Yan


\

To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.


\

To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.


To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.

Why Equation(i,k) $ (ORD(i) ORD(k)) … x(i,i)+eps =e= x(k,k); can
not be used in GAMS for my problem.
I don’t want to employ an extra binary variable.


On 5/21/12, Arne Stolbjerg Drud wrote:

The =N= relationship means ’non-binding’ which means that the constraint can
be ignored so this proposal will not work.

The original question did not specify whether x is continuous, integer, or
binary:

If x is binary then x(i,i) not equal to x(k,k) is equivalent to x(i,i) +
x(k,k) =E= 1. If x(i,i) is 1 then x(k,k) must be zero and if x(i,i) is 0
then x(k,k) must be 1.

If x is integer then you need an extra binary variable to indicate which of
the two variables is larger.

And if x is supposed to be continuous then you are in trouble. Not equal is
not well defined in continuous numerical optimization.

Good luck

Arne


Arne Stolbjerg Drud

ARKI Consulting & Development A/S

Bagsvaerdvej 246A, DK-2880 Bagsvaerd, Denmark

Phone: (+45) 44 49 03 23, Fax: (+45) 44 49 03 33, email: adrud@arki.dk

From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com] On
Behalf Of Destin Zed
Sent: Monday, May 21, 2012 12:35 PM
To: gamsworld@googlegroups.com
Subject: Re: Not in-equal operator in constraint

Hi,

The piece of code by Yan may work but it is non-linear because it
incorporates the SQR function.

You may try the following (linear formulation):

YourEquation(i,k) $ (ORD(i) NE ORD(k)) …
x(i,i) =N=
x(k,k);

I hope that helps.

Destin

On Sun, May 20, 2012 at 6:36 PM, 任彦 wrote:

Dear all user,
How can i code (x(i,i)≠x(k,k), i≠k) in MIP model?
Thanks in advance,

perhaps you can try if this way would work:

YourExpr(i,k) $ ( ord(i) ord(k) ) Sqr( x(i,i) - x(k,k) ) =g= 0;

HTH,

Yan


“gamsworld” group.
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to
gamsworld+unsubscribe@googlegroups.com
.
For more options, visit this group at
http://groups.google.com/group/gamsworld?hl=en.


“gamsworld” group.
To post to this group, send email to
gamsworld@googlegroups.com.
To unsubscribe from this group, send email to

gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at

http://groups.google.com/group/gamsworld?hl=en.


“gamsworld” group.
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to
gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/gamsworld?hl=en.


\

Destin:

Eps represent a very small number. For most numerical purposes it is equal to zero so your proposal essentially says that the two variables are the same. Try to look at the equation listing to see how GAMS interprets your equation.

You comment “I don’t want to employ an extra binary variable” is not constructive. If it is necessary, you must use it. But to know, please indicate which type of variable x is.

Arne


Arne Stolbjerg Drud
ARKI Consulting & Development A/S
Bagsvaerdvej 246A, DK-2880 Bagsvaerd, Denmark
Phone: (+45) 44 49 03 23, Fax: (+45) 44 49 03 33, email: adrud@arki.dk

-----Original Message-----
From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com] On Behalf Of hossein karimi
Sent: Monday, May 21, 2012 5:39 PM
To: gamsworld@googlegroups.com
Subject: Re: Not in-equal operator in constraint

Why Equation(i,k) $ (ORD(i) ORD(k)) … x(i,i)+eps =e= x(k,k); can not be used in GAMS for my problem.
I don’t want to employ an extra binary variable.


On 5/21/12, Arne Stolbjerg Drud wrote:

The =N= relationship means ’non-binding’ which means that the
constraint can be ignored so this proposal will not work.

The original question did not specify whether x is continuous,
integer, or
binary:

If x is binary then x(i,i) not equal to x(k,k) is equivalent to x(i,i)
+
x(k,k) =E= 1. If x(i,i) is 1 then x(k,k) must be zero and if x(i,i) is
0 then x(k,k) must be 1.

If x is integer then you need an extra binary variable to indicate
which of the two variables is larger.

And if x is supposed to be continuous then you are in trouble. Not
equal is not well defined in continuous numerical optimization.

Good luck

Arne


Arne Stolbjerg Drud

ARKI Consulting & Development A/S

Bagsvaerdvej 246A, DK-2880 Bagsvaerd, Denmark

Phone: (+45) 44 49 03 23, Fax: (+45) 44 49 03 33, email: adrud@arki.dk

From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com]
On Behalf Of Destin Zed
Sent: Monday, May 21, 2012 12:35 PM
To: gamsworld@googlegroups.com
Subject: Re: Not in-equal operator in constraint

Hi,

The piece of code by Yan may work but it is non-linear because it
incorporates the SQR function.

You may try the following (linear formulation):

YourEquation(i,k) $ (ORD(i) NE ORD(k)) …
x(i,i)
=N= x(k,k);

I hope that helps.

Destin

On Sun, May 20, 2012 at 6:36 PM, 任彦 wrote:

Dear all user,
How can i code (x(i,i)≠x(k,k), i≠k) in MIP model?
Thanks in advance,

perhaps you can try if this way would work:

YourExpr(i,k) $ ( ord(i) ord(k) ) Sqr( x(i,i) - x(k,k) ) =g= 0;

HTH,

Yan


You received this message because you are subscribed to the Google
Groups “gamsworld” group.
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to
gamsworld+unsubscribe@googlegroups.com
.
For more options, visit this group at
http://groups.google.com/group/gamsworld?hl=en.


You received this message because you are subscribed to the Google
Groups “gamsworld” group.
To post to this group, send email to

gamsworld@googlegroups.com.
To unsubscribe from this group, send email to

gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at

http://groups.google.com/group/gamsworld?hl=en.


You received this message because you are subscribed to the Google
Groups “gamsworld” group.
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to
gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/gamsworld?hl=en.


To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.

\

Thx

X is integer in my model.

I also, instead of eps, use a very small number such as 0.001. But it
doesn’t work too

On 5/21/12, Arne Stolbjerg Drud wrote:

Destin:

Eps represent a very small number. For most numerical purposes it is equal
to zero so your proposal essentially says that the two variables are the
same. Try to look at the equation listing to see how GAMS interprets your
equation.

You comment “I don’t want to employ an extra binary variable” is not
constructive. If it is necessary, you must use it. But to know, please
indicate which type of variable x is.

Arne


Arne Stolbjerg Drud
ARKI Consulting & Development A/S
Bagsvaerdvej 246A, DK-2880 Bagsvaerd, Denmark
Phone: (+45) 44 49 03 23, Fax: (+45) 44 49 03 33, email: adrud@arki.dk

-----Original Message-----
From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com] On
Behalf Of hossein karimi
Sent: Monday, May 21, 2012 5:39 PM
To: gamsworld@googlegroups.com
Subject: Re: Not in-equal operator in constraint

Why Equation(i,k) $ (ORD(i) ORD(k)) … x(i,i)+eps =e= x(k,k); can not be
used in GAMS for my problem.
I don’t want to employ an extra binary variable.

On 5/21/12, Arne Stolbjerg Drud wrote:

The =N= relationship means ’non-binding’ which means that the
constraint can be ignored so this proposal will not work.

The original question did not specify whether x is continuous,
integer, or
binary:

If x is binary then x(i,i) not equal to x(k,k) is equivalent to x(i,i)
+
x(k,k) =E= 1. If x(i,i) is 1 then x(k,k) must be zero and if x(i,i) is
0 then x(k,k) must be 1.

If x is integer then you need an extra binary variable to indicate
which of the two variables is larger.

And if x is supposed to be continuous then you are in trouble. Not
equal is not well defined in continuous numerical optimization.

Good luck

Arne


Arne Stolbjerg Drud

ARKI Consulting & Development A/S

Bagsvaerdvej 246A, DK-2880 Bagsvaerd, Denmark

Phone: (+45) 44 49 03 23, Fax: (+45) 44 49 03 33, email: adrud@arki.dk

From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com]
On Behalf Of Destin Zed
Sent: Monday, May 21, 2012 12:35 PM
To: gamsworld@googlegroups.com
Subject: Re: Not in-equal operator in constraint

Hi,

The piece of code by Yan may work but it is non-linear because it
incorporates the SQR function.

You may try the following (linear formulation):

YourEquation(i,k) $ (ORD(i) NE ORD(k)) …
x(i,i)
=N= x(k,k);

I hope that helps.

Destin

On Sun, May 20, 2012 at 6:36 PM, 任彦 wrote:

Dear all user,
How can i code (x(i,i)≠x(k,k), i≠k) in MIP model?
Thanks in advance,

perhaps you can try if this way would work:

YourExpr(i,k) $ ( ord(i) ord(k) ) Sqr( x(i,i) - x(k,k) ) =g= 0;

HTH,

Yan


You received this message because you are subscribed to the Google
Groups “gamsworld” group.
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to
gamsworld+unsubscribe@googlegroups.com
.
For more options, visit this group at
http://groups.google.com/group/gamsworld?hl=en.


You received this message because you are subscribed to the Google
Groups “gamsworld” group.
To post to this group, send email to

gamsworld@googlegroups.com.
To unsubscribe from this group, send email to

gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at

http://groups.google.com/group/gamsworld?hl=en.


You received this message because you are subscribed to the Google
Groups “gamsworld” group.
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to
gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/gamsworld?hl=en.


“gamsworld” group.
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to
gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/gamsworld?hl=en.


“gamsworld” group.
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to
gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/gamsworld?hl=en.


\

Since your variables are integer then not equal means that the difference is at least 1.

You can use the following code:

Scalar M upper bound on an integer default in GAMS is 100 / 100 /;
Binary variable y(i,k) is 1 if x(i,i) is greater than x(k,k);
Equation side1(i,k), Side2(i,k);
Side1(i,k)(ord(i) gt ord(k)).. 1-M*(y(i,k)-1) =L= x(i,i) - x(k,k); Side2(i,k)(ord(i) gt ord(k))… x(i,i) -x(k,k) =L= -1-M*y(i,k);

Note the $-control on the equations – you only test each pair once and not twice as in some of the previous suggestions.

To ensure that the constraints are OK, try to see what the equations look like with y=0 and y=1 respectively:

Y(i,k)=0: 1-M =L= x(i,i)-x(k,k) =L= -1, i.e. x(i,i) =L= x(k,k)-1
Y(i,k)=1: 1 =L= x(i,i)-x(k,k) =L= -1-M, i.e. x(i,i) =G= x(k,k)+1


Arne Stolbjerg Drud
ARKI Consulting & Development A/S
Bagsvaerdvej 246A, DK-2880 Bagsvaerd, Denmark
Phone: (+45) 44 49 03 23, Fax: (+45) 44 49 03 33, email: adrud@arki.dk

-----Original Message-----
From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com] On Behalf Of hossein karimi
Sent: Monday, May 21, 2012 8:26 PM
To: gamsworld@googlegroups.com
Subject: Re: Not in-equal operator in constraint

Thx

X is integer in my model.

I also, instead of eps, use a very small number such as 0.001. But it doesn’t work too

On 5/21/12, Arne Stolbjerg Drud wrote:

Destin:

Eps represent a very small number. For most numerical purposes it is
equal to zero so your proposal essentially says that the two variables
are the same. Try to look at the equation listing to see how GAMS
interprets your equation.

You comment “I don’t want to employ an extra binary variable” is not
constructive. If it is necessary, you must use it. But to know, please
indicate which type of variable x is.

Arne


Arne Stolbjerg Drud
ARKI Consulting & Development A/S
Bagsvaerdvej 246A, DK-2880 Bagsvaerd, Denmark
Phone: (+45) 44 49 03 23, Fax: (+45) 44 49 03 33, email: adrud@arki.dk

-----Original Message-----
From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com]
On Behalf Of hossein karimi
Sent: Monday, May 21, 2012 5:39 PM
To: gamsworld@googlegroups.com
Subject: Re: Not in-equal operator in constraint

Why Equation(i,k) $ (ORD(i) ORD(k)) … x(i,i)+eps =e= x(k,k); can
not be used in GAMS for my problem.
I don’t want to employ an extra binary variable.

On 5/21/12, Arne Stolbjerg Drud wrote:

The =N= relationship means ’non-binding’ which means that the
constraint can be ignored so this proposal will not work.

The original question did not specify whether x is continuous,
integer, or
binary:

If x is binary then x(i,i) not equal to x(k,k) is equivalent to
x(i,i)
+
x(k,k) =E= 1. If x(i,i) is 1 then x(k,k) must be zero and if x(i,i)
is
0 then x(k,k) must be 1.

If x is integer then you need an extra binary variable to indicate
which of the two variables is larger.

And if x is supposed to be continuous then you are in trouble. Not
equal is not well defined in continuous numerical optimization.

Good luck

Arne


Arne Stolbjerg Drud

ARKI Consulting & Development A/S

Bagsvaerdvej 246A, DK-2880 Bagsvaerd, Denmark

Phone: (+45) 44 49 03 23, Fax: (+45) 44 49 03 33, email:
adrud@arki.dk

From: gamsworld@googlegroups.com [mailto:gamsworld@googlegroups.com]
On Behalf Of Destin Zed
Sent: Monday, May 21, 2012 12:35 PM
To: gamsworld@googlegroups.com
Subject: Re: Not in-equal operator in constraint

Hi,

The piece of code by Yan may work but it is non-linear because it
incorporates the SQR function.

You may try the following (linear formulation):

YourEquation(i,k) $ (ORD(i) NE ORD(k)) …
x(i,i)
=N= x(k,k);

I hope that helps.

Destin

On Sun, May 20, 2012 at 6:36 PM, 任彦 wrote:

Dear all user,
How can i code (x(i,i)≠x(k,k), i≠k) in MIP model?
Thanks in advance,

perhaps you can try if this way would work:

YourExpr(i,k) $ ( ord(i) ord(k) ) Sqr( x(i,i) - x(k,k) ) =g= 0;

HTH,

Yan


You received this message because you are subscribed to the Google
Groups “gamsworld” group.
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to
gamsworld+unsubscribe@googlegroups.com
.
For more options, visit this group at
http://groups.google.com/group/gamsworld?hl=en.


You received this message because you are subscribed to the Google
Groups “gamsworld” group.
To post to this group, send email to

gamsworld@googlegroups.com.
To unsubscribe from this group, send email to

gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at

http://groups.google.com/group/gamsworld?hl=en.


You received this message because you are subscribed to the Google
Groups “gamsworld” group.
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to
gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/gamsworld?hl=en.


You received this message because you are subscribed to the Google
Groups “gamsworld” group.
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to
gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/gamsworld?hl=en.


You received this message because you are subscribed to the Google
Groups “gamsworld” group.
To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to
gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/gamsworld?hl=en.


To post to this group, send email to gamsworld@googlegroups.com.
To unsubscribe from this group, send email to gamsworld+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/gamsworld?hl=en.

\