Você está na página 1de 61

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 / nw north west reservoir


e east reservoir
cc central city
w west
sw south west
s south
se south east
n north /

a(n,n) 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 n nodes / nw north west reservoir n


Set n nodes / nw north west reservoir nw
e east reservoir
Set n nodes / nwe east west
north reservoir
reservoir
cc central city
cc
ew central
east city
west reservoir
w
cc west
central city
sw south west
Set n nodes / nw north west reservoir
sw
ws south
west
south
west
w cc
e
s
sw
east
southreservoir
south
e
se south west
east
cc
se central
south city
east
sn south
north /
w
n west
north east /
se south
sw south west
a(n,n) n northdirected)
arcs (arbitrarily /
sw se
a(n,n) s south
arcs (arbitrarily directed)
/nw.(w,cc,n), e.(n,cc,s,se), cc.(w,sw,s,n),
se south
/nw.(w,cc,n), east
e.(n,cc,s,se), cc.(w,sw,s,n),
s
a(n,n) arcs (arbitrarily directed)
s.se, s.sw, sw.w /
n north
s.se, s.sw, /
sw.w /
rn(n) /nw.(w,cc,n),
reservoirs / nw,e.(n,cc,s,se),
e / cc.(w,sw,s,n),
rn(n) reservoirs / nw,
s.se, e sw.w
s.sw, /
dn(n) demand nodes; dn(n) = yes;/ dn(rn) = no; display dn;
a(n,n)
dn(n) arcs (arbitrarily
demand nodes; directed)
dn(n)
rn(n) reservoirs / nw, e =/ yes; dn(rn) = no; display dn;
/nw.(w,cc,n), e.(n,cc,s,se), cc.(w,sw,s,n),
dn(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;

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 height x y supply wcost pcost


* m**3/sec 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
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 /

hloss constant in the pressure loss equation / 1.03e-3/

(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
8𝑓
Para a equação da DW K= hloss : 𝐾=
𝜋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 ratio of demand to supply;


rr = 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))* (qp(a)-qn(a))/d(a)**dpow] $(qpow = 2);

qpup(a).. qp(a) =l= maxq*qb(a);


qnup(a).. qn(a) =l= maxq*(1-qb(a));

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
Ci – Equação de custo unitário em função de D
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") ) );

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

1 2

3 qp qn 4

8 7 6 5

9
Msc. Alexandre Hitoshi Ito

𝑛
𝑘 ∙ 𝐿 𝑎 ∙ 𝑞+ + 𝑞−
𝑛𝑝,𝑛 𝑛,𝑛𝑝 ℎ 𝑛 − ℎ 𝑛𝑝 = , 𝑠𝑒 𝑛 ≠ 2
𝐷 𝑎 𝑚
෍ 𝑞𝑝 𝑎 − 𝑞𝑛 𝑎 − ෍ 𝑞𝑝 𝑎 − 𝑞𝑛 𝑎 + 𝑄𝑟𝑛 (𝑛) = 𝑄𝑛
𝑛
𝑎 𝑛𝑝,𝑛 𝑎 𝑛,𝑛𝑝 𝑘 ∙ 𝐿 𝑎 ∙ 𝑞+ + 𝑞−
ℎ 𝑛 − ℎ 𝑛𝑝 = , 𝑠𝑒 𝑛 = 2
𝐷 𝑎 𝑚
1 2

qp(a) =l= maxq*qb(a); qn(a) =l= maxq*(1-qb(a));

3 qp qn 4

𝑐𝑢𝑠𝑡𝑜 = ෍ 𝑠 𝑟𝑛 ∙ 𝑤𝑐𝑜𝑠𝑡(𝑛𝑟)
𝑟𝑛 𝑐𝑝𝑜𝑤
𝑐𝑢𝑠𝑡𝑜 = 𝑑𝑝𝑟𝑐 ∙ ෍ 𝑠 𝑟𝑛 ∙ 𝑝𝑐𝑜𝑠𝑡 𝑟𝑛 ∙ 𝑑 𝑛, 𝑛𝑝
𝑐𝑢𝑠𝑡𝑜 = ෍ 𝑞𝑝 𝑎 + 𝑞𝑛(𝑎) 8 𝑟𝑛
𝑎
7 6

𝑝𝑐𝑜𝑠𝑡 + 𝑤𝑐𝑜𝑠𝑡 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 1.0e12';

network.optfile = 1;

Solve network using rminlp minimizing cost;


$offtext
Msc. Alexandre Hitoshi Ito

Explicação das notas


