下标中的AMPL变量尚未被允许

时间:2018-11-25 00:49:13

标签: ampl

我真的希望有人可以帮忙... 这就是我在.mod文件中拥有的

set I := 1..10;
set J := 1..10;
set K := 1..2;
set W := 1..20;

param v{K, W};
param d{I, J};

var x1, integer;
var y1, integer;
var x2, integer;
var y2, integer;
var assist{W}, binary;

这是代码生成错误:

minimize nome: sum{w in W} (if (assist[w] == 0) then 
                    (if (x1 >= v[1,w]) then 
                        (if (y1 >= v[2,w]) then 
                            (d[x1 - v[1,w],y1 - v[2,w]])....

错误以最后一行为例:

Variables in subscripts are not yet allowed.
context:  (d[x1 - v[1,w],y1 -  >>> v[2,w]] <<< )

这是约束之一(其他都一样):

subject to rangex1:
x1 > 0 && x1 <= 10;

1 个答案:

答案 0 :(得分:1)

如错误消息所述,您不能在AMPL的下标中使用决策变量。在这种情况下,x1和y1是决策变量,因此不允许d[x1 - v[1,w],y1 - v[2,w]]。您需要以避免出现此问题的方式来重新制定该问题。