We present StochasticPrograms.jl, a user-friendly and powerful open-source framework for stochastic programming written in the Julia language. The framework includes both modeling tools and structure-exploiting optimization algorithms. Stochastic programming models can be efficiently formulated using expressive syntax and models can be instantiated, inspected, and analyzed interactively. The framework scales seamlessly to distributed environments. Small instances of a model can be run locally to ensure correctness, while larger instances are automatically distributed in a memory-efficient way onto supercomputers or clouds and solved using parallel optimization algorithms. These structure-exploiting solvers are based on variations of the classical L-shaped and progressive-hedging algorithms. We provide a concise mathematical background for the various tools and constructs available in the framework, along with code listings exemplifying their usage. Both software innovations related to the implementation of the framework and algorithmic innovations related to the structured solvers are highlighted. We conclude by demonstrating strong scaling properties of the distributed algorithms on numerical benchmarks in a multi-node setup.
翻译:我们提出“StochasticPrograms.jl”这个用户友好和强大的开放源码框架,用于以Julia语言撰写的随机编程。这个框架包括建模工具和结构开发优化算法。可以用直观的语法和模型进行高效的编程模型设计,可以即时、检查和分析。这个框架无缝地与分布式环境相匹配。一个模型的小实例可以在当地运行,以确保正确性,而更大的实例可以自动以记忆高效的方式向超级计算机或云层传播,并使用平行优化算法加以解决。这些结构开发解析器基于经典L型和累进式算法的变异。我们为各种工具提供了简明的数学背景,并在框架内提供各种工具的构建,同时提供代码列表,展示其使用情况。突出了与实施框架有关的软件创新以及与结构化解算法有关的两个创新。我们最后通过在多角度设置的数字基准上展示了分布算法的强大缩放属性。