O otimizador DICOPT requer diferentes otimizadores não-
lineares, 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
---- 33 SET dn demand nodes
cc, w , sw, s , se, n

---- 51 PARAMETER dist distance between nodes (m)


np\n cc w sw s se n

Nw 1526.434 1281.601 2501.999

e 2002.498 2332.381 1300 1334.166

cc 1253.994 1555.635 1300 2080.865

sw 1209.339

s 1118.034 2002.498
Msc. Alexandre Hitoshi Ito
cc w sw s se n

nw 1526.434 1281.601 2501.999

e 2002.498 2332.381 1300 1334.166

cc 1253.994 1555.635 1300 2080.865

sw 1209.339

s 1118.034 2002.498
n
nw
2080,865

a(n,n) arcs (arbitrarily directed)


cc /nw.(w,cc,n), e.(n,cc,s,se), s.se,
w 1253,994
2002,498 e cc.(w,sw,s,n), s.sw, sw.w /
1300

sw se
s
Msc. Alexandre Hitoshi Ito
n
nw

w cc
e

sw se
s
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");

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

w cc
e

sw se
s
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");

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

w cc
e

sw se
s
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");

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), qp(a)-qn(a)) +
s(n)$rn(n)=e= node(n,"demand");

---- EQU cont flow conservation equation at each node

LOWER LEVEL UPPER MARGINAL

nw . . . 123.443
e . . . 152.638
cc 1.212 1.212 1.212 164.828
w 0.452 0.452 0.452 175.368
sw 0.245 0.245 0.245 255.297
s 0.652 0.652 0.652 235.193
se 0.252 0.252 0.252 217.525
n 0.456 0.456 0.456 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 pressure loss on each arc

LOWER LEVEL UPPER MARGINAL

nw.cc . . . 16.191
nw.w . . . 3.307
nw.n . . . 0.119
e .cc . . . 0.020
e .s . . . 5.106
e .se . . . 1.572
e .n . . . 7.028
cc.w . . . 0.021
cc.sw . . . 2.899
cc.s . . . 0.100
cc.n . . . 0.153
sw.w . . . -0.160
s .sw . . . 6.778
s .se . . . -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 =E= water cost equation

weq.. - 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 =E= investment cost equation

deq.. - (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)

----------------------------------------------------------------

LOWER LEVEL UPPER MARGINAL

---- EQU peq . . . 10.000


---- EQU deq . . . 1.000
---- EQU weq . . . 10.000
---- EQU obj . . . 1.000
---- EQU dpen . . . 1.000

peq pump cost equation


deq investment cost equation
weq water cost equation
obj objective function
dpen 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).. qp(a) =l= maxq*qb(a);
---- qpup =L= 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).. qn(a) =l= maxq*(1-qb(a));

---- qnup =L= negative bounds

qnup(nw,cc).. 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).. qp(a) =l= maxq*qb(a);
---- qpup =L= positive bounds

qpup(nw,cc).. qp(nw,cc) - 2*qb(nw,cc) =L= 0 ; (LHS = 0)


---- EQU qpup positive bounds

LOWER LEVEL UPPER MARGINAL

nw.cc -INF -0.536 . .


nw.w -INF -1.547 . .
nw.n -INF -1.994 . .
e .cc -INF -1.995 . .
e .s -INF -1.359 . .
e .se -INF -1.748 . .
e .n -INF -1.553 . .
cc.w -INF -1.993 . .
cc.sw -INF -1.763 . .
cc.s -INF -1.989 . .
cc.n -INF -1.997 . .
sw.w -INF . . .
s .sw -INF -2.000 . .
s .se -INF . . .
Msc. Alexandre Hitoshi Ito
qnup(a).. qn(a) =l= maxq*(1-qb(a));
---- qnup =L= negative bounds

qnup(nw,cc).. qn(nw,cc) + 2*qb(nw,cc) =L= 2 ; (LHS = 0)


---- EQU qnup negative bounds

LOWER LEVEL UPPER MARGINAL

nw.cc -INF 2.000 2.000 .


nw.w -INF 2.000 2.000 .
nw.n -INF 2.000 2.000 .
e .cc -INF 2.000 2.000 .
e .s -INF 2.000 2.000 .
e .se -INF 2.000 2.000 .
e .n -INF 2.000 2.000 .
cc.w -INF 2.000 2.000 .
cc.sw -INF 2.000 2.000 .
cc.s -INF 2.000 2.000 .
cc.n -INF 2.000 2.000 .
sw.w -INF 0.008 2.000 .
s .sw -INF 2.000 2.000 .
s .se -INF 1.0435E-4 2.000 .
Msc. Alexandre Hitoshi Ito
Vazão Positiva (qp)

