AMPL技术文档
介绍
AMPL(A Mathematical Programming Language)是代数建模语言,专门用来描述、求解数学优化(数学规划)问题,读音 “ample”,由贝尔实验室 Robert Fourer、David Gay、Brian Kernighan 在 1985 年开发,现在由 AMPL Optimization 公司维护。
特点
- 语法贴近数学公式
可以直接把数学规划写成代码,可读性强,不用手动写复杂的矩阵。模型文件后缀.mod;数据单独放在.dat,实现模型与数据分离,更换场景只改数据,不用重写目标函数与约束。 - 求解器无关
AMPL 本身不做求解计算,它只负责把模型翻译成标准格式,交给外部求解器。支持几乎所有主流求解器:- 商业:
- Gurobi
- CPLEX
- MOSEK
- KNITRO
- BARON
- Xpress
- 开源:
- HIGHS
- CBC
- IPOPT
- MINOS
- SNOPT
同一套模型,切换求解器只需要改一行配置,不用改写模型代码。
- 商业:
- 支持各类优化问题
线性规划 LP、整数规划 MIP、非线性规划 NLP、混合整数非线性 MINLP、全局优化、随机规划等;内置集合、索引、元组,非常适合供应链、调度、能源、生产计划这类大规模索引型优化问题。 - 丰富接口
有amplpyPython API,可以在 Python 里调用 AMPL,对接数据分析流水线;也有 R 接口;VS Code 有 AMPL 插件;学术用途可申请免费学术许可,社区版可以搭配开源求解器免费使用。
项目结构
.mod:模型定义.dat:数据.run:运行脚本
使用
全局安装AMPL本体
用vscode运行
- 从官网下载AMPL本体。
- 申请社区许可或学术许可。
- 安装AMPL Optimization Inc. 出品的vscode官方插件。
- 配置插件里 AMPL 可执行文件路径。
- 在vscode中编写并运行。
用AMPL CLI运行
1 | # 进入AMPL命令行 |
1 | ampl: model model.mod; |
或直接执行ampl model.mod进行求解。
用python安装并执行
1 | pip install amplpy |
[!NOTE]
amplpy会自动拉去AMPL社区版CE许可,永久免费,无约束,但需要联网使用。
创建model.mod,data.dat,run.py文件,在run.py中写入:
1 | from amplpy import AMPL |
model.mod示例:
1 | var x1; |
写好model.mod和data.dat之后就可以运行run.py进行求解了。
[!IMPORTANT]
model.mod中的solve;和run.py中的ampl.solve()会进行重复求解,根据需要保留一处即可。如果需要进行复杂的循环求解,建议在run.py中进行。
在python中也可直接编写并运行AMPL:
1
2
3
4
5
6
7
8
9 from amplpy import AMPL
ampl = AMPL()
ampl.eval("""
var x >=0;
minimize obj: x;
subject to c: x >= 10;
solve;
display x;
""")
在线运行
使用Google Colab在线运行。
- 标题: AMPL技术文档
- 作者: 简约无双
- 创建于 : 2026-09-15 00:00:00
- 更新于 : 2026-09-15 22:55:54
- 链接: https://blog.jianyuewushuang.top/2026/09/15/AMPL技术文档/
- 版权声明: 本文章采用 CC BY-NC-SA 4.0 进行许可。
评论