2017-02-04 6 views

答えて

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です。

+1

JuMPにはJuliaの制限(Pythonよりもはるかに柔軟性がある)のためではなく、JuMPの内部表現をソルバーの内部表現が可能です。これにより、AMPLがサポートしていないループなどでモデルを効率的にメモリ内で修正することができます。間違いなくトレードオフがあります。 – mlubin

関連する問題