설명
이 예는 다음의 설계에 비선형 프로그래밍을 사용하는 방법을 보여줍니다. 물 분배 시스템. 모델은 다음의 주요 특징을 포착합니다. 인도네시아 도시에 대한 실제 적용입니다.
소형 모델 유형 :DNLP
카테고리 : 슬롯 모델 라이브러리
메인 파일 : water.gms
$title 배수망 설계(WATER,SEQ=68)
$onText
이 예에서는 다음 설계에 비선형 계획법을 사용하는 방법을 보여줍니다.
물 분배 시스템. 모델은 다음의 주요 특징을 포착합니다.
인도네시아의 한 도시에 대한 실제 응용 프로그램입니다.
Brooke, A, Drud, A S 및 Meeraus, A, 모델링 시스템 및 비선형
연구 환경에서의 프로그래밍. Ragavan, R 및 Rohde, S M,
Eds, 컴퓨터공학, Vol. III. ACME, 1985.
Drud, A S 및 Rosenborg, A, 물 분배 네트워크 치수 측정.
석사 논문, 수리통계 및 운영 연구소
1973년 덴마크 기술대학교 연구. (덴마크어)
키워드: 비선형 계획법, 불연속 도함수, 물 분포,
네트워크 최적화, 엔지니어링
$offText
세트
n '노드' / nw '북서 저수지', e '동쪽 저수지'
cc '중심 도시', w '서쪽'
sw '남서쪽', s '남쪽'
se '남동쪽', n '북쪽' /
a(n,n) 'arcs (임의로 지정됨)' / nw.(w,cc,n) , e.(n,cc,s,se)
cc.(w,sw,s,n), s.se, s.sw, sw.w /
rn(n) '저수지' / nw, e /
dn(n) '수요 노드';
dn(n) = 예;
dn(rn) = 아니오;
디스플레이 DN;
별칭(n,np);
테이블 node(n,*) '노드 데이터'
수요 높이 x y 공급 wcost pcost
* m**3/sec m 베이스 m m m**3/sec rp/m**3 rp/m**4
뉴 6.50 1200 3600 2.500 0.20 1.02
전자 3.25 4000 2200 6.000 0.17 1.02
CC 1.212 3.02 2000 2300
w 0.452 5.16 750 2400
남서 0.245 4.20 900 1200
초 0.652 1.50 2000 1000
자체 0.252 0.00 4000 900
n 0.456 6.30 3700 3500;
매개변수 dist(n,n) '노드 간 거리(m)';
dist(a(n,np)) = sqrt(sqr(노드(n,"x") - 노드(np,"x")) + sqr(노드(n,"y") - 노드(np,"y")));
디스플레이 거리;
스칼라
dpow '압력 손실 방정식의 직경에 대한 전력' / 5.33 /
qpow '압력 손실 방정식의 흐름에 대한 전력' / 2.00 /
dmin '파이프의 최소 직경' / 0.15 /
dmax '파이프의 최대 직경' / 2.00 /
hloss '압력 손실 방정식의 상수' / 1.03e-3 /
dprc '투자 비용 방정식의 척도 인자' / 6.90e-2 /
cpow '비용 방정식에서 직경의 힘' / 1.29 /
r '이자율' / 0.10 /
davg '평균 직경(기하 평균)'
rr '공급에 대한 수요의 비율';
davg = sqrt(dmin*dmax);
rr = sum(dn, node(dn,"수요"))/sum(rn, node(rn,"공급"));
변수
q(n,n) '각 호의 흐름 - 서명됨(초당 m**3)'
d(n,n) '각 호의 파이프 직경(m)'
h(n) '각 노드의 압력(m)'
s(n) '저수지 노드에서의 공급(초당 m**3)'
pcost '연간 반복 펌프 비용(밀 rp)'
dcost '파이프에 대한 투자 비용(밀 rp)'
wcost '연간 반복되는 물 비용(밀 rp)'
비용 '총 할인 비용(밀 rp)';
방정식
cont(n) '각 노드에서의 흐름 보존 방정식'
loss(n,n) '각 호의 압력 손실'
peq '펌프 비용 방정식'
deq '투자 비용 방정식'
weq '물 비용 방정식'
obj '목적 함수';
cont(n).. sum(a(np,n), q(a)) - sum(a(n,np), q(a)) + s(n)$rn(n) =e= node(n,"수요");
loss(a(n,np)).. h(n) - h(np) =e= (hloss*dist(a)*abs(q(a))**(qpow-1)*q(a)/d(a)**dpow)$(qpow <> 2)
+ (hloss*dist(a)*abs(q(a)) *q(a)/d(a)**dpow)$(qpow = 2);
peq.. pcost =e= sum(rn, s(rn)*node(rn,"pcost")*(h(rn) - node(rn,"높이")));
deq.. dcost =e= dprc*sum(a, dist(a)*d(a)**cpow);
weq.. wcost =e= sum(rn, s(rn)*node(rn,"wcost"));
obj..cost =e= (pcost + wcost)/r + dcost;
d.lo(a) = dmin;
d.up(a) = dmax;
h.lo(rn) = node(rn,"높이");
h.lo(dn) = node(dn,"높이") + 7.5 + 5.0*node(dn,"수요");
s.lo(rn) = 0;
s.up(rn) = node(rn,"공급");
d.l(a) = davg;
h.l(n) = h.lo(n) + 1.0;
s.l(rn) = node(rn,"공급")*rr;
모델 네트워크 / 모두 /;
비용을 최소화하는 dnlp를 사용하여 네트워크를 해결합니다.
q.l 표시;