我正在为MathProg中看似简单的模型而苦苦挣扎。该模型如下:
set W;
set V;
param b {W, V} binary;
param p;
var w {j in W} <= 0, >= 1;
minimize obj: 0;
subject to within_radius_of {i in V}:
sum {j in W} b[i,j] * w[j] >= 1;
subject to p_limit:
sum {j in W} w[j] <= p;
end;
当我运行它时,它会给我错误feasibility.glp:11: b[v1,w1] out of domain
。我不知道出了什么问题。对我来说更奇怪的是,如果我将相关行更改为b[j,i]
,它会一直给出完全相同的错误(不是我预期的b[w1,v1]
)。
我仔细检查了AMPL Diet Example,尽管我在模型的相关部分没有看到任何差异,但它仍然不起作用。有什么问题?
答案 0 :(得分:0)
参数b
声明为binary
,因此它只能取值0或1.您尚未提供数据文件,但错误消息表明b
的数据超出域名(不是0或1),例如:
data;
set W := w1;
set V := v1;
param b := w1 v1 0.5;
在这种情况下,AMPL会提供更详细的错误消息:
error processing param b['w1','v1']:
failed check: param b['w1','v1'] = 0.5
is not binary (0 or 1);
在这种情况下索引顺序无关紧要的原因是在实际实例化模型之前完全检查b
的数据。因此,w1
和v1
似乎可以在数据文件中交换。