Calcite | Level 5

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

1 ACCEPTED SOLUTION

Accepted Solutions
SAS Super FREQ

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

2 REPLIES 2
SAS Super FREQ

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

Calcite | Level 5

Hi Rob,

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

Regards,

BG

Discussion stats
• 2 replies
• 1253 views
• 0 likes
• 2 in conversation