150 likes | 344 Views
COIN-SMI 2006. Alan King IBM TJ Watson Research Center. Optimization and Uncertainty. Many practical applications involve aspects of uncertainty and optimization. Examples just from EURO 2006: Hydropower Management (MA-43) Pension Fund Management (ME-43 and TB-43) Risk Functionals (TA-43)
E N D
COIN-SMI 2006 Alan King IBM TJ Watson Research Center DIMACS 2006
Optimization and Uncertainty • Many practical applications involve aspects of uncertainty and optimization. • Examples just from EURO 2006: • Hydropower Management (MA-43) • Pension Fund Management (ME-43 and TB-43) • Risk Functionals (TA-43) • Gas Retail, Labor Market, Mobile Telcom (TD-43) • Asset Allocation (TD-44) • Optimal portfolio growth (TE-43) • Equilibrium constraints (WA-43) • Workforce Capacity planning (WB-44) • Minefield navigation, portfolio selection, supply chain optimization, energy systems optimization (WE-44) • A framework is needed • To combine uncertainty and optimization data types • To support model formulations DIMACS 2006
Stochastic Modeling Interface • SMI is intended to take care of common programming issues • handling probability distributions, • managing problem generation, • interfacing between modeling environments and solvers • Many modeling and algorithmic approaches can belong here: • Stochastic programming with recourse • Chance constrained programming • Robust optimization • Risk functionals DIMACS 2006
Example: SmiScnModel Stochastic Linear Programming object • Accept SLP data: • LP data • Time data • Stochastic data • Process SLP data: • Generate “Deterministic Equivalent” LP • Access SLP solution data for display and reporting Note – “scenario tree” is most general discrete distribution so we call this an “Scn” model DIMACS 2006
objective col lower T=0 T=1 T=0 row lower matrix row upper T=1 col upper Time Partition Data + LP Data = T=0 Core Data Node 0 T=1 Node 1 DIMACS 2006
scen 1 Core Data Scenarios + scen 2 scen 3 = Deterministic Equivalent LP DIMACS 2006
Deterministic Equivalent LP OSI Solver T=1 Scen=1 T=1 Scen=2 T=1 Scen=3 T=0 Primal Solution Dual Solution T=0 T=1 Scen=1 T=1 Scen=2 T=1 Scen=3 DIMACS 2006
SMPS driver // initialize with solver object SmiScnModel smi(new OsiClpSolverInterface()); // read SMPS model from files // <name>.core, <name>.time, and <name>.stoch smi.readSmps(name); // load solver data // this step generates the deterministic equivalent OsiSolverInterface *osiStoch = smi.loadOsiSolverData(); // solve osiStoch->initialSolve(); DIMACS 2006
Direct Methods • User input “Core Data” SmiCoreData *smiCore = new SmiCoreData(&osi,nstg,cstg,rstg); • Discrete Distribution SmiDiscreteRV *smiRV = new SmiDiscreteRV(nper); smiRV->addEvent(SmiCore, matrix,dcup,dclo,dcobj,drlo,drup, prob); • Scenario Input smiModel->generateScenario(smiCore, matrix,dcup,dclo,dcobj,drlo,drup, branch_period,ancestor_scen,prob); DIMACS 2006
Helper classes • SmiLinearData • Organizes LP data by Node • SmiCoreData • Partitions Core LP by time period mappings • SmiNodeData • Node information, offsets within det eq LP, Tree relationships • SmiCoreCombineRule • How scenario data is combined with core data (Add, Replace, User specified …multiply?) • SmiDiscreteDistribution • Events (values of certain LP data elements) & Probabilities (prob of event) • SmiScenarioTree • Template class for handling tree structures DIMACS 2006
Smi/example/stoch.cpp • SmpsIO("../../Data/Stochastic/wat_10_C_32") • solves a sample from the one of the Watson-Cambridge Asset Liability problems in SMPS format • ModelScenario() • demonstrates use of scenario generation methods on Dantzig-Ferguson's Aircraft Allocation problem. • ModelDiscrete() • demonstrates use of discrete distribution generation methods DIMACS 2006
COIN-SMI Status • SmiScnModel object • built on Coin-Utilities & Coin-Open Solver Interface • Good start … but not enough action • Most action is from folks who find a problem when they try to process SMPS files • …that works with some other package • …that any reasonable person would agree should work fine • … • Some “lukewarm” requests for decomposition solver, but: • No-one has an urgent actual application to solve • No-one has offered any real assistance • So – how do we get more action? • Will “real” users try Stochastic Modeling? DIMACS 2006
Try something different (1) • Make something from information that “normal optimization users” can provide • LP problem (no special features) • Std Deviation error range for some LP elements • SMI models we can generate with this information • Probabilistic Robust Optimization (Bertsimas-Sim) • Feasibility with given probability • Simple Recourse (Wets) • Penalized row variation from feasibility with given recourse weightings DIMACS 2006
Try something different (2) • A modeling language that incorporates stochastics • Roadmap • Start with COIN-FlopC++ • Add “parameter” class • Create “LP data” generator class with parameter as input. • Parameters become distributions • Main problem: Complex dependence! • generate parser to record LP data dependence on parameters DIMACS 2006
Try something different (3) <your contribution goes here> DIMACS 2006