sets:
m/1,2,3,4/: s,y,v ;
n/1,2,3,4,5/: p,d ;
w/1,2,3,4,5/: ;
u(m,n,w): x ;
q(m,w): c,l,d_m ;
endsets
data:
s= 6,5,4,3 ;
v= 6,4,3,2 ;
p= 30,20,15,12,6 ;
d= 6,5,4,3,2 ;
enddata
min = lmax;
@for(n(j):@sum(q(i,k):x(i,j,k))=1);
@for(q(i,k):@sum(n(j):x(i,j,k))<=1);
@for(q(i,k):c(i,k)>=c(i,k-1)+@sum(n(j):x(i,j,k)*p(j)/v(i)));
@for(q(i,k):d_m(i,k)=@sum(n(j):x(i,j,k)*d(j)));
@for(q(i,k):l(i,k)=c(i,k)-d_m(i,k));
@for(q(i,k):y(i)=@sum(n(j):x(i,j,k)));
@sum(m(i):y(i)*s(i))<=13;
@for(q(i,k):lmax >= l(i,k));
@bin(x(i,j,k));
@bin(y(i));
错误出现在@for(q(i,k):c(i,k)>=c(i,k-1)+@sum(n(j):x(i,j,k)*p(j)/v(i)));
参考GPT和自己的思路:
根据你提供的信息,问题似乎出在计算c(i,k)的部分,而具体的错误提示是subscript out of range attribute,这可能是因为在计算中使用了数组的索引超出了其定义范围。
我建议你检查一下相关的数组的定义和使用,确保没有超出其索引范围。另外,你也可以尝试增加一些调试信息,以更精确定位问题所在的具体位置。