---- VAR qp flow on each arc - positive (m**3 per sec)

LOWER LEVEL UPPER MARGINAL

nw.cc . 1.464 +INF .


nw.w . 0.453 +INF .
nw.n . 0.006 +INF .
e .cc . 0.005 +INF .
e .s . 0.641 +INF .
e .se . 0.252 +INF .
e .n . 0.447 +INF .
cc.w . 0.007 +INF .
cc.sw . 0.237 +INF .
cc.s . 0.011 +INF .
cc.n . 0.003 +INF .
sw.w . . +INF 80.929
s .sw . 4.9692E-5 +INF EPS
s .se . . +INF 18.668
Msc. Alexandre Hitoshi Ito
Vazão Negativa (qn)

---- VAR qn flow on each arc - negative (m**3 per sec)

LOWER LEVEL UPPER MARGINAL

nw.cc . . +INF 42.385


nw.w . . +INF 52.925
nw.n . . +INF 93.096
e .cc . . +INF 13.190
e .s . . +INF 83.555
e .se . . +INF 65.887
e .n . . +INF 63.901
cc.w . . +INF 11.540
cc.sw . . +INF 91.469
cc.s . . +INF 71.365
cc.n . . +INF 51.711
sw.w . 0.008 +INF .
s .sw . . +INF 21.104
s .se . 1.0435E-4 +INF EPS
Msc. Alexandre Hitoshi Ito
Diâmetro de cada Arco (d.a(n,np))

---- VAR d pipe diameter for each arc (m)

LOWER LEVEL UPPER MARGINAL

nw.cc 0.150 1.122 2.000 EPS


nw.w 0.150 0.619 2.000 .
nw.n 0.150 0.150 2.000 118.669
e .cc 0.150 0.150 2.000 101.751
e .s 0.150 0.734 2.000 .
e .se 0.150 0.464 2.000 .
e .n 0.150 0.691 2.000 .
cc.w 0.150 0.150 2.000 63.163
cc.sw 0.150 0.499 2.000 .
cc.s 0.150 0.150 2.000 53.775
cc.n 0.150 0.150 2.000 104.126
sw.w 0.150 0.150 2.000 50.786
s .sw 0.150 0.150 2.000 57.390
s .se 0.150 0.150 2.000 102.789
Msc. Alexandre Hitoshi Ito
Pressão em cada nó (n)

---- VAR h pressure at each node (m)

LOWER LEVEL UPPER MARGINAL

nw 6.500 18.406 +INF .


e 3.250 18.048 +INF EPS
cc 16.580 16.580 +INF 13.039
w 14.920 14.920 +INF 3.169
sw 12.925 12.925 +INF 9.837
s 12.260 12.925 +INF .
se 8.760 12.926 +INF .
n 16.080 16.080 +INF 7.300
Msc. Alexandre Hitoshi Ito
Vazão em cada reservatório (s)

---- VAR s supply at reservoir nodes (m**3 per sec)

LOWER LEVEL UPPER MARGINAL

nw . 1.923 2.500 .
e . 1.346 6.000 .

LOWER LEVEL UPPER MARGINAL

---- VAR pcost -INF 43.669 +INF .


---- VAR dcost -INF 492.502 +INF .
---- VAR wcost -INF 0.613 +INF .
---- VAR cost -INF 938.862 +INF .
---- VAR pen -INF 3.535 +INF .

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
Msc. Alexandre Hitoshi Ito
Vazão unitária (qb)

---- VAR qb

LOWER LEVEL UPPER MARGINAL

nw.cc . 1.000 1.000 EPS


nw.w . 1.000 1.000 EPS
nw.n . 1.000 1.000 EPS
e .cc . 1.000 1.000 EPS
e .s . 1.000 1.000 EPS
e .se . 1.000 1.000 EPS
e .n . 1.000 1.000 EPS
cc.w . 1.000 1.000 EPS
cc.sw . 1.000 1.000 EPS
cc.s . 1.000 1.000 EPS
cc.n . 1.000 1.000 EPS
sw.w . . 1.000 EPS
s .sw . 1.000 1.000 EPS
s .se . . 1.000 EPS
Msc. Alexandre Hitoshi Ito
Resumo do Relatório

**** REPORT SUMMARY : 0 NONOPT


0 INFEASIBLE
0 UNBOUNDED
0 ERRORS

Você também pode gostar