BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
Santha
Pyrite | Level 9

Hi I am having syntax error in the constraint declaration 

The constraint that I want is to make sure that the model forces a specific combination. ie. IST-SAV-MAEU-SAV to be 1.  Not sure how to sum the containers.

 

var IsPortsTransitLSPDC {Ports,Transit,LSP,DC} binary;

num IST_SAV;
fix IsPortsTransitLSPDC ['IST','SAV','MAEU','SAV']=1;
READ DATA STDOPT.PN3381_Data(where=(PortSource = "QIN" and RateMatchDest='SAV')) INTO IST_SAV=FEU;

/*Force IST to SAV via MAEU and SAV*/
CON IST_SAV_MAEU_SAV {p in {'IST'}, {t in {'SAV'}, c in {'MAEU'}, d in {'SAV'}}:
ContainersfromPortstoLSPtoDC ['QIN','SAV','MAEU','SAV'] =IST_SAV*IsPortsTransitLSPDC['IST','SAV','MAEU','SAV'];

 

 

1 ACCEPTED SOLUTION

Accepted Solutions
RobPratt
SAS Super FREQ

I'm glad you got it working.  Because you don't use p, d, or c anywhere, here's a simpler way to declare the same constraint:

CON CONST_IST_SAV:
sum {t in Transit} ContainersfromPortstoLSPtoDC['IST',t,'MAEU','SAV'] =IST_SAV*IsPortsTransitLSPDC['IST','SAV','MAEU','SAV'];

View solution in original post

6 REPLIES 6
Santha
Pyrite | Level 9

oops. here is the constraint  i have

/*Force IST to SAV via MAEU and SAV*/
CON IST_SAV_MAEU_SAV {p in {'IST'}, {t in {'SAV'}, c in {'MAEU'}, d in {'SAV'}}:
ContainersfromPortstoLSPtoDC ['IST','SAV','MAEU','SAV'] =IST_SAV*IsPortsTransitLSPDC['IST','SAV','MAEU','SAV'];
RobPratt
SAS Super FREQ

Sorry, I don't quite understand your question.  The FIX statement will fix a variable to a given value, and your syntax for that looks correct.  Where does the sum come in?

Santha
Pyrite | Level 9

Rob

yeah i want that specific variable to be set 1 when the combo is IST-SAV-MAEU-SAV. 

In order to do that i declare a binary variable IsPortsTransitLSPDC and set it as 1. And also trying to set up a constraint so that this variable is used correctly and that the flow through this combo is exactly we see in my other variable IST_SAV that  I have. 

Santha
Pyrite | Level 9

Tried this one as well: Feels am close but not yet

CON CONST_IST_SAV {p in {'IST'}, d in {'SAV'}}: 
sum {t in Transit,c in LSP} ContainersfromPortstoLSPtoDC['IST',t,c,'SAV'] =IST_SAV*IsPortsTransitLSPDC['IST','SAV','MAEU','SAV'];
Santha
Pyrite | Level 9
CON CONST_IST_SAV {p in {'IST'}, d in {'SAV'},c in {'LSP'}}: 
sum {t in Transit} ContainersfromPortstoLSPtoDC['IST',t,'MAEU','SAV'] =IST_SAV*IsPortsTransitLSPDC['IST','SAV','MAEU','SAV'];

based on your feedback, i tweaked  and this one worked. 

 

RobPratt
SAS Super FREQ

I'm glad you got it working.  Because you don't use p, d, or c anywhere, here's a simpler way to declare the same constraint:

CON CONST_IST_SAV:
sum {t in Transit} ContainersfromPortstoLSPtoDC['IST',t,'MAEU','SAV'] =IST_SAV*IsPortsTransitLSPDC['IST','SAV','MAEU','SAV'];

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

Multiple Linear Regression in SAS

Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 6 replies
  • 639 views
  • 0 likes
  • 2 in conversation