数学建模社区-数学中国
标题:
这个程序不加速度限制是能用的,但是不符合条件,加上之后就不可解了,
[打印本页]
作者:
相思枕畔
时间:
2013-1-19 15:50
标题:
这个程序不加速度限制是能用的,但是不符合条件,加上之后就不可解了,
MODEL:
title economic pipe;
sets:
tubulation/1..9/
,Q;
caliber/1..8/:C,D;
jiedian/1..9/:EK,SK;
LINK(tubulation,caliber):X,Z,V;
LINKS(jiedian,tubulation):Y;
HIGH/1/:H;
ENDSETS
DATA:
!各段管长;
L=700,700,700,500,500,500,500,500,500;
!各段流量;
Q=0.135,0.060,0.015,0.015,0.045,0.015,0.015,0.015,0.015;
!节点服务水压标高;
EK=47,46,44,46,44,43,45,46,43;
!水源到节点的管段数;
!A=1,2,3,2,2,3,3,3,3;
!节点地面高程;
SK=35,34,32,34,32,31,33,34,31;
!标准管径单价;
C=25.0 30.8 38.7 42.0 55.2 64.0 83.2 103.2;
!标准管径;
D=0.1 0.15 0.20 0.25 0.30 0.35 0.4 0.5;
Y=1 0 0 0 0 0 0 0 0
1 1 0 0 0 0 0 0 0
1 1 1 0 0 0 0 0 0
1 0 0 1 0 0 0 0 0
1 0 0 0 1 0 0 0 0
1 0 0 0 1 1 0 0 0
1 0 0 0 1 0 1 0 0
1 1 0 0 0 0 0 1 0
1 1 0 0 0 0 0 0 1;
Z=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 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 1 1
1 1 1 1 1 1 1 1;
ENDDATA
!速度要求;
@for(link(i,j)
(4*q(i)/(3.14*d(j)^2))*z(i,j))=v(i,j));
@for(link(i,j):v(i,j)>0.6);
@for(link(i,j):v(i,j)<3.0);
!OBJECTIVE FUNCTION(目标函数);
[OBJ]MIN=@SUM(LINK(I,J):X(I,J)*Z(I,J)*C(J))*((0.08*(1+0.08)^20)/((1+0.08)^20-1)+5/100)+86*10^3*0.3*0.2*H(1)*0.135/0.7;
!pipe range CONSTRAINTE(管长约束);
@FOR(tubulation(I):[RANGE_CON]@SUM(caliber(J):X(I,J)*Z(I,J))=L(I));
!Stress constraint(压力约束);
@FOR(jiedian(K)
sum(tubulation(I):y(K,I)*@SUM(caliber(J)|0.6#le#((4*q(i)/(3.14*d(j)^2))*z(i,j))#le#3.0
1.942*10^-3*Q(I)^2/D(J)^5.342)*X(I,J)*Z(I,J)))<30.2-EK(K)-0.2+H(1));
!Stress constraint(管道承压力约束);
@FOR(jiedian(K)
sum(tubulation(I):y(K,I)*@SUM(caliber(J)|0.6#le#((4*q(i)/(3.14*d(j)^2))*z(i,j))#le#3.0
1.942*10^-3*Q(I)^2/D(J)^5.342)*X(I,J)*Z(I,J)))>30.2-SK(K)-102*0.4-0.2+H(1));
!非负假定;
@FOR(LINK(I,J):X(I,J)>=0);
!泵出口水压要求;
H(1)<102*0.4+0.2;
作者:
相思枕畔
时间:
2013-1-19 16:28
跪求大神解答啊,主要就是限制速度那一块,有问题,应该怎么淘汰d呢??
欢迎光临 数学建模社区-数学中国 (http://www.madio.net/)
Powered by Discuz! X2.5