lingo高手请进『此程序运行十几个小时仍旧没有结果』
model:sets:
t/T1 T1 T1 T1 T1 T1 T1 T1 T1 T1/:period;
factory/f1..f3/;
product/m1..m10/:save,time,volume,smoney,sneed,lacktime,lacknum,timeneed,tran;
warehouse/w1..w5/:capacity;
store/s1..s8/;
n(factory,product):output,price;
m(factory,warehouse):money1;
p(warehouse,store):money2;
q(store,product):need;
r(warehouse,product);
plan1(factory,product,warehouse):arrange1;
plan2(warehouse,product,store):arrange2;
endsets
data:
output=2000 0 3000 1000 3200 1000 0 2000 1500 1500
2000 1300 0 1000 0 1500 2000 1500 0 1200
0 2500 800 1500 0 1000 1400 0 2500 1500;
price=100 0 210 250 290 300 0 430 450 500
90 180 0 240 0 305 380 435 0 490
0 170 210 245 0 285 400 0 450 480;
money1=100000 10 14 17 13
10 8 100000 9 16
15 16 9 15 100000;
capacity=
800 600 1000 700 800;
smoney=40 70 90 100 120 120 150 160 180 200;
volume=1.5 1.0 1.5 2.0 1.5 0.5 1.5 2.0 1.0 0.5;
money2=
3 2 3 6 3 1 4 5
100000 3 3 100000 5 2 5 3
5 100000 2 5 100000 5 100000 4
4 1 4 4 2 100000 2 100000
2 2 5 3 5 2 5 2;
need=
60 300 800 100 200 600 400 80 150 600
90 800 500 1200 500 400 200 100 800 500
150 500 400 800 600 0 800 800 400 0
300 400 200 400 150 800 500 150 1500 400
400 0 150 100 200 300 0 400 90 800
500 200 1000 0 400 150 1000 1000 200 400
800 1200 90 150 90 1000 90 500 100 1000
1500 200 500 500 1000 90 150 200 500 200;
sneed=
3800 3600 3640 3250 3140 3340 3140 3230 3740 3900;
enddata
min=@sum(n(i,j):@sum(warehouse(k):arrange1(i,j,k))*price(i,j))+@sum(m(i,j):money1(i,j)*@sum(product(k):arrange1(i,k,j)))+@sum(p(i,j):money2(i,j)*@sum(product(k):arrange2(i,k,j)))+0.5*@sum(product:save*time*smoney)+@sum(product:2*lacknum*smoney*lacktime)+10000;
!约束条件;
@sum(n(i,j):@sum(warehouse(k):arrange1(i,j,k))*price(i,j))+@sum(m(i,j):money1(i,j)*@sum(product(k):arrange1(i,k,j)))+@sum(p(i,j):money2(i,j)*@sum(product(k):arrange2(i,k,j)))+0.5*@sum(product:save*time*smoney)+@sum(product:2*lacknum*smoney*lacktime)+10000<=1000000; !资金约束;
@for(n(i,j):@sum(warehouse(k):arrange1(i,j,k))<=output(i,j)); !订量小于产量 ;
@for(warehouse(k):@sum(product(j):@sum(factory(i):arrange1(i,j,k))*volume(j))<=capacity(k)); !进货量小于仓库的容量;
@for(r(i,j):@sum(factory(k):arrange1(k,j,i))>=@sum(store(k):arrange2(i,j,k))); !运往商店的商品数量小于储存量;
!相关的计算部分;
@for(product:tran=@if(save-timeneed #ge# 0,timeneed,save)); !仓库往商店的运送量;
@for(product:lacknum=@if(save-timeneed #ge# 0,0,timeneed-save)); !缺货量计算;
@for(product(i):time(i)=@if(save(i)-timeneed(i) #ge# 0,period,save(i)*period/timeneed(i))); !存储时间计算;
@for(product(i):lacktime(i)=@if((save(i)-timeneed(i)) #ge# 0,0,period-save(i)*period/timeneed(i))); !缺货时间计算;
@for(product(j):save(j)=@sum(factory(i):@sum(warehouse(k):arrange1(i,j,k)))); !各种商品的存货量;
@for(product(j):tran(j)=@sum(store(k):@sum(warehouse(i):arrange2(i,j,k)))); !运送货物约束;
@for(product(i):timeneed(i)=@floor(period*sneed(i)/365));
!新加的部分;
@for(t(i)|i #le# 9:period(i)=period(i+1));
@for(t:@bnd(10,period,50));
!整数规划约束;
@for(plan1:@gin(arrange1));
@for(plan2:@gin(arrange2));
@for(t:@gin(period));
@for(product:@gin(time));
end 超出LINGO的搜索能力了.
建议你用启发式搜索算法 给他一个初始值!!!!!!!!!!! 超出LINGO的搜索能力了.
建议你用启发式搜索算法 3# kongfanqing
初值我曾经给过,没用还是算不出来呢 2# SWJTU才子
能不能说的详细一点,我不太明白,谢谢
页:
[1]