wy82 发表于 2008-6-10 21:12

lingo求解0-1整数规划

<p>说明:t为支渠灌水延续时间,i为轮灌分组每组支渠数,j为出水口数,ai为轮期<br/>model:<br/> sets:<br/>  wh/1..3/:ai;<br/>  vd/1..8/:dj;<br/>  links(wh,vd):t,x;<br/> endsets</p><p> data:<br/>  ai=6,6,6;<br/>  dj=1,1,1,1,1,1,1,1;<br/>  t=0.8,2.13,2.4,1.72,2.05,2.43,2.05,2.5<br/>    0.8,2.13,2.4,1.72,2.05,2.43,2.05,2.5<br/>    0.8,2.13,2.4,1.72,2.05,2.43,2.05,2.5;<br/> enddata<br/>
                <br/>
                <a href="mailto:min=@abs(@sum(vd(j):t(1,j)*x(1,j))-@sum(vd(j):t(2,j)*x(2,j">min=@abs(@sum(vd(j):t(1,j)*x(1,j))-@sum(vd(j):t(2,j)*x(2,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(1,j)*x(1,j))-@sum(vd(j):t(3,j)*x(3,j">+@abs(@sum(vd(j):t(1,j)*x(1,j))-@sum(vd(j):t(3,j)*x(3,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(2,j)*x(2,j))-@sum(vd(j):t(3,j)*x(3,j">+@abs(@sum(vd(j):t(2,j)*x(2,j))-@sum(vd(j):t(3,j)*x(3,j</a>)));<br/>!目标函数:各轮灌组的灌水时间之差的绝对值之和最小,即灌水时间尽量均匀<br/> @for(wh(i):@sum(vd(j):t(i,j)*x(i,j))&lt;=ai);<br/>!轮期约束:每个轮灌组的灌水时间小于轮期<br/> @for(vd(j):@sum(wh(i):x(i,j))=dj);<br/>!灌水一次性约束:每个灌水口在轮期内只开一次<br/> @for(links:@bin(x));<br/>!0-1约束</p><p>end<br/>请教:为什么算8条渠时可以在几秒中就能得到计算结果,并且和用EXCEL的优化结果相同;而31条支渠曾经计算过十几个小时也没出结果,计算还不断进行,而且在计算时solver status中extend solver status中的best和obj bound的值一直差别很大,其中best的值已稳定在9,而obj bound却很小,甚至小11个数量级。不知道是程序问题,还是lingo本身求解时参数设定的问题?</p>

madio 发表于 2008-6-10 23:03

<p>现在的程序是8个的?我计算了一下很快就有结果了!</p>

wy82 发表于 2008-6-11 18:57

31条支渠0-1整数规划

<p>model:</p><p> sets:<br/>  wh/1..6/:ai;<br/>  vd/1..31/:dj;<br/>  links(wh,vd):t,x;<br/> endsets</p><p> data:<br/>  ai=96,96,96,96,96,96;<br/>  dj=1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1;<br/>  t=10,16,10,13,15,10,10,10,10,10,10,15,13,17,7,7,15,15,15,15,8,15,15,8,8,8,8,8,8,8,8<br/>    10,16,10,13,15,10,10,10,10,10,10,15,13,17,7,7,15,15,15,15,8,15,15,8,8,8,8,8,8,8,8<br/>    10,16,10,13,15,10,10,10,10,10,10,15,13,17,7,7,15,15,15,15,8,15,15,8,8,8,8,8,8,8,8<br/>    10,16,10,13,15,10,10,10,10,10,10,15,13,17,7,7,15,15,15,15,8,15,15,8,8,8,8,8,8,8,8<br/>    10,16,10,13,15,10,10,10,10,10,10,15,13,17,7,7,15,15,15,15,8,15,15,8,8,8,8,8,8,8,8<br/>    10,16,10,13,15,10,10,10,10,10,10,15,13,17,7,7,15,15,15,15,8,15,15,8,8,8,8,8,8,8,8;<br/> enddata<br/>
                <br/>
                <a href="mailto:min=@abs(@sum(vd(j):t(1,j)*x(1,j))-@sum(vd(j):t(2,j)*x(2,j">min=@abs(@sum(vd(j):t(1,j)*x(1,j))-@sum(vd(j):t(2,j)*x(2,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(1,j)*x(1,j))-@sum(vd(j):t(3,j)*x(3,j">+@abs(@sum(vd(j):t(1,j)*x(1,j))-@sum(vd(j):t(3,j)*x(3,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(1,j)*x(1,j))-@sum(vd(j):t(4,j)*x(4,j">+@abs(@sum(vd(j):t(1,j)*x(1,j))-@sum(vd(j):t(4,j)*x(4,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(1,j)*x(1,j))-@sum(vd(j):t(5,j)*x(5,j">+@abs(@sum(vd(j):t(1,j)*x(1,j))-@sum(vd(j):t(5,j)*x(5,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(1,j)*x(1,j))-@sum(vd(j):t(6,j)*x(6,j">+@abs(@sum(vd(j):t(1,j)*x(1,j))-@sum(vd(j):t(6,j)*x(6,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(2,j)*x(2,j))-@sum(vd(j):t(3,j)*x(3,j">+@abs(@sum(vd(j):t(2,j)*x(2,j))-@sum(vd(j):t(3,j)*x(3,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(2,j)*x(2,j))-@sum(vd(j):t(4,j)*x(4,j">+@abs(@sum(vd(j):t(2,j)*x(2,j))-@sum(vd(j):t(4,j)*x(4,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(2,j)*x(2,j))-@sum(vd(j):t(5,j)*x(5,j">+@abs(@sum(vd(j):t(2,j)*x(2,j))-@sum(vd(j):t(5,j)*x(5,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(2,j)*x(2,j))-@sum(vd(j):t(6,j)*x(6,j">+@abs(@sum(vd(j):t(2,j)*x(2,j))-@sum(vd(j):t(6,j)*x(6,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(3,j)*x(3,j))-@sum(vd(j):t(4,j)*x(4,j">+@abs(@sum(vd(j):t(3,j)*x(3,j))-@sum(vd(j):t(4,j)*x(4,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(3,j)*x(3,j))-@sum(vd(j):t(5,j)*x(5,j">+@abs(@sum(vd(j):t(3,j)*x(3,j))-@sum(vd(j):t(5,j)*x(5,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(3,j)*x(3,j))-@sum(vd(j):t(6,j)*x(6,j">+@abs(@sum(vd(j):t(3,j)*x(3,j))-@sum(vd(j):t(6,j)*x(6,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(4,j)*x(4,j))-@sum(vd(j):t(5,j)*x(5,j">+@abs(@sum(vd(j):t(4,j)*x(4,j))-@sum(vd(j):t(5,j)*x(5,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(4,j)*x(4,j))-@sum(vd(j):t(6,j)*x(6,j">+@abs(@sum(vd(j):t(4,j)*x(4,j))-@sum(vd(j):t(6,j)*x(6,j</a>)))<br/>
                <a href="mailto:+@abs(@sum(vd(j):t(5,j)*x(5,j))-@sum(vd(j):t(6,j)*x(6,j">+@abs(@sum(vd(j):t(5,j)*x(5,j))-@sum(vd(j):t(6,j)*x(6,j</a>)));<br/> @for(wh(i):@sum(vd(j):t(i,j)*x(i,j))&lt;=ai);<br/> @for(vd(j):@sum(wh(i):x(i,j))=dj);<br/> @for(links:@bin(x));</p><p>end<br/>谢谢啊!麻烦在帮忙看看这个,这是31条渠的!不知道是什么原因</p>

发表于 1970-1-1 08:00

LINMAT 发表于 2009-1-4 21:52

只等的接分

gcj1023 发表于 2010-5-12 14:17

学习了!!!!!!!!!!!!!!

1059974843 发表于 2010-9-5 20:59

学习了..........

微笑、没问题 发表于 2013-8-19 00:05

不懂。。。。。
页: [1]
查看完整版本: lingo求解0-1整数规划