2

主要的商业代数建模语言 (AML),如 GAMS 或 AMPL,有哪些开源 AML,如 Pyomo 或 JuMP,还没有(显然除了用户群和已建立模型的可用性)?

4

1 回答 1

1

用通用语言编写的建模库通常缺乏的 AMPL 的一个特征是声明性模型和数据之间的明确分离。一些系统(例如 Pyomo)试图以不同程度的成功来模仿它,但通常受到它们所用语言的限制。

例如,AMPL 目标

minimize OBJ: sum{j in J} c[j] * y[j];

可以用 Pyomo 写成

def obj_expression(model):
    return summation(model.c, model.y)

model.OBJ = Objective(rule=obj_expression)

基于 AMPL 子集的 GNU MathProg 是一种没有这种限制的开源 AML。

于 2017-02-05T20:00:05.163 回答