更新:请参阅我们刚刚发布的新GEKKO软件包。
APM Python是一个免费的优化工具箱,具有与APOPT,BPOPT,IPOPT和其他求解器的接口。它向求解器提供第一(Jacobian)和第二(Hessian)信息,并提供可选的Web界面来查看结果。APM Python客户端通过pip安装:
pip install APMonitor
也可以使用以下命令将其安装在Python脚本中:
try:
from APMonitor.apm import *
except:
# Automatically install APMonitor
import pip
pip.main(['install','APMonitor'])
from APMonitor.apm import *
我们已经进行了几次基准测试,发现APOPT(主动集方法)和IPOPT(内点方法)的组合可以解决很大一部分基准问题。下载zip文件包含许多示例问题。您可能最想开始的是Hock Schittkowski#71问题。这是最简单的示例,并演示了如何解决约束优化问题。
有一个浏览器界面和一个Python / MATLAB的API。Python的API是一个脚本(apm.py),可从apmonitor.com主页下载。将脚本加载到Python代码后,就可以解决以下问题:
- 非线性方程
- 混合整数非线性规划
- 微分和代数方程
- 最小二乘模型拟合
- 移动视界估计
- 非线性模型预测控制
- 等等
对于新用户,APM Python软件具有一个Google网上论坛,用户可以在其中发布问题。有一些网络研讨会展示了运筹学和工程学中的优化问题。
下面是一个优化问题的示例(hs71.apm)。
Model
Variables
x[1] = 1, >=1, <=5
x[2] = 5, >=1, <=5
x[3] = 5, >=1, <=5
x[4] = 1, >=1, <=5
End Variables
Equations
x[1] * x[2] * x[3] * x[4] > 25
x[1]^2 + x[2]^2 + x[3]^2 + x[4]^2 = 40
minimize x[1] * x[4] * (x[1]+x[2]+x[3]) + x[3]
End Equations
End Model
优化问题通过以下Python脚本解决:
from APMonitor.apm import *
server = 'http://byu.apmonitor.com'
# Application name
app = 'eqn'
# Clear previous application
apm(server,app,'clear all')
# Load model file
apm_load(server,app,'hs71.apm')
# Option to select solver (1=APOPT, 2=BPOPT, 3=IPOPT)
apm_option(server,app,'nlc.solver',3)
# Solve on APM server
solver_output = apm(server,app,'solve')
# Display solver output
print(solver_output)
# Retrieve results
results = apm_sol(server,app)
# Display results
print('--- Results of the Optimization Problem ---')
print(results)
# Display Results in Web Viewer
url = apm_var(server,app)
print("Opened Web Viewer: " + url)
APM Python是用于优化的免费Web服务。优化问题在远程服务器上解决,结果返回到本地Python脚本。还可以下载APMonitor本地服务器,因此不需要Internet连接(下载服务器)。我们最近添加了对MATLAB和Python的并行处理支持。Python模块与Python 2.7或Python 3+兼容。