# Copy of AMPL model file for gas company two-stage stochastic programming # example from NEOS Server # # Original from http://www-fp.mcs.anl.gov/otc/Guide/CaseStudies/slp/ # param LastPeriod > 0; # Number of periods in the model param LastScenario{-1..LastPeriod} >= 0; param PurchasePrice{t in 0..LastPeriod,0..LastScenario[t]} >= 0; param Demand {t in 0..LastPeriod,0..LastScenario[t]} >= 0; param Probability {t in 0..LastPeriod,0..LastScenario[t]} >= 0; param Parent {t in 0..LastPeriod,0..LastScenario[t]} >= 0; param StorageCost > 0; # VARIABLES # var Purchase {t in 0..LastPeriod, 0..LastScenario[t]} >= 0; var UseFromStorage {t in 0..LastPeriod, 0..LastScenario[t]} >= 0; var Storage {t in -1..LastPeriod,0..LastScenario[t]} >= 0; # OBJECTIVE FUNCTION # minimize TotalCost: sum{t in 0..LastPeriod, s in 0..LastScenario[t]} Probability[t,s] * (PurchasePrice[t,s] * Purchase[t,s] + StorageCost * Storage[t,s]); # CONSTRAINTS # subject to MeetDemand{t in 0..LastPeriod, s in 0..LastScenario[t]}: Purchase[t,s] + UseFromStorage[t,s] >= Demand[t,s]; subject to StorageBalance{t in 0..LastPeriod, s in 0..LastScenario[t]}: Storage[t,s] = Storage[t-1,Parent[t,s]] + Purchase[t,s] - Demand[t,s]; subject to UseLessThanHave{t in 0..LastPeriod, s in 0..LastScenario[t]}: UseFromStorage[t,s] <= Storage[t-1,Parent[t,s]]; subject to InitialStorage: Storage[-1,0] = 0;