Msc. Alexandre Hitoshi Ito Este exemplo ilustra a utilização de uma programação não linear mista inteira. Este problema
Views 86 Downloads 2 File size 790KB
Msc. Alexandre Hitoshi Ito
Este exemplo ilustra a utilização de uma programação não linear mista inteira. Este problema é uma variação da biblioteca de modelos do GAMS para o sistema de distribuição de água. O modelo representa uma aplicação em uma cidade da Indonésia.
Brooke, A, Drud, A S, and Meeraus, A, Modeling Systems and Nonlinear Programming in a Research Environment. In Ragavan, R, and Rohde, S M, Eds, Computers in Engineering, Vol. III. ACME, 1985. Drud, A S, and Rosenborg, A, Dimensioning Water Distribution Networks. Masters thesis, Institute of Mathematical Statistics and Operations Research, Technical University of Denmark, 1973. (in Danish)
Msc. Alexandre Hitoshi Ito
O Código inicia com um título e a frente dele um “$” para indicar função de Título. $Title Design of a Water Distribution Network
(WATERX,SEQ=125)
Posteriormente insere uma descrição sobre o assunto abordado $Ontext This example ....
…. (in Danish) $Offtext
Msc. Alexandre Hitoshi Ito
Com o comando SET ou SETS é declarado o nome do(s) conjunto(s) e os dados que estão dentro do conjunto Set
n
nodes /
a(n,n)
nw
north west reservoir
e
east reservoir
cc
central city
w
west
sw
south west
s
south
se
south east
n
north
/
arcs (arbitrarily directed) /nw.(w,cc,n), e.(n,cc,s,se), cc.(w,sw,s,n), s.se, s.sw, sw.w /
rn(n)
reservoirs /
nw, e
/
dn(n)
demand nodes; dn(n) = yes; dn(rn) = no; display dn;
Msc. Alexandre Hitoshi Ito
Set Set
n n
Set
n
Set
n
a(n,n) a(n,n)
a(n,n) rn(n) rn(n) dn(n) a(n,n) dn(n) rn(n)
dn(n)
n
nodes / nodes /
nw north west reservoir nw north west reservoir e east reservoir e east west reservoir nodes / nw north reservoir cc central city cc central city ew east west reservoir w west cc central city sw south west nodes / nw north west reservoir sw south west ws west south e east s southreservoir sw south se south west east cc central city se south east sn south north / w west n north east / se south sw south west n northdirected) / arcs (arbitrarily s south arcs (arbitrarily directed) /nw.(w,cc,n), e.(n,cc,s,se), cc.(w,sw,s,n), se south east /nw.(w,cc,n), e.(n,cc,s,se), cc.(w,sw,s,n), arcs (arbitrarily directed) s.se, s.sw, sw.w / n north / s.se, s.sw, sw.w / /nw.(w,cc,n), cc.(w,sw,s,n), reservoirs / nw,e.(n,cc,s,se), e / reservoirs / nw, e sw.w / s.se, s.sw, demand nodes; dn(n) = yes;/ dn(rn) = no; display dn; arcs (arbitrarily directed) demand nodes; dn(n) reservoirs / nw, e =/ yes; dn(rn) = no; display dn; /nw.(w,cc,n), e.(n,cc,s,se), cc.(w,sw,s,n), demand nodes; dn(n) = yes; dn(rn) = no; display dn; s.se, s.sw, sw.w /
rn(n)
reservoirs /
nw, e
dn(n)
demand nodes; dn(n) = yes; dn(rn) = no; display dn;
nw
cc
w
e
se
sw
s
/
Para cada n (nó) será verificado em qual conjunto pertence.
Se pertencer ao conjunto n (nodes), também pertencerá ao conjunto dn(n), Se pertencer ao conjunto rn(n) não pertence ao conjunto dn(n).
Msc. Alexandre Hitoshi Ito
Declara que a variável np é do mesmo tamanho que n.
alias
(n,np);
Msc. Alexandre Hitoshi Ito
Posteriormente declara valores fixos. Para cada nó é atribuído informações de demandas, elevação, posição (X e Y), vazão de entrada, custo da água e custo de implantação Table
node(n,*)
node data
demand
x
y
supply
wcost
pcost
m over base
m
m
m**3/sec
rp/m**3
rp/m**4
nw
6.50
1200
3600
2.500
0.20
1.02
e
3.25
4000
2200
6.000
0.17
1.02
*
m**3/sec
height
cc
1.212
3.02
2000
2300
w
0.452
5.16
750
2400
sw
0.245
4.20
900
1200
s
0.652
1.50
2000
1000
se
0.252
0.00
4000
900
n
0.456
6.30
3700
3500
Universidade Estadual de Maringá Departamento de Engenharia Civil Na sequência é calculado a distância entre os nós Parameter dist(n,n)
distance between nodes (m);
dist(a(n,np)) = sqrt( sqr( node(n,"x")-node(np,"x") ) + sqr( node(n,"y")-node(np,"y") ) ); display dist;
𝑑𝑖𝑠𝑡 𝑛, 𝑛 = 𝑑𝑖𝑠𝑡 𝑎 𝑛, 𝑛𝑝
=
𝑛𝑜𝑑𝑒 𝑛, "x" − 𝑛𝑜𝑑𝑒(𝑛𝑝, "𝑥") ² + 𝑛𝑜𝑑𝑒 𝑛, "𝑦" − 𝑛𝑜𝑑𝑒(𝑛𝑝, "𝑦") ²
Considerando os nós, sendo o arco 𝑎 𝑛, 𝑛𝑝 (entrada, saída do nó); Para cada nó (n de entrada) e (nd saída), aplicar o valor de X e Y na equação para calcular a distância entre os pontos.
Msc. Alexandre Hitoshi Ito
A função Scalar, declara os valores constantes que são utilizadas para o modelo, assim é possível verificar o que está sendo utilizado Scalar
dpow
power on diameter in pressure loss equation
/ 5.33
/
qpow
power on flow in pressure loss equation
/ 2.00
/
dmin
minimum diameter of pipe
/ 0.15
/
dmax
maximum diameter of pipe
/ 2.00
/
hloss
constant in the pressure loss equation
/ 1.03e-3/
dprc
scale factor in the investment cost equation
/ 6.90e-2/
cpow
power on diameter in the cost equation
/ 1.29
/
r
interest rate
/ 0.10
/
maxq
bound on qp and qn
/ 2.00
/
davg
average diameter (geometric mean)
rr
ratio of demand to supply;
davg = sqrt(dmin*dmax); rr
= sum(dn,node(dn,"demand")) / sum(rn,node(rn,"supply"));
Msc. Alexandre Hitoshi Ito
A função Scalar, declara os valores constantes que são utilizadas para o modelo, assim é possível verificar o que está sendo utilizado Scalar
dpow
power on diameter in pressure loss equation
/ 5.33
/
qpow
power on flow in pressure loss equation
/ 2.00
/
constant in the pressure loss equation
/ 1.03e-3/
hloss
(Porto, 2006) pg 53 Em geral
𝑄𝑛 𝐽=𝐾 𝑚 𝐷
1,75 < n < 2 e 4,75 < m < 5
Aqui o exemplo considera a “potência”, ou seja, o coeficiente ao expoente. Sendo dpow = Dpow = m qpow = Qpow = n
Para a equação da DW K= hloss :
𝐾=
8𝑓 𝜋2 𝑔
Msc. Alexandre Hitoshi Ito
A função Scalar, declara os valores constantes que são utilizadas para o modelo, assim é possível verificar o que está sendo utilizado Scalar
dmin
minimum diameter of pipe
/ 0.15
/
dmax
maximum diameter of pipe
/ 2.00
/
dprc
scale factor in the investment cost equation
/ 6.90e-2/
cpow
power on diameter in the cost equation
/ 1.29
dmin - Valor do diâmetro mínimo dmax -
máximo
dprc - Fator de escala para a equação de custo de investimento cpow - Expoente da equação do custo da tubulação em função do diâmetro
/
Msc. Alexandre Hitoshi Ito
A função Scalar, declara os valores constantes que são utilizadas para o modelo, assim é possível verificar o que está sendo utilizado Scalar
r
interest rate
/ 0.10
/
maxq
bound on qp and qn
/ 2.00
/
davg
average diameter (geometric mean)
davg = sqrt(dmin*dmax);
r - Taxa de retorno / juros maxq – condição de contorno para a vazão (considera que a vazão máxima será igual a 2m³/s) davg – diâmetro médio em sequencia é declarado a equação do diâmetro médio;
Msc. Alexandre Hitoshi Ito
A função Scalar, declara os valores constantes que são utilizadas para o modelo, assim é possível verificar o que está sendo utilizado Scalar
rr rr
ratio of demand to supply; = sum(dn,node(dn,"demand")) / sum(rn,node(rn,"supply"));
rr – relação entre demanda e oferta Em seguida é declarado a equação da razão entre a vazão do nó de saída pelo nó de entrada (esta entrada é a entrada de água ne rede, no reservatório)
Ou seja, qual a proporção de água que sai em cada nó, em relação a vazão que sai do reservatório 𝑄𝑑𝑛 𝑟𝑟 = 𝑄𝑟𝑛
Msc. Alexandre Hitoshi Ito
Declarando as Variáveis Variables
qp(n,n)
flow on each arc - positive
(m**3 per sec)
qn(n,n)
flow on each arc - negative
(m**3 per sec)
d(n,n)
pipe diameter for each arc
(m)
h(n)
pressure at each node
(m)
s(n)
supply at reservoir nodes
(m**3 per sec)
pcost
annual recurrent pump costs
(mill rp)
dcost
investment costs for pipes
(mill rp)
wcost
annual recurrent water costs
(mill rp)
cost
total discounted costs
(mill rp)
pen
objective penalty
Positive variables qp, qn(n,np)
Binary variable qb(n,np);
Msc. Alexandre Hitoshi Ito
Declarando as Equações Equations
cont(n)
flow conservation equation at each node
loss(n,n)
pressure loss on each arc
peq
pump cost equation
deq
investment cost equation
weq
water cost equation
obj
objective function
dpen
penalty definition
qpup(n,np) positive bounds
qnup(n,np) negative bounds ;
Msc. Alexandre Hitoshi Ito
Atribuindo as Equações cont(n)..
sum(a(np,n), qp(a)-qn(a)) - sum(a(n,np), qp(a)-qn(a)) + s(n)$rn(n) =e= node(n,"demand");
loss(a(n,np)).. h(n) - h(np) =e= [hloss*dist(a)*(qp(a)+qn(a))**(qpow-1)*(qp(a)-qn(a))/d(a)**dpow] $(qpow 2) + [hloss*dist(a)*(qp(a)+qn(a))* qpup(a)..
qp(a) =l=
maxq*qb(a);
qnup(a)..
qn(a) =l=
maxq*(1-qb(a));
(qp(a)-qn(a))/d(a)**dpow] $(qpow = 2);
peq.. pcost =e= sum( rn , s(rn) * node(rn,"pcost") * ( h(rn)-node(rn,"height") ) ); deq.. dcost =e= dprc * sum( (n,np)$a(n,np) , dist(n,np) * d(n,np)**cpow ); weq.. wcost =e= sum( rn , s(rn) * node(rn,"wcost") ); dpen..pen =e= sum(a, qp(a) + qn(a)); obj.. cost
=e= ( pcost + wcost ) / r + dcost + pen;
Msc. Alexandre Hitoshi Ito
Atribuindo as Equações cont(n)..
sum(a(np,n), qp(a)-qn(a)) - sum(a(n,np), qp(a)-qn(a)) + s(n)$rn(n) =e= node(n,"demand"); Equação “cont(n)” 𝑛𝑝,𝑛
𝑎 𝑛𝑝,𝑛
𝑛,𝑛𝑝
𝑞𝑝 𝑎 − 𝑞𝑛 𝑎
−
𝑞𝑝 𝑎 − 𝑞𝑛 𝑎
+ 𝑄𝑟𝑛 (𝑛) = 𝑄𝑛
𝑎 𝑛,𝑛𝑝
n
np
Msc. Alexandre Hitoshi Ito
Atribuindo as Equações Para cada valor de nó sendo o de referencia (n) calcular a vazão que chega e a vazão que saí, tendo a diferença, como resultado a vazão que saí do nó como consumo 𝑛𝑝,𝑛
𝑛,𝑛𝑝
𝑞𝑝 𝑎 − 𝑞𝑛 𝑎
−
𝑎 𝑛𝑝,𝑛
n
𝑞𝑝 𝑎 − 𝑞𝑛 𝑎
𝑎 𝑛,𝑛𝑝
np
np
n
Msc. Alexandre Hitoshi Ito
Atribuindo as Equações Assim toda a somatória de cada um dos nós +
A quantidade que sai do reservatório Deve ser igual a vazão estabelecida de demanda de cada nó. Desta forma as vazões de entrada e saída de cada nó irá variar. 𝑛𝑝,𝑛
𝑎 𝑛𝑝,𝑛
𝑛,𝑛𝑝
𝑞𝑝 𝑎 − 𝑞𝑛 𝑎
− 𝑎 𝑛,𝑛𝑝
𝑞𝑝 𝑎 − 𝑞𝑛 𝑎
+ 𝑄𝑟𝑛 (𝑛) = 𝑄𝑛
Msc. Alexandre Hitoshi Ito
Atribuindo as Equações loss(a(n,np))..
h(n) - h(np) =e= [hloss*dist(a)*(qp(a)+qn(a))**(qpow-1)*(qp(a)qn(a))/d(a)**dpow] $(qpow 2) + [hloss*dist(a)*(qp(a)+qn(a))**(qpow-1)*(qp(a)qn(a))/d(a)**dpow] $(qpow = 2); Equação “loss(a(n,np))” 𝑘 ∙ 𝐿 𝑎 ∙ 𝑞+ + 𝑞− ℎ 𝑛 − ℎ 𝑛𝑝 = 𝐷 𝑎 𝑚 𝑘 ∙ 𝐿 𝑎 ∙ 𝑞+ + 𝑞− ℎ 𝑛 − ℎ 𝑛𝑝 = 𝐷 𝑎 𝑚
𝑛
,
𝑠𝑒 𝑛 ≠ 2
𝑛
,
𝑠𝑒 𝑛 = 2
Msc. Alexandre Hitoshi Ito
Atribuindo as Equações qpup(a)..
qp(a) =l=
maxq*qb(a);
qnup(a)..
qn(a) =l=
maxq*(1-qb(a));
Esta condição aplica que, a vazão Positiva (qpup) ou Negativa (qnup) (entra ou sai do nó) será Menor ou igual (=l=) a expressão. A condição de contorno máxima (maxq) neste caso igual a 2. Multiplicado por um binário (1 ou 0) para identificar se tem o fluxo. OBS:. O escoamento apresenta somente um único sentido, entrando ou saindo do nó.
Msc. Alexandre Hitoshi Ito
Atribuindo as Equações peq..
pcost =e= sum(rn, s(rn)*node(rn,"pcost")* (h(rn)-node(rn,"height") )
);
Calcula o custo do funcionamento da bomba. Para todos os reservatórios, somar o produto do custo de operação da bomba pela vazão de saída do reservatório e a elevação. 𝑐𝑢𝑠𝑡𝑜 = 𝑠 𝑟𝑛 ∙ 𝑝𝑐𝑜𝑠𝑡 𝑟𝑛 ∙ (ℎ 𝑟𝑛 − 𝐻 𝑟𝑛 ) Custo Total
𝑟𝑛
Diâmetro
Msc. Alexandre Hitoshi Ito
Atribuindo as Equações peq..
pcost =e= sum(rn, s(rn)*node(rn,"pcost")* (h(rn)-node(rn,"height") )
Custo de uma adutora 𝐶𝑢𝑠𝑡𝑜1 = 𝐶𝑖 ∙ 𝐿 ∙ 𝑡 L – Comprimento da adutora t – Taxa de encargos financeiros
Custo Total
Ci – Equação de custo unitário em função de D
Diâmetro
);
Msc. Alexandre Hitoshi Ito
Atribuindo as Equações peq..
pcost =e= sum(rn, s(rn)*node(rn,"pcost")* (h(rn)-node(rn,"height") )
Gasto anal global com energia elétrica 𝐻𝑔 + 𝐽 ∙ 𝐿 𝐶𝑢𝑠𝑡𝑜2 = 9,8 ∙ 𝑄 ∙ ∙𝑁∙𝑇∙𝐴 ɳ𝐵 ∙ ɳ𝑚 T – tempo de funcionamento [h] N - dias de funcionamento no ano [dias] A – Custo do qulowatt/hora [R$]
);
Msc. Alexandre Hitoshi Ito
Atribuindo as Equações weq..
wcost =e= sum( rn , s(rn) * node(rn,"wcost") ); Calcula o custo da água Somando para todos os reservatórios, o produto da vazão que sai de cada um deles pelo custo unitário da água 𝑐𝑢𝑠𝑡𝑜 = 𝑠 𝑟𝑛 ∙ 𝑤𝑐𝑜𝑠𝑡(𝑛𝑟)
Custo Total
𝑟𝑛
Diâmetro
Msc. Alexandre Hitoshi Ito
Atribuindo as Equações deq..
dcost =e= dprc * sum((n,np)$a(n,np), dist(n,np)*d(n,np)**cpow ); Fator de custo em função do tamanho do tubo (dprc) multiplicado pela soma do produto de cada arco em função do comprimento, pelo diâmetro elevado por um fator
𝑐𝑢𝑠𝑡𝑜 = 𝑑𝑝𝑟𝑐 ∙ 𝑠 𝑟𝑛 ∙ 𝑝𝑐𝑜𝑠𝑡 𝑟𝑛 ∙ 𝑑 𝑛, 𝑛𝑝
Custo Total
𝑟𝑛
Diâmetro
𝑐𝑝𝑜𝑤
Msc. Alexandre Hitoshi Ito
Atribuindo as Equações dpen..
pen =e= sum(a, qp(a) + qn(a)); Calculo o custo fixo para a vazão.
Funcionando como uma condição de verificação e que aplicado a curva irá elevar mais ou menos o custo total do sistema.
𝑐𝑢𝑠𝑡𝑜 = 𝑞𝑝 𝑎 + 𝑞𝑛(𝑎) Custo Total
𝑎
pen
Diâmetro
Msc. Alexandre Hitoshi Ito
Atribuindo as Equações obj..
cost =e= ( pcost + wcost ) / r + dcost + pen; Função Objetivo Considera uma razão entre o custo de operação e o custo da água +
O custo de instalação + O Custo de operação da vazão 𝑝𝑐𝑜𝑠𝑡 + 𝑤𝑐𝑜𝑠𝑡 𝐹𝑂 = + 𝑑𝑐𝑜𝑠𝑡 + 𝑝𝑒𝑛 𝑟 Custo Total
𝑎
Diâmetro
Msc. Alexandre Hitoshi Ito
Função custo de operação (energia, água, ...) Função custo de instalação (tubo , bomba,...) Função custo Total (soma de tudo) 𝑝𝑐𝑜𝑠𝑡 + 𝑤𝑐𝑜𝑠𝑡 𝐹𝑂 = + 𝑑𝑐𝑜𝑠𝑡 + 𝑝𝑒𝑛 𝑟
Custo Total
𝑎
𝑎
𝑝𝑐𝑜𝑠𝑡 + 𝑤𝑐𝑜𝑠𝑡 𝑟
𝑑𝑐𝑜𝑠𝑡 De
Diâmetro
Msc. Alexandre Hitoshi Ito
3
8
1
2
qp
qn
4
6
7
9
5
Msc. Alexandre Hitoshi Ito
𝑛𝑝,𝑛
ℎ 𝑛 − ℎ 𝑛𝑝 =
𝑛,𝑛𝑝
𝑞𝑝 𝑎 − 𝑞𝑛 𝑎
𝑎 𝑛𝑝,𝑛
−
𝑞𝑝 𝑎 − 𝑞𝑛 𝑎
+ 𝑄𝑟𝑛 (𝑛) = 𝑄𝑛
𝑎 𝑛,𝑛𝑝
1 qp(a) =l=
2
𝑘 ∙ 𝐿 𝑎 ∙ 𝑞+ + 𝑞− ℎ 𝑛 − ℎ 𝑛𝑝 = 𝐷 𝑎 𝑚
qn(a) =l=
maxq*qb(a);
3
𝑘 ∙ 𝐿 𝑎 ∙ 𝑞+ + 𝑞− 𝐷 𝑎 𝑚
qn
qp
𝑛
,
𝑠𝑒 𝑛 ≠ 2
𝑛
,
𝑠𝑒 𝑛 = 2
maxq*(1-qb(a));
4
𝑐𝑢𝑠𝑡𝑜 = 𝑠 𝑟𝑛 ∙ 𝑤𝑐𝑜𝑠𝑡(𝑛𝑟) 𝑟𝑛
𝑐𝑢𝑠𝑡𝑜 = 𝑞𝑝 𝑎 + 𝑞𝑛(𝑎)
𝑐𝑢𝑠𝑡𝑜 = 𝑑𝑝𝑟𝑐 ∙ 𝑠 𝑟𝑛 ∙ 𝑝𝑐𝑜𝑠𝑡 𝑟𝑛 ∙ 𝑑 𝑛, 𝑛𝑝
8
𝑎
𝑐𝑝𝑜𝑤
𝑟𝑛
7
6 5
𝐹𝑂 = 𝑎
𝑝𝑐𝑜𝑠𝑡 + 𝑤𝑐𝑜𝑠𝑡 + 𝑑𝑐𝑜𝑠𝑡 + 𝑝𝑒𝑛 𝑟
9
𝑐𝑢𝑠𝑡𝑜 = 𝑠 𝑟𝑛 ∙ 𝑝𝑐𝑜𝑠𝑡 𝑟𝑛 ∙ (ℎ 𝑟𝑛 − 𝐻 𝑟𝑛 ) 𝑟𝑛
Msc. Alexandre Hitoshi Ito
Restrições d.lo(n,np)$a(n,np) = dmin;
d.up(n,np)$a(n,np) = dmax; h.lo(rn)
= node(rn,"height");
h.lo(dn)=node(dn,"height")+7.5+5.0* node(dn,"demand");
s.lo(rn)
= 0;
s.up(rn)
= node(rn,"supply");
Msc. Alexandre Hitoshi Ito
Restrições d.lo(n,np)$a(n,np) = dmin;
d.up(n,np)$a(n,np) = dmax; Os diametros máximos e minimos são aplicados como restrição para a variável diâmetro. “.lo” - Lower “.up” - Uper “d.lo(n,np)” aplicando o menor valor do diâmetro, para cada arco, “a(n,np)” se o arco conectar um ponto a outro, será aplicado o valor do diâmetro mínimo; Mesma coisa para o valor máximo
Msc. Alexandre Hitoshi Ito
Restrições h.lo(rn)= node(rn,"height");
h.lo(dn)=node(dn,"height")+7.5+ 5.0*node(dn,"demand"); “h.lo(rn)” A menor carga do reservatório (rn) será a elevação que foi atribuído ao reservatório, conforme apresentado na Tabela “h.lo(dn)”A menor carga dos nós será a carga mínima do reservatório +7,5
+ 5*a demanda no nó;
Msc. Alexandre Hitoshi Ito
Restrições s.lo(rn)
= 0;
s.up(rn)
= node(rn,"supply");
A menor vazão do reservatório será zero, e a máxima vazão será a de projeto conforme estabelecido na tabela
Msc. Alexandre Hitoshi Ito
Valores Iniciais d.l(n,np)$a(n,np)
= davg;
h.l(n)
= h.lo(n) + 5.0;
s.l(rn)
= node(rn,"supply")*rr;
“.l” – Nível de atividade ou valor primal
“d.l(n,np)$a(n,np)” - O valor inicial da variável diâmetro de cada um dos arcos, sendo um arco de um nó a outro, deverá ser igual a média do diâmetro “davg” “h.l(n)” o valor inicial da carga hidráulica, será a carga mínima disponível pelo reservatório + 5 “s.l(rn)”a vazão inicial do reservatório, será o produto do fornecimento pela relação entre demanda e oferta
Msc. Alexandre Hitoshi Ito
Modelo
Model network /all/; Cria um modelo chamado “network” considerando para este modelo todas as equações declaradas -----------------------------------network.domlim
=
1000;
network.iterlim = 100000; Para o modelo aplica condições para o processo de otimização “.domlim” -
“.iterlim” - numero máximo de iterações
Msc. Alexandre Hitoshi Ito
$ontext *
DICOPT requires different nonlinear optimizers to overcome some of
*
the difficulties with non-convexities. This problem has a large
*
number of local solutions and it is important to find a 'good'
*
first nlp solution. Minos is used to find the first nlp and Conopt
*
is used to solve the subsequent problems. Minos or Conopt alone are
*
not able to find a good solution.
File dopt / dicopt.opt /; put dopt; putclose
'nlpsolver minos5 conopt'
/ 'nlpoptfile
0
1
' ;
File copt / conopt.opt /; put copt;
putclose
'set rtmaxj
network.optfile =
1.0e12'; 1;
Solve network using rminlp minimizing cost;
$offtext
Msc. Alexandre Hitoshi Ito
Explicação das notas O otimizador DICOPT requer diferentes otimizadores nãolineares, para suprir alguns problemas de situações não convexas. Este problema apresenta um grande número soluções locais, sendo importante encontrar um ótimo primário de uma solução não linear. MINOS é utilizado para encontrar o primeiro NPL e o CONOPT é utilizado para solucionar os problemas subsequentes. Sozinhos eles não são capazes de encontrar a melhor solução.
Msc. Alexandre Hitoshi Ito
Solução Solve network using minlp minimizing cost; Solucionar o modelo “network” utilizando o otimizador “minlp” para minimizar a variável custo “cost”.
Msc. Alexandre Hitoshi Ito
Resultados ----
cc,
---np\n
33 SET dn
w ,
sw,
demand nodes
s ,
se,
51 PARAMETER dist cc
w
Nw
1526.434 1281.601
e
2002.498
distance between nodes (m) sw
s
se
n 2501.999
cc
1253.994 1555.635
sw
1209.339
s
n
1118.034
2332.381
1300 1334.166
1300
2080.865
2002.498
Msc. Alexandre Hitoshi Ito cc
w
nw
1526.434 1281.601
e
2002.498
sw
1253.994 1555.635
sw
1209.339 1118.034
n
se
n 2501.999
cc
s
s
2332.381
1300 1334.166
1300
2080.865
2002.498
2080,865
nw
w
cc
1253,994
e
1300
2002,498
se
sw s
a(n,n) arcs (arbitrarily directed) /nw.(w,cc,n), e.(n,cc,s,se), s.se, cc.(w,sw,s,n), s.sw, sw.w /
Msc. Alexandre Hitoshi Ito n nw
cc
w
e
se
sw
s
cont(n).. sum(a(np,n), qp(a)-qn(a)) - sum(a(n,np), s(n)$rn(n) =e= node(n,"demand");
qp(a)-qn(a))
cont(nw).. - qp(nw,cc) - qp(nw,w) - qp(nw,n) + qn(nw,cc) + qn(nw,w) + qn(nw,n) + s(nw) =E= 0 ; (LHS = 0.961470588235294, INFES = 0.961470588235294 ***)
+
Msc. Alexandre Hitoshi Ito n nw
cc
w
e
se
sw
s
cont(n).. sum(a(np,n), qp(a)-qn(a)) - sum(a(n,np), s(n)$rn(n) =e= node(n,"demand");
qp(a)-qn(a))
cont(e).. - qp(e,cc) - qp(e,s) - qp(e,se) - qp(e,n) + qn(e,cc) + qn(e,s)+ qn(e,se) + qn(e,n) + s(e) =E= 0 ; (LHS = 2.30752941176471, INFES = 2.30752941176471 ***)
+
Msc. Alexandre Hitoshi Ito n nw
cc
w
e
se
sw
s
cont(n).. sum(a(np,n), qp(a)-qn(a)) - sum(a(n,np), s(n)$rn(n)=e= node(n,"demand");
qp(a)-qn(a))
cont(cc).. qp(nw,cc) + qp(e,cc) - qp(cc,w) - qp(cc,sw) - qp(cc,s) - qp(cc,n) - qn(nw,cc) - qn(e,cc) + qn(cc,w) + qn(cc,sw) + qn(cc,s) + qn(cc,n) =E= 1.212 ; (LHS = 0, INFES = 1.212 ***)
+
Msc. Alexandre Hitoshi Ito cont(n).. sum(a(np,n), qp(a)-qn(a)) - sum(a(n,np), s(n)$rn(n)=e= node(n,"demand");
---- EQU cont LOWER nw e cc w sw s se n
. . 1.212 0.452 0.245 0.652 0.252 0.456
qp(a)-qn(a))
flow conservation equation at each node LEVEL . . 1.212 0.452 0.245 0.652 0.252 0.456
UPPER . . 1.212 0.452 0.245 0.652 0.252 0.456
MARGINAL 123.443 152.638 164.828 175.368 255.297 235.193 217.525 215.539
+
Msc. Alexandre Hitoshi Ito h(n) - h(np) =e= [hloss*dist(a)*(qp(a)+qn(a))**(qpow-1)*(qp(a)-qn(a))/d(a)**dpow] $(qpow 2) + [hloss*dist(a)*(qp(a)+qn(a))*qp(a)-qn(a))/d(a)**dpow]$(qpow = 2);
---- loss
=E=
pressure loss on each arc
loss(nw,cc).. (0)*qp(nw,cc) + (0)*qn(nw,cc) + (0)*d(nw,cc) + h(nw) -h(cc) =E=0; (LHS = -10.08, INFES = 10.08 ***) loss(nw,w).. (0)*qp(nw,w) + (0)*qn(nw,w) + (0)*d(nw,w) + h(nw) - h(w) =E= 0 ; (LHS = -8.42, INFES = 8.42 ***)
loss(nw,n).. (0)*qp(nw,n) + (0)*qn(nw,n) + (0)*d(nw,n) + h(nw) - h(n) =E= 0 ; (LHS = -9.58, INFES = 9.58 ***)
Msc. Alexandre Hitoshi Ito h(n) - h(np) =e= [hloss*dist(a)*(qp(a)+qn(a))**(qpow-1)*(qp(a)-qn(a))/d(a)**dpow] $(qpow 2) + [hloss*dist(a)*(qp(a)+qn(a))*qp(a)-qn(a))/d(a)**dpow]$(qpow = 2); ---- EQU loss
nw.cc nw.w nw.n e .cc e .s e .se e .n cc.w cc.sw cc.s cc.n sw.w s .sw s .se
pressure loss on each arc
LOWER
LEVEL
UPPER
MARGINAL
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
16.191 3.307 0.119 0.020 5.106 1.572 7.028 0.021 2.899 0.100 0.153 -0.160 6.778 -1.572
Msc. Alexandre Hitoshi Ito peq.. pcost =e= sum(rn, s(rn)*node(rn,"pcost")* (h(rn)-node(rn,"height") )
);
---- peq =E= pump cost equation peq.. - (0.9807)*h(nw) - (2.35368)*h(e) - (5.1)*s(nw) - (5.1)*s(e) + pcost =E= 0 ; (LHS = -16.6719, INFES = 16.6719 ***)
weq.. wcost =e= sum( rn , s(rn) * node(rn,"wcost") ); ---- weq weq..
=E=
water cost equation
- 0.2*s(nw) - 0.17*s(e) + wcost =E= 0 ; (LHS = -0.584574117647059, INFES = 0.584574117647059 ***)
Msc. Alexandre Hitoshi Ito deq.. dcost =e= dprc * sum((n,np)$a(n,np), dist(n,np)*d(n,np)**cpow ); ---- deq
deq..
=E=
investment cost equation
- (114.103599143227)*d(nw,cc) - (95.8018889124984)*d(nw,w) - (187.028826784067)*d(nw,n) - (149.69026915419)*d(e,cc) - (174.349550814975)*d(e,s) - (97.1772791762506)*d(e,se) - (99.7312779565658)*d(e,n) - (93.7382216420746)*d(cc,w) - (116.286437524713)*d(cc,sw) - (97.1772791762506)*d(cc,s)
- (155.548322247858)*d(cc,n) - (90.4001852304575)*d(sw,w) - (83.5750008102197)*d(s,sw) - (149.69026915419)*d(s,se) + dcost =E= 0 ;
(LHS = -723.629986536828, INFES = 723.629986536828 ***)
Msc. Alexandre Hitoshi Ito obj.. cost =e= ( pcost + wcost ) / r + dcost + pen; ---- obj
=E=
objective function
obj.. - 10*pcost - dcost - 10*wcost + cost - pen =E= 0 ; (LHS = 0) ----------------------------------------------------------------
----------------
EQU EQU EQU EQU EQU
peq deq weq obj dpen
peq deq weq obj dpen
LOWER
LEVEL
UPPER
MARGINAL
. . . . .
. . . . .
. . . . .
10.000 1.000 10.000 1.000 1.000
pump cost equation investment cost equation water cost equation objective function penalty definition
Msc. Alexandre Hitoshi Ito dpen.. pen =e= sum(a, qp(a) + qn(a));
---- dpen
=E=
penalty definition
dpen.. - qp(nw,cc) - qp(nw,w) - qp(nw,n) - qp(e,cc) - qp(e,s) qp(e,se)
- qp(e,n) - qp(cc,w) - qp(cc,sw) - qp(cc,s) - qp(cc,n) qp(sw,w) - qp(s,sw) - qp(s,se) - qn(nw,cc) - qn(nw,w) - qn(nw,n) qn(e,cc) - qn(e,s) - qn(e,se) - qn(e,n) - qn(cc,w) - qn(cc,sw) qn(cc,s) - qn(cc,n) - qn(sw,w) - qn(s,sw) - qn(s,se) + pen =E= 0 ; (LHS = 0)
Msc. Alexandre Hitoshi Ito qpup(a).. ---- qpup
qp(a) =l= =L=
maxq*qb(a);
positive bounds
qpup(nw,cc)..
qp(nw,cc) - 2*qb(nw,cc) =L= 0 ; (LHS = 0)
qpup(nw,w)..
qp(nw,w) - 2*qb(nw,w) =L= 0 ; (LHS = 0)
qpup(nw,n)..
qp(nw,n) - 2*qb(nw,n) =L= 0 ; (LHS = 0)
qnup(a)..
---- qnup
qn(a) =l=
=L=
qnup(nw,cc)..
maxq*(1-qb(a));
negative bounds qn(nw,cc) + 2*qb(nw,cc) =L= 2 ; (LHS = 0)
qnup(nw,w)..
qn(nw,w) + 2*qb(nw,w) =L= 2 ; (LHS = 0)
qnup(nw,n)..
qn(nw,n) + 2*qb(nw,n) =L= 2 ; (LHS = 0)
Msc. Alexandre Hitoshi Ito qpup(a).. ---- qpup
qp(a) =l= =L=
qpup(nw,cc)..
maxq*qb(a);
positive bounds qp(nw,cc) - 2*qb(nw,cc) =L= 0 ; (LHS = 0)
---- EQU qpup LOWER nw.cc nw.w nw.n e .cc e .s e .se e .n cc.w cc.sw cc.s cc.n sw.w s .sw s .se
-INF -INF -INF -INF -INF -INF -INF -INF -INF -INF -INF -INF -INF -INF
positive bounds LEVEL -0.536 -1.547 -1.994 -1.995 -1.359 -1.748 -1.553 -1.993 -1.763 -1.989 -1.997 . -2.000 .
UPPER
MARGINAL
. . . . . . . . . . . . . .
. . . . . . . . . . . . . .
Msc. Alexandre Hitoshi Ito qnup(a).. ---- qnup
qn(a) =l= =L=
qnup(nw,cc)..
maxq*(1-qb(a));
negative bounds qn(nw,cc) + 2*qb(nw,cc) =L= 2 ; (LHS = 0)
---- EQU qnup LOWER nw.cc nw.w nw.n e .cc e .s e .se e .n cc.w cc.sw cc.s cc.n sw.w s .sw s .se
-INF -INF -INF -INF -INF -INF -INF -INF -INF -INF -INF -INF -INF -INF
negative bounds LEVEL 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 0.008 2.000 1.0435E-4
UPPER 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000
MARGINAL . . . . . . . . . . . . . .
Msc. Alexandre Hitoshi Ito Vazão Positiva (qp)
---- VAR qp
flow on each arc - positive
LOWER nw.cc nw.w nw.n e .cc e .s e .se e .n cc.w cc.sw cc.s cc.n sw.w s .sw s .se
. . . . . . . . . . . . . .
LEVEL 1.464 0.453 0.006 0.005 0.641 0.252 0.447 0.007 0.237 0.011 0.003 . 4.9692E-5 .
(m**3 per sec)
UPPER
MARGINAL
+INF +INF +INF +INF +INF +INF +INF +INF +INF +INF +INF +INF +INF +INF
. . . . . . . . . . . 80.929 EPS 18.668
Msc. Alexandre Hitoshi Ito Vazão Negativa (qn)
---- VAR qn
flow on each arc - negative
LOWER nw.cc nw.w nw.n e .cc e .s e .se e .n cc.w cc.sw cc.s cc.n sw.w s .sw s .se
. . . . . . . . . . . . . .
LEVEL . . . . . . . . . . . 0.008 . 1.0435E-4
(m**3 per sec)
UPPER
MARGINAL
+INF +INF +INF +INF +INF +INF +INF +INF +INF +INF +INF +INF +INF +INF
42.385 52.925 93.096 13.190 83.555 65.887 63.901 11.540 91.469 71.365 51.711 . 21.104 EPS
Msc. Alexandre Hitoshi Ito Diâmetro de cada Arco (d.a(n,np))
---- VAR d
pipe diameter for each arc
LOWER nw.cc nw.w nw.n e .cc e .s e .se e .n cc.w cc.sw cc.s cc.n sw.w s .sw s .se
0.150 0.150 0.150 0.150 0.150 0.150 0.150 0.150 0.150 0.150 0.150 0.150 0.150 0.150
LEVEL 1.122 0.619 0.150 0.150 0.734 0.464 0.691 0.150 0.499 0.150 0.150 0.150 0.150 0.150
UPPER 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000 2.000
(m)
MARGINAL EPS . 118.669 101.751 . . . 63.163 . 53.775 104.126 50.786 57.390 102.789
Msc. Alexandre Hitoshi Ito Pressão em cada nó (n)
---- VAR h
nw e cc w sw s se n
pressure at each node
(m)
LOWER
LEVEL
UPPER
MARGINAL
6.500 3.250 16.580 14.920 12.925 12.260 8.760 16.080
18.406 18.048 16.580 14.920 12.925 12.925 12.926 16.080
+INF +INF +INF +INF +INF +INF +INF +INF
. EPS 13.039 3.169 9.837 . . 7.300
Msc. Alexandre Hitoshi Ito Vazão em cada reservatório (s) ---- VAR s
supply at reservoir nodes
LOWER
nw e
. .
LEVEL
1.923 1.346 LOWER
----------------
VAR VAR VAR VAR VAR
pcost dcost wcost cost pen
UPPER
MARGINAL
2.500 6.000 LEVEL
-INF -INF -INF -INF -INF
(m**3 per sec)
. . UPPER
43.669 492.502 0.613 938.862 3.535
pcost annual recurrent pump costs dcost investment costs for pipes wcost annual recurrent water costs cost total discounted costs pen objective penalty
MARGINAL
+INF +INF +INF +INF +INF (mill rp) (mill rp) (mill rp) (mill rp)
. . . . .
Msc. Alexandre Hitoshi Ito Vazão unitária (qb) ---- VAR qb LOWER
nw.cc nw.w nw.n e .cc e .s e .se e .n cc.w cc.sw cc.s cc.n sw.w s .sw s .se
. . . . . . . . . . . . . .
LEVEL
1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 . 1.000 .
UPPER
1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000 1.000
MARGINAL
EPS EPS EPS EPS EPS EPS EPS EPS EPS EPS EPS EPS EPS EPS
Msc. Alexandre Hitoshi Ito Resumo do Relatório **** REPORT SUMMARY :
0 NONOPT 0 INFEASIBLE 0 UNBOUNDED 0 ERRORS