我正在为一个看似简单的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,尽管我发现我的模型的相关部分没有什么不同,但它仍然无法工作。怎么啦?
发布于 2012-07-05 08:22:16
参数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似乎可以在数据文件中互换。
https://stackoverflow.com/questions/11332836
复制相似问题