在将我的 AMPL 公式提交到 NEOS 服务器时,为什么下面使用“setof”运算符的代码行在模型文件中可以正常工作,但在数据文件中却不行?
set X := setof {indices in Y} subsetofindices
NEOS 服务器要求将代码分别分离为 .mod 、 .dat 和脚本文件。我已经看到let
X := ...
在脚本文件中使用的引用。这些文件有什么区别,放在哪里?
示例 使用 AMPL 的 steelT.x 文件,这第一块 2 个文件有效
# steelT.mod
set DUMMYPROD;
set PROD := setof {i in DUMMYPROD} i; # products
# steelT.dat
data;
set DUMMYPROD := bands coils;
而以下不起作用:
# steelT.mod
set DUMMYPROD;
set PROD; # products
# steelT.dat
data;
set DUMMYPROD := bands coils;
set PROD := setof {i in DUMMYPROD} i;
它返回错误
预期的 ; ( : 或符号上下文: set PROD := setof >>> { <<< i in DUMMYPROD} i;
更广泛的问题
一般来说,模型文件、数据文件和脚本文件属于什么?(还有 forparam
和其他定义)处理这些的顺序是什么?当我阅读 AMPL 指南时,我可能会遗漏一些基础知识,但我没有找到这个(我从未参加过优化课程)。
关于 NEOS 服务器 “新” AMPL 中的 Constraint 编程逻辑的额外问题包括整个约束的条件和逻辑运算符。我不认为这些在 NEOS 中可用。还是他们(因为他们不为我工作)?有简单的解决方法吗?
谢谢!