AMPL 中的矩阵约束

Constraint in AMPL with matrix

如何在 AMPL 中对矩阵进行约束,使下一个位置必须小于当前位置?我需要类似 x[i,j]<=x[i,j+1] 的东西,但我不知道如何将它放入 AMPL 程序中。我已经尝试过这个:subject to prioridade{i in SEM}: {j in PROD-1} d[i,j]<=d[i,j+1],求解器返回给我这个:

    syntax error
context:  {j in  >>> PROD- <<< 1} d[i,j]<=d[i,j+1]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Checking ampl.mod for gurobi_options...
Checking ampl.com for gurobi_options...
Executing AMPL.
processing data.
processing commands.
Executing on prod-exec-1.neos-server.org
 Error (2) in /opt/ampl/ampl -R amplin```

您的约束声明语法是无效的 AMPL。更具体地说,{j in PROD-1} 部分不合适,因此处理器不知道它是什么。

假设 PROD 是一个参数,我猜你想要这样的东西:

subject to prioridade{i in SEM, j in 1..PROD-1}: d[i,j] <= d[i,j+1];

如果PROD是一个集合,那将不起作用,因为PROD-1没有意义。下次你 post 提问时,确保你说出你的程序的模型实体是什么。更好的是,分享整个代码,或者至少分享它的相关部分。

我看得出你是 AMPL 的新手,所以我建议阅读一些基本的 AMPL 介绍,例如 this. Also, since you are using NEOS, you may want to take a look at the PIFOP IDE,你可以在其中直接从浏览器使用 NEOS。

免责声明:我是该工具的开发者。