本系列文章将展示如何利用 Pyomo 的能力集成 Python 来建模优化应用程序。本系列的第一篇文章将介绍">基础知识。第 2 部分将介绍如何添加更多工具和构建一种可伸缩的架构。第 3 部分将提供一些使用 IPython 和 pandas 进行投资分析和统计分析的实用示例。
建模是一种解决复杂问题的强大方法。依据图书 Modeling Languages in Mathematical Optimization(参阅 参考资料)的叙述,模型用于:
解释现象 进行预测 评估关键因素 识别极限 分析折衷方法
在业界,Microsoft® Excel 等电子表格软件常常是建模问题的首要选择。现在,电子表格通常非常直观,但它们在解决大型问题上存在着局限性。如果您是开发人员,那么您可能会发现编写脚本来解决建模问题会更有效,因为您可以轻松地将脚本集成到其他系统中。本文将介绍使用 Pyomo 库在 Python 应用中实现线性优化的基础知识。
入门
首先要安装 Pyomo。Pyomo 是 Coopr 的一个中心组件,而 Coopr 是 Python 软件包的集合。您可以下载 coopr_install 脚本,在使用 Python 解释器运行它时,它会创建一个 Python 虚拟环境。
创建一个名为 “coopr” 的相对目录:
noahs-MacBook-Air% python coopr_install
使用下面的命令启动 Pyomo,这会将该相对目录和它的可执行文件放在您的路径中:
noahs-MacBook-Air% source coopr/bin/activate
使用 Pyomo "--help 命令获取使用 pyomo 的帮助:
(coopr)noahs-MacBook-Air% pyomo --help
您需要一个编译器来使用虚拟 Python 环境构建器 (virtualenv) 和 Pyomo。在 OS X 上,使用 XCode Developer Tools 命令行工具。在 Linux 上,使用 GNU Compiler Collection (GCC)。初始化这个虚拟环境后,可通过以下两种方式之一使用 Pyomo 解决问题:
使用 Pyomo 命令行工具: (coopr)noahs-MacBook-Air% pyomo my_problem.py --solver=glpk 或者,将初始化代码嵌入您的脚本中,通过 Python 解释器运行它:
清单 1. 在一个脚本中调用 Pyomo
#This is an optional code path that allows the script to be run outside of#pyomo command-line. For example: python wyndor.pyif __name__ == '__main__': #This replicates what the pyomo command-line tools does from coopr.opt import Solver
Factory opt = SolverFactory("glpk") instance = model.create() results = opt.solve(instance) #sends results to stdout results.write()
Pyomo 假设您至少安装了一个解算器 (solver)。GNU Linear Programming Kit (glpk) 是默认的解算器。请参阅您希望使用的解算器的安装说明。然后确保 Pyomo 能够在它的路径上找到此解算器。