## Operations Research topics: SAS/OR, SAS Optimization, and SAS Simulation Studio

Solved
Occasional Contributor
Posts: 11

Hello,

I have a constraint that needs a conditional statement and not sure what are the syntax to handle in proc optmodel.

for all "i" in PickUpNode table, if "i" = Cary, NC then

sum{<s,d> in RouteTable: s=i} 1 * MS[s,d] = 1;

else

sum{<s,d> in RouteTable: s=i} 1 * MS[s,d] <= 1;

Thank You,

BG

Accepted Solutions
Solution
‎01-30-2015 07:59 PM
SAS Employee
Posts: 538

Assuming MS >= 0, here are three ways, in increasing order of compactness:

con Mycon {i in PickUpNode}:

(if i = 'Cary, NC' then 1 else 0)

<= sum{<s,d> in RouteTable: s=i} MS[s,d]

<= 1;

con Mycon {i in PickUpNode}:

(if i = 'Cary, NC' then 1 else 0)

<= sum{<(i),d> in RouteTable} MS[i,d]

<= 1;

con Mycon {i in PickUpNode}:

(i = 'Cary, NC')

<= sum{<(i),d> in RouteTable} MS[i,d]

<= 1;

You might find these examples useful:

SAS/OR(R) 13.2 User's Guide: Mathematical Programming Examples

All Replies
Solution
‎01-30-2015 07:59 PM
SAS Employee
Posts: 538

Assuming MS >= 0, here are three ways, in increasing order of compactness:

con Mycon {i in PickUpNode}:

(if i = 'Cary, NC' then 1 else 0)

<= sum{<s,d> in RouteTable: s=i} MS[s,d]

<= 1;

con Mycon {i in PickUpNode}:

(if i = 'Cary, NC' then 1 else 0)

<= sum{<(i),d> in RouteTable} MS[i,d]

<= 1;

con Mycon {i in PickUpNode}:

(i = 'Cary, NC')

<= sum{<(i),d> in RouteTable} MS[i,d]

<= 1;

You might find these examples useful:

SAS/OR(R) 13.2 User's Guide: Mathematical Programming Examples

Occasional Contributor
Posts: 11

Hi Rob,

Thanks so much for the help. I truly appreciate it. The constraint is working beautifully.

Regards,

BG

🔒 This topic is solved and locked.