PyomoFest 圣母大学!
/PyomoFest 圣母大学由 Alex Dowling 和 Jeff Kantor 于2018年6月的第一周主办。Pyomo 开发人员有机会进行了一些教程,并了解了圣母大学正在进行的有趣工作。
PyomoFest 圣母大学由 Alex Dowling 和 Jeff Kantor 于2018年6月的第一周主办。Pyomo 开发人员有机会进行了一些教程,并了解了圣母大学正在进行的有趣工作。
我们正在行动!文档已转换为 sphinx,现已在 readthedocs 上发布。请参阅 https://docs.pyomo.cn/en/latest/
将于10月3日和4日在挪威特隆赫姆举行另一场 Pyomo-fest。要注册,请发送电子邮件给我,DLWoodruff,在 UCDavis 的 edu 域。这些节日是 Pyomo 用户展示他们的工作并与 Pyomo 开发人员讨论新开发想法的机会。我们通常以 Pyomo 使用的简短教程和项目更新开始。
这篇帖子只对从事随机规划研究的人士感兴趣。一个 Pyomo 模型和用于著名 SSLP 基准问题的 PySP 数据可在线获取,还有一个包含一些性能基准的简短文档,地址是
https://github.com/DLWoodruff/sslp-pysp
docker hub 上有一个包含 Pyomo 和 glpk 的公共镜像。要使用它,请安装 docker,运行 docker,然后使用如下命令
docker pull dlwoodruff/pyomoglpk
获取镜像。一旦有了镜像,您可能希望使用如下命令挂载本地文件系统运行它
docker run -i -t -v /home/woodruff:/home/woodruff pyomoglpk /bin/bash
根据您的环境,您可能需要在 docker 命令前使用 sudo,或者您可能需要在 Windows 机器上做一些工作来使挂载可用。Docker 有很好的文档,因此您可以获得更多关于如何执行这些操作的详细信息。Docker 的主要优点是,您可以将 Pyomo 模型分发给拥有 docker 但不想或不能安装 Python、Pyomo 和 glpk 的人。我知道这样的人数很少。
本文涵盖了 Pyomo 在过去几个发布周期中发生的一些主要变化,以及如何更新使用早于 4.x 版本的 Pyomo 编写的代码。
旧 Coopr 代码:
|
from coopr.pyomo import * from coopr.opt import SolverFactory |
Pyomo 4.x 代码:
|
from pyomo.environ import * from pyomo.opt import SolverFactory |
旧 Coopr 代码
| results = opt.solve(instance) instance.load(results) |
Pyomo 4.x 代码
| results = opt.solve(instance, load_solutions=False) instance.solutions.load_from(results) |
旧 Coopr 代码
| instance.x[1].fix(5.0) instance.preprocess() results = opt.solve(instance) |
Pyomo 4.x 代码
| instance.x[1].fix(5.0) results = opt.solve(instance) |
感谢 Francisco Muñoz 在圣地亚哥阿道夫·伊巴涅斯大学组织了一场精彩的研讨会。
需要试用 Pyomo 下一个版本中的新功能或修复吗?那么你就会想要从 trunk 安装 Pyomo。在大多数情况下,这可以使用 https://software.sandia.gov/trac/pyomo/downloader 提供的 pyomo_install 脚本来完成。这篇帖子将回顾如何使用这个脚本,同时也将介绍另一种使用 pip 命令从 trunk 安装的方法。
要使用 pyomo_install 脚本从 trunk 安装,必须执行如下的 shell 命令
$ python pyomo_install --trunk --venv pyomo_python
此命令中的 --venv 选项告诉安装脚本在名为 pyomo_python 的目录中创建一个新的 Python 安装。如果安装成功,pyomo_python 目录将包含一个名为 bin 的子目录。在 bin 中将有一个新的 Python 可执行文件以及其他 Pyomo 命令。导入 Pyomo 包的脚本需要使用此目录中的 Python 可执行文件。你可能会觉得最好将此 bin 目录添加到 PATH 环境变量的开头,从而将其设为默认 Python。请注意,安装 trunk 需要在你的命令 shell 中提供 svn 命令 (subversion)。
在某些系统上,包括 Windows,你可能会遇到上述安装方法的问题。使用 pyomo_install 脚本的一个很好的替代方案是使用基于 Python 的包管理器 pip。在较新版本的 Python 中,pip 默认安装。如果你有旧版本的 Python(2.7 及更早版本的一些版本),你必须首先通过下载并执行在 https://pip.pypa.org.cn/en/stable/installing 找到的 get-pip.py 脚本来获取 pip。除了 pip,git 命令也需要在你的命令 shell 中可用。
一旦 pip 和 git 命令可用,Pyomo trunk 的安装过程如下
使用 pip 从 GitHub 安装 PyUtilib 的 master 分支
$ pip install git+https://github.com/PyUtilib/pyutilib
如果将来你需要删除 Pyomo 和 Pyutilib,只需执行命令
$ pip uninstall Pyomo Pyutilib
要更新到新的 Pyomo 版本,请执行命令
$ pip install -U Pyomo
如果你在 Windows 上,Pyomo 安装过程将在系统上安装 Python 的目录内创建一个名为 'Scripts' 的子目录。尽管你的系统 Python 已经能够执行 Pyomo 脚本,但 Scripts 子目录将包含你可能会觉得有用的其他各种 Pyomo 工具(例如 pyomo 命令)。将此目录添加到你的 PATH 将使这些工具在你下次打开命令 shell 时可用。下面的屏幕截图显示了我如何在 Windows 8 上为位于 C:\Python27 的 Python2.7 安装编辑 PATH 环境变量。
(更新:此帖子在 Pyutilib 的 git "pyomo" 开发分支与 Pyutilib 的 git master 分支永久合并后进行了编辑)
(更新:此帖子在 Pyomo 移至 GitHub 后进行了编辑)
如果您是 Pyomo 的新手或正在教授使用 Pyomo 的课程,您可能会发现以下一系列视频很有帮助:http://dlwoodruff.ucdavis.edu/PyomoVideos/VList1.html
邀请Pyomo用户和潜在用户参加Pyomo研讨会。我们可能会稍作调整日程以适应参会者,但目前的计划如下:
3月16日,星期三:面向新用户的教程和面向高级用户的新功能回顾
3月17日,星期四:用户演讲和高级主题
3月18日,星期五:合作与高级主题
研讨会将在亚琛工业大学(RWTH Aachen)举行
Aixtron A
底层,Se1房间
Kackerstraße 15, 亚琛, 德国
如果您计划参加,请发送电子邮件至DLWoodruff@UCDavis.edu
组织者
Alexander Mitsos;亚琛工业大学;alexander.mitsos@avt.rwth-aachen.de
Bill Hart;桑迪亚国家实验室;wehart@sandia.gov
Carl Laird;普渡大学;lairdc@purdue.edu
John Siirola;桑迪亚国家实验室;jdsiiro@sandia.gov
Jean-Paul Watson:桑迪亚国家实验室;jwatson@sandia.gov
David Woodruff;加州大学戴维斯分校;dlwoodruff@ucdavis.edu
要将求解器 glpk 与 Pyomo 一起使用,必须安装它,以便可以从任何目录在命令行上给出命令 glpsol --help。这在 Unix 机器上很容易做到,但在 Windows 上有点棘手。在此视频中,我们向您展示了如果您的机器上安装了 glpk,但尚未完全安装,它会是什么样子。该视频没有向您展示如何完全安装它。这实际上不是一个 Pyomo 问题,并且有不止一种方法,但您可以在 Google 上搜索。这是一个视频链接
http://dlwoodruff.ucdavis.edu/badGLPK.mp4
我们很高兴地宣布发布 Pyomo 4.1 (4.1.10519)。Pyomo 是一组 Python 软件包,支持各种优化功能,用于公式化和分析优化模型。
此版本的亮点如下
- 建模
* 模型转换的 API 更改
* SOSConstraint、Suffix 和 Block 组件的修订 API
* 优化结果现在加载到模型中
* 删除模型预处理的显式规范
- 求解器
* 解决了编写和求解 MPEC 的许多问题
* MPEC 元求解器名称的更改
* runph 的解决方案输出已更改为
- 其他
* Pyomo 子命令现在可以使用配置文件(例如 pyomo solve config.json)
* 新的 JSON/YAML 参数数据格式
* 添加了一个脚本来安装 pyomo.extras
有关安装选项和 Pyomo 入门文档,请参阅 https://pyomo.cn。
享受!
Pyomo 主页为 Pyomo 用户提供了资源
Pyomo 开发由 Sandia 国家实验室和 COIN-OR 托管
请参阅 Pyomo 论坛进行 Pyomo 的在线讨论
我制作了一个包含 Pyomo 在 Windows 上安装说明的视频。视频太长,但如果您遇到困难可能会有所帮助。具体行为取决于您的浏览器及其配置。请注意,当我点击 get-pip.py 时,程序会进入浏览器选项卡,而不是下载到下载目录,所以我只是将文件保存到下载目录。也许您的浏览器行为会不同。最终目标是下载并运行 get-pip.py,然后下载并运行 get-pyomo.py。我更喜欢从命令提示符运行它们。这是视频的 URL:http://dlwoodruff.ucdavis.edu/PyomoWindows.mp4
这仅适用于 Ubuntu(可能也包括 Debian)上 Pyomo 的 trunk 用户。如果您不知道为什么需要 trunk,那么您可能不需要它,并且可以完全忽略此帖子。
以下是我在2015年3月,Ubuntu 14.04 上使用 python3.4 安装 pyomo trunk 的步骤;
注意事项
0. 如果您想要 python2.7,请勿使用这些步骤。
1. 没有理由认为这些步骤会与 Mac 上的步骤相似
2. 我已经厌倦了这项工作,所以我没有进行实验来找出哪些步骤可以省略或简化
3. 显然,如果您已经将 numpy 等安装到 3.4 中,或者您不需要 numpy 等,则可以跳过这些步骤
4. 可能有打字错误(我没有粘贴这些)
sudo rm -r /usr/bin/python
sudo ln -s /usr/bin/python3.4 /usr/bin/python
sudo apt-get install python3-numpy
sudo apt-get install python3-scipy
sudo apt-get install python3-matplotlib
sudo apt-get install python3-pip
==== (如果需要,您稍后可以获取 xlrd)
=== 编辑 pyomo_install 以注释掉两行并添加一行
### install_pip(upgrade=options.zipfile is None, user=False, quiet=not options.verbose)
### pip = find_pip(pyomo_install_tempdir)
pip = "pip"
python pyomo_install –trunk --venv=pyomo
sudo rm -r /usr/bin/python
sudo ln -s /usr/bin/python2.7 /usr/bin/python
=== 确保您的 .bashrc 文件将 pyomo/bin 放在路径的非常靠前的位置
=== 打开一个新终端
我们很高兴地宣布发布 Pyomo 4.0 (4.0.9682)。Pyomo 是一组 Python 软件包,支持各种优化功能,用于公式化和分析优化模型。
此版本是 Pyomo 4.0.9638 的补丁版本。以下是此版本的亮点
- 建模
* 添加了 ComplementarityList 组件
- 求解器
* PySP 测试基线更新
- 其他
* 修复了结果对象腌制错误
* 修复了有序集的性能问题
* 解决了禁用 pyodbc 支持的错误。
* 添加了对 pypyodbc 的初步支持。
* 修复了允许使用元组初始化集合的问题
* 重新启用了“import”和“export”Pyomo 数据命令,这些命令
仍然已弃用。
* 各种性能增强,以避免迭代列表
字典键。
有关安装选项和 Pyomo 入门文档,请参阅 https://pyomo.cn。
享受!
- Pyomo 开发团队
- pyomo-developers@googlecode.com
- https://pyomo.cn
-----------
关于 Pyomo
-----------
Pyomo 主页为 Pyomo 用户提供了资源
* https://pyomo.cn
Pyomo 开发由 Sandia 国家实验室和 COIN-OR 托管
* https://software.sandia.gov/pyomo
* https://projects.coin-or.org/Pyomo
请参阅 Pyomo 论坛进行 Pyomo 的在线讨论
* http://groups.google.com/group/pyomo-forum/
Pyomo 旨在为用户提供高级脚本编写功能,以便使用现成的求解器快速轻松地编写元算法。编写这些脚本的用户通常需要根据从求解器获得的状态或终止条件做出决策。为此,Pyomo 提供了一组标准化的对象,无论使用何种求解器,都可以用于查询求解器信息。以下代码片段提供了一个典型场景,其中 SolverStatus 和 TerminationCondition 对象可能有用。
from pyomo.opt import SolverStatus, TerminationCondition
…
results = opt.solve(instance) # Solving a model instance
instance.load(results) # Loading solution into results object
if (results.solver.status == SolverStatus.ok) and (results.solver.termination_condition == TerminationCondition.optimal):
# Do something when the solution in optimal and feasible
elif (results.solver.termination_condition == TerminationCondition.infeasible):
# Do something when model in infeasible
else:
# Something else is wrong
print “Solver Status: ”, result.solver.status
下表提供了所有可用求解器状态和终止条件的完整列表。
| 求解器状态 | |
| ok | 正常终止 |
| warning | 以异常条件终止 |
| error | 内部错误终止 |
| aborted | 因外部条件(例如中断)终止 |
| unknown | 未知(未初始化的值) |
| maxTimeLimit | 超出允许的最大时间限制 |
| maxIterations | 超出允许的最大迭代次数 |
| minFunctionValue | 找到小于指定函数值的解 |
| minStepLength | 步长小于指定限制 |
| globallyOptimal | 找到全局最优解 |
| locallyOptimal | 找到局部最优解 |
| optimal | 找到最优解 |
| maxEvaluations | 超出最大问题评估次数(例如,分支定界节点) |
| other | 其他,未分类的正常终止 |
| unbounded | 证明问题无界 |
| infeasible | 证明问题不可行 |
| invalidProblem | 问题设置或特性对求解器无效 |
| solverFailure | 求解器未能正确终止 |
| internalSolverError | 内部求解器错误 |
| error | 其他错误 |
| userInterrupt | 用户生成的中断信号 |
| resourceInterrupt | 求解器使用的资源中的中断信号 |
| licensingProblem | 访问求解器许可时出现问题 |
我安装了最新版本的 Anaconda 2.7,然后安装了 Pyomo 的 trunk 版本。这导致 Pyro 出现内部错误,该错误被 Pyomo 捕获并报告为 Pyro 不存在。我不知道如何解决,因为我只是使用我的系统 Python 在我想要使用 Pyro 的机器上安装了 trunk。如果您不打算使用 Pyro,那么您可以忽略这篇博文 :)
我们很高兴地宣布发布 Pyomo 4.0 (4.0.9629)。Pyomo 是一组 Python 软件包,支持各种优化功能,用于公式化和分析优化模型。
此版本将 Coopr 更名为 Pyomo,这反映了用户一直将 Coopr 软件与 Pyomo 建模语言混淆的事实。Pyomo 4.0 包含以下重大更改
此版本的亮点如下
有关安装选项和 Pyomo 入门文档,请参阅 https://pyomo.cn。
享受!
Pyomo 主页为 Pyomo 用户提供了资源
Pyomo 开发由 Sandia 国家实验室和 COIN-OR 托管
请参阅 Pyomo 论坛进行 Pyomo 的在线讨论
Coopr 软件很快将更名为 Pyomo!Coopr 曾是一个伞式软件项目,其中包括 Pyomo 和其他软件组件。然而,大多数用户首先且最重要的是使用 Coopr 的 Pyomo 建模包。因此,许多用户将他们的模型描述为“Pyomo 模型”,即使它依赖于 Coopr 中的高级建模扩展。事实上,甚至 Coopr 开发人员也经常讨论“Pyomo”开发。
鉴于这种混淆,我们决定将此软件明确命名为 Pyomo。今年秋天晚些时候,Pyomo 4.0 将发布。源代码仓库将更改以反映名称更改。新的 Pyomo 主页将托管在 https://pyomo.cn,并且 Pyomo Trac 站点将重新设计,以更明确地成为 Pyomo 开发人员的站点。
Pyomo 4.0 中还将有一些新功能。更多详细信息即将公布!