Thanks Rob Here is the code. proc optmodel; set <str> Ports; set <str> DC; set <str> LSP; set <str> Transit; read data STDOPT.PN3158_Ports into Ports=[PortSource]; read data STDOPT.PN3158_DC into DC=[RateMatchDest]; read data STDOPT.PN3158_LSP into LSP=[LSP]; read data STDOPT.PN3158_TRANSIT into Transit=[Transit]; num Containers {Ports,DC}; read data STDOPT.PN3158_data into [PortSource RateMatchDest] Containers=FEU; print containers; /*END OF GETTING FEU DATA*/ var Is_LSP {LSP} binary; var IsLSPDC {LSP,DC} binary; var IsPortsLSPDC {Ports,LSP,DC} binary; /*Close/Open Entities */ fix Is_LSP ['EGLV']=0; fix Is_LSP ['CMDU']=0; fix Is_LSP ['APLU']=1; fix Is_LSP ['COSU']=1; fix Is_LSP ['ONEY']=1; fix Is_LSP ['MAEU']=1; fix Is_LSP ['ZIMU']=1; fix Is_LSP ['WHLC']=1; fix Is_LSP ['HLCU']=1; /* declare Constants*/ num Min_Qty_LSP=0; /*NUM BigM=STDOPT.PN3158_BigM.FEU;*/ /*RATES*/ num InboundLinehaul {Ports,Transit,LSP,DC}; read data STDOPT.PN3158_RATES into [PortSource Transit LSP RateMatchDest] InboundLinehaul=Rate; /* DECISON VARIABLE */ var ContainersfromPortstoLSPtoDC {Ports,Transit,LSP,DC}>=0; /* IMPLIED VARIABLE */ impvar Inbound_Linehaul_Costs= sum {p in Ports, t in Transit,c in LSP, d in DC} InboundLinehaul [p,t,c,d] *ContainersfromPortstoLSPtoDC [p,t,c,d]; impvar ContainersatLSP{c in LSP}=sum{p in Ports,t in Transit,d in DC} ContainersfromPortstoLSPtoDC [p,t,c,d]; impvar ContainersatTransitLSP{t in Transit, c in LSP}=sum{p in Ports,d in DC} ContainersfromPortstoLSPtoDC [p,t,c,d]; /* declare Objective Function*/ Min TotalCost = Inbound_Linehaul_Costs; /* GENERAL CONSTRAINTS */ con Min_Qty_at_LSP_is_Respected {c in LSP} : sum{p in Ports,t in Transit,d in DC} ContainersfromPortstoLSPtoDC [p,t,c,d]>=Min_Qty_LSP*Is_LSP[c]; con ModelOutput_Same_As_ModelInput {p in Ports, d in DC}: sum {t in Transit,c in LSP} ContainersfromPortstoLSPtoDC[p,t,c, d] = Containers [p,d]; con CheckLSP {c in LSP}: ContainersatLSP[c] <= 40000*Is_LSP[c]; expand; solve with milp; /*Outputs*/ print ContainersatLSP; print Is_LSP; print TotalCost;
... View more