Pinned topic IfDecision Variable
Version: 12.4
Thank You

Re: IfDecision Variable
20121225T23:19:23ZThis is the accepted answer. This is the accepted answer.It's not very clear what you mean by "if condition in decision variable". I think you probably want to conditionally define a decision expression (dexpr) using a ifthenelse semantic. OPL provides a one line syntax for that:
range A = 1..5; dvar int b[a in A]; dvar int c[a in A]; dexpr int x[a in A] = a%2 == 0 ? b[a] : c[a];
In this example, x[a] is equal to b[a] if a is even, or c[a] if a is odd.
Regards,
StefanoUpdated on 20140326T05:51:45Z at 20140326T05:51:45Z by ironman 
Re: IfDecision Variable
20130106T17:37:57ZThis is the accepted answer. This is the accepted answer.Are you trying to use a decision variable in an ifstatement? This is not supported, see the reference manual.
What you can do instead is use logical constraints. A statement like 'if (x>=0) then a*y >= b' is equivalent to the implication constraint 'x >= 0 => a*y >= b'. 
Re: IfDecision Variable
20160626T11:06:45ZThis is the accepted answer. This is the accepted answer. SystemAdmin
 20130106T17:37:57Z
Are you trying to use a decision variable in an ifstatement? This is not supported, see the reference manual.
What you can do instead is use logical constraints. A statement like 'if (x>=0) then a*y >= b' is equivalent to the implication constraint 'x >= 0 => a*y >= b'.Hi,
I have a model
..
float D[N,N]=...;
..
dvar boolean x[N,N,N];
..
forall (i in N,j in N, k in V)
if (x[i,j,k]==1) then (D[i,k]+t[i,j] <= D[j,k]);I want dvar x in if statement like this. It has error 'Decision variable (or expression) "x" not allowed." please help. Thanks.

Re: IfDecision Variable
20160626T12:01:27ZThis is the accepted answer. This is the accepted answer. NRouge
 20160626T11:06:45Z
Hi,
I have a model
..
float D[N,N]=...;
..
dvar boolean x[N,N,N];
..
forall (i in N,j in N, k in V)
if (x[i,j,k]==1) then (D[i,k]+t[i,j] <= D[j,k]);I want dvar x in if statement like this. It has error 'Decision variable (or expression) "x" not allowed." please help. Thanks.
Hi,
instead of
forall (i in N,j in N, k in V)
if (x[i,j,k]==1) then (D[i,k]+t[i,j] <= D[j,k]);you should try
forall (i in N,j in N, k in V)
(x[i,j,k]==1) => (D[i,k]+t[i,j] <= D[j,k]);regards

Re: IfDecision Variable
20160626T12:17:02ZThis is the accepted answer. This is the accepted answer. AlexFleischer
 20160626T12:01:27Z
Hi,
instead of
forall (i in N,j in N, k in V)
if (x[i,j,k]==1) then (D[i,k]+t[i,j] <= D[j,k]);you should try
forall (i in N,j in N, k in V)
(x[i,j,k]==1) => (D[i,k]+t[i,j] <= D[j,k]);regards
Thanks a lot for your quick response .