2
GAMSやAMPLのような主な商用代数モデリング言語(AML)の特徴は、PyomoやJuMPのようなオープンソースのAMLにはまだありません(既存のモデルと利用可能なモデルは明らかです)。市販の代数モデリング言語の特徴は、まだオープンソースのものにはないのですか?
GAMSやAMPLのような主な商用代数モデリング言語(AML)の特徴は、PyomoやJuMPのようなオープンソースのAMLにはまだありません(既存のモデルと利用可能なモデルは明らかです)。市販の代数モデリング言語の特徴は、まだオープンソースのものにはないのですか?
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がサポートしていないループなどでモデルを効率的にメモリ内で修正することができます。間違いなくトレードオフがあります。 – mlubin