首页>最新更新

最新更新

 

在Google Colab,Kaggle和类似平台中使用AMPL

我们的模型实验室上有一套Jupyter笔记本。

您可以使用我们的模板 (https://colab.ampl.com/en/latest/tag-template.html) 作为起点。我们的云许可证(包括 AMPL CE 许可证)适用于所有云平台。

快照功能(保存和恢复 AMPL 会话)

在您的 AMPL 捆绑包中,您应该找到x-ampl,启用了实验功能的 AMPL 开发版本。其中一个功能是快照命令,它允许以这样一种方式保存 AMPL 会话,以便您可以使用它恢复 AMPL 的状态。

将其与 amplpy 一起使用的示例

您需要至少使用 amplpy 0.8.0(您可以使用python -m pip install amplpy==0.8.0来安装它)。使用此版本的 amplpy,可以将一个额外的参数传递给环境,该参数允许指定可执行文件名称,如下所示:

ampl = AMPL(Environment('', 'x-ampl'))

然后,您可以使用AMPL.get_output 字符串形式检索新命令“snapshot;”的输出。返回的字符串是 AMPL 状态(模型声明、数据、加载的解、选项等)的紧凑表示形式。

snapshot = ampl.get_output('snapshot;') print(snapshot)

然后可以使用 将此字符串传递给另一个 AMPL 对象。以下示例生成以下输出:AMPL.eval

from amplpy import AMPL, Environment

print('First object:')
ampl = AMPL(Environment('', 'x-ampl'))
ampl.read('diet.mod')
ampl.read_data('diet.dat')
ampl.option['solver'] = 'gurobi'
ampl.solve()

print('Second object:')
ampl2 = AMPL(Environment('', 'x-ampl'))
snapshot = ampl.get_output('snapshot;')
print(snapshot, file=open('snapshot.run', 'w'))
ampl2.eval(snapshot)
ampl2.display('Buy')

print('Third object:')
ampl3 = AMPL(Environment('', 'x-ampl'))
ampl3.eval(ampl2.get_output('snapshot;'))
ampl3.display('_VARS;')
ampl3.eval('option solver;')

 

First object:
Gurobi 9.1.2: optimal solution; objective 88.2
1 simplex iterations
Second object:
Buy [*] :=
BEEF 0
CHK 0
FISH 0
HAM 0
MCH 46.6667
MTL 0
SPG 0
TUR 0
;

Third object:
set _VARS := Buy;

option solver gurobi;

有一件事可能也很有用:在示例中,有一行将快照写入名为 的文件。此文件可以加载到 AMPL 中(例如,用于调试),如下所示:print(snapshot, file=open('snapshot.run', 'w'))snapshot.run

$ ampl
ampl: include "snapshot.run";
ampl: display Buy;
Buy [*] :=
BEEF 0
CHK 0
FISH 0
HAM 0
MCH 46.6667
MTL 0
SPG 0
TUR 0
;

快照功能尚未完成,仍在完善中。如果您遇到任何问题,请告诉我们。

增强的求解器驱动程序:gurobi, copt, highs

我们已经发布了gurobi,增强的 AMPL-Gurobi 接口,copt,一个与 Cardinal Optimizer 的接口, 和highs,一个与 HiGHS 的接口。 它们包含在 AMPL 分发包中。

驱动程序具有以下功能:

  • 完全支持逻辑表达式和约束,如逻辑和约束编程扩展的 AMPL 页面中所述。
  • 超越线性和二次的代数表达式。
  • 在驱动程序中的转换与本机求解器支持之间进行选择。

新的 AMPL 求解器接口库

我们正在推出一个新的 AMPL 求解器接口库,该库显著扩展了可和常见求解器一起使用的模型表达式的范围。最初,新库用于实现 AMPL 与两个值得注意的新求解器(COPT 和 HiGHS)的接口,并提供大大增强了对Gurobi广义约束的支持。其他求解器的扩展将很快发布。

新的求解器界面

建模语言旨在让您描述给计算机的优化模型与您描述给人的方式大致相同。新扩展的“MP”接口使AMPL更接近这一目标,通过允许扩展使用各种方便 目标和约束中的表达式。值得注意的例子包括:

  • 条件运算符: ;, ,if-then-else==><==<==>
  • 逻辑运算符: , , ;,orandnotexistsforall
  • 分段线性函数: ;,absminmax; <<breakpoints;slopes>>
  • 计数运算符: ;, ,countatmostatleastexactly; numberof
  • 比较运算符: , ,><!=; alldiff

这些运算符可以应用于 AMPL 表达式的一般形式,并且 因此可以在目标和约束规范中一起使用。这新接口还有助于求解器接受非线性运算符 (*,/,^) 更广泛的各种情况。

GitHub 上的公共 MP 库存储库链接到建模指南和源代码的文档。另请参阅我们在今年夏天的欧洲和ICCOPT会议上关于新界面的演示文稿中的幻灯片,或参加10月15-19日在INFORMS年会上的最新演讲。

新的求解器

使用 MP 接口库的第一个实现现在可通过 AMPL 门户在我们的常规发行版中找到。

全新的基于 MP 的界面极大地扩展了 AMPL 可与 Gurobi 求解器一起使用的表达式的种类。新的实现使用求解器的本机“通用化” 约束“,但可以切换为使用替代 MP 中内置的转换。常见的单变量非线性函数(exp,log;sin,cos,tan)也支持使用Gurobi的本机分段线性近似工具。

两个相对较新的线性/二次 MIP 求解器——COPT 和 HiGHS——现仅通过 MP 接口已也被 AMPL 支持。两者都在积极开发并出现在最近的基准列表中。COPT,Cardinal Operations的产品,已加入我们分发的商业求解器阵容。HiGHS是一个免费的开源求解器,它是由一个爱丁堡大学的项目演变而来。它们在 AMPL分发中显示为“copt”和“highs” 。

目前支持的 MIP 求解器(如 Xpress 和 CPLEX)也计划开发具有新界面的版本。此外,我们将很快分发带有 MP 接口的 MOSEK 求解器。

将 NEOS 中的远程求解器与 gokestrel 结合使用

为了简化比较和测试求解器的工作,我们在威斯康星大学麦迪逊分校威斯康星发现研究所的主持下,与 NEOS 服务器项目合作在线提供了 AMPL 和求解器资源。

借助我们新的 Kestrel 驱动程序 gokestrel,您无需指定安装在计算机或本地网络上的求解器,而是调用 Kestrel,这是一个“客户端”程序,可将问题发送到在 NEOS 服务器的一台远程计算机上运行的求解器。来自 NEOS 服务器的结果最终通过 Kestrel 返回给 AMPL,您可以在其中以通常的方式在本地查看和操作它们。

重要选项:

email:您的电子邮件地址(NEOS 需要)。

kestrel_options:允许您指定要使用的求解器

例如,下面介绍了如何使用 CPLEX 作为远程求解器从本地 AMPL 会话调用 Kestrel:

ampl: model diet.mod;
ampl: data diet.dat;
ampl: option solver kestrel;
ampl: option email "***@***.***";
ampl: option kestrel_options "solver=cplex";
ampl: option cplex_options "display=2";
ampl: solve;
Connecting to: neos-server.org:3333
Job XXXX submitted to NEOS, password='xxxx'
Check the following URL for progress report:
https://neos-server.org/neos/cgi-bin/nph-neos-solver.cgi?admin=results&jobnumber=XXXX&pass=xxxx
Job XXXX dispatched
password: xxxx
---------- Begin Solver Output -----------
Condor submit: 'neos.submit'
Condor submit: 'watchdog.submit'
Job submitted to NEOS HTCondor pool.
CPLEX 20.1.0.0: optimal solution; objective 88.2
1 dual simplex iterations (0 in phase I)

 

 

 

 


 

在线留言

尊敬的客户朋友,如您有任何意见建议,请通过下表反馈给我们,我们会尽快与您联系。

 

 

联系我们

 

微信公众号

咨询微信

企业店铺

400-621-1085

(节假日期间办公室座机如无人接听,请选择其他联系方式,感谢理解!祝您节日快乐!)

 

联系我们 快速链接 相关产品 上海卡贝信息技术有限公司

©2026  上海卡贝信息技术有限公司

产品中心

下载中心

站点地图

隐私政策

 

销售QQ咨询

产品QQ咨询

淘宝店铺

 

综述

下载试用

 

 

GAMS

LINGO

What'sBest!

SmarPLS

Stata

IBM SPSS Statistics

Berkeley Madonna

iThink

Stella Architect

IBM SPSS Modeler

DecisionTools Suite

NeuralTools

Frontier Analyst

Vensim

RISKOptimizer

PrecisionTree

LINDO API

@RISK

BayesiaLab

Oracle Crystal Ball

GEMPACK

GTAP Database

TreeAge