BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
V12DBS
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
RobPratt
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

View solution in original post

2 REPLIES 2
RobPratt
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

V12DBS
Calcite | Level 5

Hi Rob,

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

Regards,

BG