【问题标题】:Which characteristics from commercial Algebraic Modeling Languages are still missing from open source ones?开源语言中仍然缺少商业代数建模语言的哪些特征?
【发布时间】:2017-06-22 02:18:36
【问题描述】:

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

【问题讨论】:

    标签: ampl gams-math pyomo julia-jump operations-research


    【解决方案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。

    【讨论】:

    • JuMP 没有声明性模型的概念,这不是因为 Julia 的任何限制(它提供了比 Python 更大的语法灵活性),而是因为我们的设计决定保留了 JuMP 的内部表示问题尽可能接近求解器的内部表示。这使我们能够在循环中对模型进行有效的内存修改,例如 AMPL 不支持的模型。无论哪种方式,肯定都有取舍。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 2011-12-17
    • 2011-02-19
    • 2019-01-05
    相关资源
    最近更新 更多