表示刚刚入门,实在很多地方不懂。还请大牛指教!
可能出错的地方:用了一个分段函数,但是具体的不知道怎么写
系统报错截图:
model:
sets:
shop/1..20/:x,y,d1,d2,d3;
store/1..31/:sx,sy;
product/A,B,C/:po;
n/1..31/:a;
month/1..12/:m;
linksA(month,store):storageA;
linksB(month,store):storageB;
linksC(month,store):storageC;
linkA(month,shop):requireA;
linkB(month,shop):requireB;
linkC(month,shop):requireC;
endsets
data:
requireA=@OLE('F:\q\A','requireA');
requireB=@OLE('F:\q\B','requireB');
requireA=@OLE('F:\q\C','requireC');
enddata
min=@sum(shop(i):n(i)*12500)+@sum(shop(i):@sum(store(j):((x(i)-sx(j))^2+(y(i)-sy(j))^2)^(0.5)))+@sum(month(i):@sum(store(j):@if((storageA(i,j)+storageB(i,j)+storageC(i,j))#lt#1000,5000,@if((storageA(i,j)+storageB(i,j)+storageC(i,j))#lt#3000,10000,@if((storageA(i,j)+storageB(i,j)+storageC(i,j))#lt#5000,18000,18000+(@floor(((storageA(i,j)+storageB(i,j)+storageC(i,j))-5000)/1000)+1)*2500)));
@for(n(i):@bin(a));
@for(month(q):@sum(store(j):storageA(q,j)*n(j))>=@sum(shop(i):requireA(q,i)));
@for(month(q):@sum(store(j):storageB(q,j)*n(j))>=@sum(shop(i):requireB(q,i)));
@for(month(q):@sum(store(j):storageC(q,j)*n(j))>=@sum(shop(i):requireC(q,i)));
@for(shop(i):@for(store(j):(((x(i)-sx(j))^2+(y(i)-sy(j))^2)^(0.5))<=1000));
@for(store(i):@for(store(j):(((sx(i)-sx(j))^2+(sy(i)-sy(j)^2)^(0.5))<=1000));