我有这个小代码:
param n, integer, > 0; # number of clients
param m, integer, > 0; # number of facilities
param g, integer, > 0;
set I := 1..n;
set J := 1..m;
set G := 1..g;
param d{i in I, j in J};/* distance for client i to factory j*/
param w{i in I, j in J};/* distance for client i to factory j*/
param l{j in J}; # distance from factory j to factory 1
param F{j in J}; # cost of open a factory in J
param s{i in I, g in G};
问题出现在s上,它总是说drdrd.mod:13:文字集中的语法错误,如果我在G中为j改变g中的g,一切都好。不可能有3个不同的集合吗?
另一个我无法解决的问题,如果我把I而不是i,2 in I(因为我想考虑前两个数字),它也说同样的错误信息。
感谢您的时间。
答案 0 :(得分:0)
g
被定义为
param g, integer, > 0;
因此您无法在
中将其用作索引名称param s{i in I, g in G};
要解决此问题,请重命名索引(或参数):
param s{i in I, gg in G};