18 1 INTRODUÇÃO A Otimização é um processo de busca para a solução de problema que utiliza várias técnicas para chegar à solução mais eficaz. Com o início da Segunda Guerra Mundial, tornou-se essencial o planejamento de modo eficiente do uso de recursos escassos. A United States Air Force instituiu em 1947 o programa SCOOP ( Scientific Computation of Optimum Programs) envolvendo pesquisadores de várias áreas. Deste grupo de trabalho, participou George B. Dantzig, que se deparou com problemas de alocação de aeronaves para transporte de suprimentos e formulou o problema geral de programação linear em 1947. Em 1949, Dantzig propôs o “método simplex” como estratégia de resolução do problema de programação linear. A partir daí, muitos pesquisadores se envolveram com o assunto, passando a contribuir no desenvolvimento de resultados teóricos, métodos eficientes de codificação do algoritmo, novos algoritmos, aplicações, etc. O algoritmo do método simplex permaneceu até 1978 como única alternativa para implementação computacional eficiente para resolver problemas de programação linear. Khachian (1979) apud Porto et al (1997) publicou o algoritmo de elipsóides como alternativa ao simplex. Posteriormente, surge com Karmarkar (1984) apud Porto et al (1997), um algoritmo baseado em pontos interiores anunciando grandes vantagens computacionais para problemas de grande porte em relação ao simplex. Apesar disto, o simplex é utilizado até os dias de hoje pela maioria dos pacotes comerciais existentes. Com o passar do tempo, várias técnicas foram desenvolvidas para escolher a alternativa ótima, sendo as mais conhecidas: a programação linear, a programação não-linear, a programação dinâmica, a simulação e a utilização de algoritmo genético. As três primeiras não têm aplicação muito grande em casos reais de engenharia, mas são suficientes para garantir a viabilidade. A simulação é a técnica mais utilizada na prática e proporciona meios para o tratamento detalhado do comportamento dos sistemas, apesar de não ser otimizante. Os algoritmos genéticos adaptam conceitos da genética e da evolução para gerar um processo de otimização em engenharia. 19 Deve-se ao “ Harvard Water Resources Group ” a ação pioneira de introduzir este tipo de abordagem em planejamento e gestão de recursos hídricos. Os pesquisadores do programa criaram as bases da análise de sistemas de recursos hídricos, que consiste em dividir em 5 etapas qualquer problema de planejamento e operação de sistemas de recursos hídricos. As etapas são: a) definir os objetivos; b) formular as medidas quantitativas dos objetivos; c) gerar as alternativas de solução; d) quantificar as alternativas; e) selecionar a alternativa ótima. A otimização do controle operacional de redes hidráulicas é usualmente obtida através de programação linear com várias limitações, pois as equações que descrevem o escoamento não são lineares. As dificuldades para se otimizar redes hidráulicas não consistem apenas em transformar equações não-lineares em lineares, pois vários problemas adicionais devem ser considerados, tais como funções descontínuas que descrevem as condições de contorno relacionadas ao liga/desliga das bombas e também a ocorrência de condições limites na operação dos equipamentos (válvulas e bombas). Na área de recursos hídricos, o desequilíbrio entre oferta e demanda impõe ao engenheiro soluções cada vez mais elaboradas. À medida que o país cresce, os problemas relacionados com a água, como o abastecimento das cidades, transferência de água entre bacias hidrográficas e principalmente a escassez e a dificuldade de obtenção de recursos de capital para a construção de novas obras, exige que os sistemas existentes sejam cada vez mais eficientes. O controle operacional de redes hidráulicas para atender as demandas da população ao longo do dia é um problema que vem sendo pesquisado há várias décadas e até hoje as soluções utilizadas nem sempre são otimizadas, resultando em riscos de falhas no fornecimento de água. A proposição para esta pesquisa é desenvolver um modelo híbrido, que após calcular as cargas e as vazões para o regime permanente e para o regime extensivo, utiliza um algoritmo genético para otimizar o controle operacional de redes hidráulicas. O controle operacional de redes hidráulicas envolve várias variáveis que deverão ser controladas e otimizadas para se obter a maior eficiência na operação, tais como: 20 a) Nível d’água nos reservatórios O controle da variação do nível d‟água nos reservatórios é necessário, pois se o nível da água ultrapassar um valor máximo pré-determinado ocorrerá o transbordamento, ocasionando desperdício de água e se o nível ficar abaixo de um valor mínimo pré-determinado poderá ocorrer entrada de ar no sistema prejudicando a operação subseqüente. b) Níveis de pressão ao longo da rede Os níveis de pressão devem ser controlados nas redes hidráulicas primeiramente por questões de normativas exigindo que as pressões extremas ao longo da rede não sejam superiores e/ou inferiores a valores pré-determinados em normas técnicas. Além disto, pressões muito baixas comprometem o fornecimento e pressões muito altas podem provocar danos nas tubulações e interferem nas ligações domiciliares e respectivo sistema de distribuição. c) Número de manobras nas válvulas O consumo de água pela população ao longo do dia varia bastante, com horários de menor consumo e horários de maior consumo, ressaltando o horário de pico. Para se controlar a vazão de água durante as 24 horas do dia, de modo que se atenda às necessidades da população e utilizando-se a capacidade de transporte e reserva, usam-se as válvulas de controle. É necessário que se especifiquem as válvulas de controle reduzindo-se o número de manobras e controlando-se os riscos decorrentes dos transitórios hidráulicos. 21 d) Vazão de produção (ETA) A vazão na ETA igual à média do consumo de água diário deve ser mantida constante para se otimizar a qualidade. e) Instalação de bombas A instalação de bombeamentos (boosters com ou sem variador de rotação) é necessária para se manter o abastecimento e o controle das pressões, requerendo a definição de um esquema operacional pré-programado e auto-ajustável através de controladores lógicos. f) Manobras para evitar transitórios hidráulicos. O transitório hidráulico decorre das manobras na rede e deve ser controlado e, por tal, as manobras devem ser especificadas para garantir que a tubulação não sofra riscos de ruptura ou colapso. 22 2 REVISÃO DE LITERATURA 2.1 Técnicas de otimização Em geral, o modelo de otimização é constituído por uma função objetivo, que descreve o critério a ser adotado para o sistema, podendo ser de minimização ou maximização e comporta as “n” variáveis de decisão do problema. Além dela, existem também as várias funções de restrição, que descrevem o processo a ser analisado podendo ser restrições de igualdade ou de desigualdade e determinam a região viável (factível) das variáveis de decisão. Caso as restrições não existam, o problema de otimização é irrestrito. Além das variáveis já definidas, existem os parâmetros do modelo. O conjunto de valores das variáveis de decisão que satisfaz as funções de restrição e os parâmetros é a solução viável. A região viável é o conjunto formado por todas as soluções viáveis. Dentre as soluções viáveis, aquela que também satisfaz a função objetivo é a solução ótima. Existe também a otimização multiobjetivo, que utiliza mais de um critério (função objetivo). A função objetivo gera um resultado a partir de um conjunto de dados (parâmetros) de entrada. A função objetivo pode ser uma função matemática, um experimento, um jogo, etc. O objetivo é modificar o resultado de uma maneira desejável, buscando-se os valores apropriados para os parâmetros de entrada. Freqüentemente, a função objetivo é muito complicada de se definir. O usuário deve decidir quais parâmetros do problema são os mais importantes. O usuário deve ter em mente que determinar a função objetivo apropriada e decidir quais parâmetros usar são dois procedimentos intimamente relacionados. Existem várias classificações para o problema de otimização, dependendo da natureza da função objetivo e do conjunto de restrições (se existirem). O problema pode ser classificado em: a) linear x não-linear ; b) determinístico x não determinístico ; c) estático x dinâmico ; d) contínuo x discreto. Um problema de programação linear consiste de uma função objetivo, que é uma função linear das variáveis de decisão e todas as restrições lineares. Problemas de programação não-linear são representados por expressões não-lineares, que podem ser parte ou todas as restrições e/ou uma função objetivo não-linear. 23 Problemas determinísticos contêm parâmetros ou coeficientes que possuem valores perfeitamente determinados e conhecidos, enquanto problemas não determinísticos contêm parâmetros com incerteza, que são considerados variáveis aleatórias. Nos problemas estáticos, não aparecem as variáveis tempo e espaço, enquanto que os problemas dinâmicos envolvem o tempo e/ou o espaço. Nos problemas contínuos as variáveis podem assumir qualquer valor dentro de um intervalo contínuo de definição, enquanto que nos problemas discretos, as variáveis pertencem a um conjunto de valores não contínuo. Na classe dos problemas discretos, estão os problemas conhecidos como problemas de programação inteira, onde as variáveis assumem somente valores inteiros. Existe uma subclasse dos problemas de programação inteira, onde as variáveis são inteiras e só assumem os valores 0 e 1, que são conhecidos como problemas de programação inteira 0-1. 2.1.1 Programação linear (PL) A programação linear se volta para a minimização ou maximização de uma função linear com muitas variáveis sujeitas a restrições que são lineares e de igualdade. Apresentam-se a seguir dois métodos de PL. 2.1.1.1 Método gráfico O Método Gráfico é aplicado a problemas com duas variáveis, x1 e x2. As restrições devem ser lançadas em um gráfico bi-dimensional onde determinam regiões do plano x1, x2 cujos pontos são chamados viáveis. A interseção destes pontos determina a região viável, onde estará a solução ótima para o problema. A solução ótima será um dos vértices do polígono que forma a região viável. Para se descobrir a solução ótima, utiliza-se o gradiente da função objetivo. O gradiente é um vetor definido pelas derivadas parciais de primeira ordem das variáveis de uma função (x1, x2, ..., xn), caso esta as possua, e tem a propriedade de apontar para a direção e sentido de maior crescimento da função objetivo. Quando o problema é de minimização, deve-se caminhar no sentido contrário do gradiente. 24 2.1.1.2 Método simplex O Método Simplex consiste em um algoritmo projetado por George B. Dantzig, que basicamente toma a região delimitada pelas restrições (região viável) e analisa o crescimento ou a diminuição da função objetivo dentro dela. Para isto, o problema deve ser colocado dentro da forma padrão. Na vida real, os problemas quase sempre têm mais equações ou inequações que variáveis. No caso do Simplex, as inequações são transformadas em equações com o acréscimo de outras variáveis, que têm valor zero. Assim, define-se a forma padrão de um problema de PL. As variáveis zeradas do problema são chamadas de não-básicas e as demais de básicas. Com o problema na forma básica, monta-se o Tableau Simplex. Fazendo-se sucessivos pivotamentos de Gauss e promovendo-se a entrada e a saída das variáveis no grupo das não-básicas, chega-se à solução ótima. 2.1.2 Programação não-linear Problemas de programação não-linear são representados por expressões nãolineares, que podem ser parte ou todas as restrições e/ou uma função objetivo nãolinear. 2.1.2.1 Otimização analítica Estes métodos procuram determinar soluções ótimas resolvendo sistemas de equações com o apoio de derivadas. A otimização pode ser reduzida à procura das raízes destes sistemas. A Otimização Analítica não trabalha bem com parâmetros discretos e freqüentemente acha uma solução ótima local, além do mais, os problemas existentes no mundo real são muito complexos e pouco prováveis de serem resolvidos por estes métodos. Apresentam-se, a seguir, dois métodos. 25 2.1.2.1.1 Método do cálculo diferencial O cálculo pode ser utilizado para achar o ótimo de várias funções objetivo. No caso de haver um só parâmetro na função, o ponto ótimo é achado igualando-se a zero a derivada primeira de uma função objetivo que se queira otimizar e resolvendo a equação resultante para achar o valor do parâmetro. Se a derivada segunda da função objetivo for maior que zero, o ponto ótimo é um mínimo e se a derivada segunda for menor que zero, o ponto ótimo é um máximo. Quando há dois ou mais parâmetros na função objetivo, para se achar os pontos ótimos, iguala-se o gradiente da função a zero. Depois, as equações resultantes são resolvidas para se acharem os valores dos parâmetros. Finalmente, o Laplaciano da função é calculado. As raízes serão mínimas quando a matriz Hessiana for maior que zero. 2.1.2.1.2 Multiplicadores de Lagrange No século XVIII, Lagrange apresentou uma técnica para incorporar as restrições de igualdade na função objetivo. Este método encontra os extremos de uma função f(x,y,...) com restrições gm(x,y,...)=0, achando os extremos de uma nova M função F(x,y,...,1,2,...) = f(x,y,...) + λmgm(x,y,...). Então, quando os gradientes m 1 são tomados em termos dos novos parâmetros m, os limites são automaticamente satisfeitos. 2.1.2.2 Método de busca direta Os métodos de busca direta a “n” variáveis são constituídos pelos métodos iterativos. A idéia básica no método iterativo é, a partir de um valor inicial X0, caminhar sucessivamente através de iterações até o máximo (mínimo) da função f(x), que se quer otimizar. Nestes métodos, é importante dispor de um critério que indique se um novo ponto escolhido é melhor que o anterior. O valor da função objetivo f(xk) pode ser utilizado como critério que, no caso de minimização, implica f(xk+1)<f(xk), onde k é a iteração considerada. Na 26 maximização, f(xk+1)>f(xk).Todos os métodos podem ser colocados no seguinte algoritmo: Passo 1 - Teste de Convergência: caso o valor da função computada no passo K+1 não seja significativamente diferente do valor da função no passo anterior, o algoritmo para e xk é o vetor solução. Passo 2 - Cálculo da direção da busca: de acordo com um determinado método de cálculo, calcule a direção xk. Isto equivale a determinar os vetores unitários das direções de xk, dados ek, onde e é a direção. Passo 3 - Cálculo do comprimento do passo: determine qual ponto considerar ao longo da linha com direção dada pelo passo 2. Trata-se de determinar um incremento escalar xk tal que f(xk + xk *ek)<f(xk), no caso de cálculo mínimo, e f(xk + xk *ek)>f(xk), no caso de máximo. Passo 4 - Atualização do mínimo: faça xk+1= xk + xk *ek e volte ao passo 1. Existem várias técnicas que usam o Método de Busca Direta. Estas técnicas não garantem que a solução ótima global seja encontrada. A seguir apresentam-se duas técnicas. 2.1.2.2.1 Método da máxima descida O Método da Máxima Descida começa em um ponto arbitrário do espaço de soluções e minimiza ou maximiza ao longo da direção do gradiente, conforme o problema. Esta abordagem é bastante popular e foi originada com Cauchy em 1847. O método faz uso de um escalar não negativo que minimiza ou maximiza a função na direção do gradiente e se reduz gradativamente à medida que o ponto ótimo se aproxima. Por definição, o novo gradiente formado em cada iteração é ortogonal ao gradiente anterior. Se o vale ou a crista são estreitos, então o algoritmo salta de um lado para o outro por várias iterações antes de alcançar o ótimo. 27 2.1.2.2.2 Programação quadrática A Programação Quadrática é utilizada quando a função objetivo é quadrática (os parâmetros são representados ao quadrado) e as restrições são lineares. Esta técnica é baseada nos Multiplicadores de Lagrange e requer derivadas ou aproximações de derivadas. Existe também a programação quadrática recursiva que resolve o problema de programação quadrática a cada iteração para encontrar a direção para o próximo passo. 2.1.3 Programação dinâmica (PD) Em muitas situações, o problema de otimização em recursos hídricos é dado por uma seqüência de decisões que evoluem no tempo e no espaço. Exemplo típicos de evolução no tempo são o escalonamento de obras de um sistema de grande porte ou a operação de sistemas de reservatórios. O traçado de uma adutora que dispõe de um conjunto de possibilidades de ligar a captação até o centro consumidor é um exemplo de sistema que evolui no espaço. Em problemas de PD, o estado atual do sistema incorpora todas as informações prévias decorrentes das decisões tomadas no passado. Isto permite determinar a política ótima futura, independente do que já ocorreu. Esta propriedade é chamada de Propriedade Markoviana. Qualquer problema que não atenda esta propriedade, não pode ser resolvido por PD. Uma PD é composta por: função objetivo, função de transformação (mudança) de estado, equações de restrição e função recursiva. A função objetivo que descreve o critério a ser adotado para o sistema podendo ser de minimização ou maximização e comporta as “n” variáveis de decisão do problema. A função de transformação (mudança) de estado define a mudança de estado entre dois estágios. As equações de restrição descrevem o processo a ser analisado e determinam a região viável das variáveis de decisão. A função recursiva relaciona o ótimo de um estágio a outro. A PD tem a seguinte linha de raciocínio: a) divide-se o problema geral em estágios; b) determina-se o ótimo em cada estágio; c) relaciona-se o ótimo de um 28 estágio a outro através de uma função recursiva; d) percorrem-se todos os estágios para obter o ótimo global. Na PD, o ótimo global pode ser obtido nos dois sentidos: partindo-se do estágio final até o estágio inicial (PD regressiva) ou vice-versa (PD progressiva). Na PD, as funções objetivo e as restrições podem ser lineares, não-lineares e até mesmo descontínuas. Uma das vantagens da PD é que o trabalho computacional cresce de forma aproximadamente linear com o número de estágios, enquanto que em outras técnicas o crescimento é, geralmente, geométrico. Outra vantagem da PD é poder ser utilizada em um grande número de problemas de programação discreta. A desvantagem da PD é quando surgem situações nas quais o número de possibilidades que devem ser analisadas a cada estágio é muito grande. Neste caso, a busca do ótimo é bastante dificultada. A solução exige bastante memória e tempo de processamento do computador. Sistemas muito complexos exigem técnicas especiais para reduzir a dimensionalidade do problema. 2.1.4 Algoritmos genéticos (AG) Os algoritmos genéticos fazem parte dos algoritmos evolucionários e permitem que uma população composta de vários indivíduos evolua, sob regras de seleção específicas, para um estado que geralmente maximiza o ajuste da função objetivo (função de custo). O método foi desenvolvido por John Holland (1975) apud Haupt; Haupt (1998) durante os anos 60 e 70 e foi popularizado por um dos seus estudantes, David Goldberg, que resolveu um problema complexo envolvendo controle de transmissão de gasolina por dutos em sua dissertação de 1989. Os algoritmos genéticos têm algumas vantagens como poder fazer otimizações utilizando parâmetros contínuos ou discretos, não requerer informações de derivadas, pesquisar simultaneamente a partir de um grande número de amostras do espaço de soluções, poder lidar com um grande número de parâmetros, ser bem adequado para programação paralela, fornecer uma lista de parâmetros ótimos, ao invés de uma única solução, permitir a codificação dos parâmetros de modo que a otimização seja feita com os parâmetros codificados, otimizar parâmetros em espaços 29 de soluções extremamente complexos, podendo evitar um mínimo local e trabalhar com dados gerados numericamente, dados experimentais ou funções analíticas. Deve-se destacar que os algoritmos genéticos não são a melhor maneira para se resolver todo tipo de problema. Por exemplo, em problemas que contenham uma função analítica convexa bem comportada com poucas variáveis, os métodos tradicionais de otimização, como os métodos baseados no cálculo diferencial, são mais eficientes que os algoritmos genéticos. Entretanto, muitos problemas reais não caem nesta categoria. Em adição, alguns métodos podem encontrar a solução de maneira mais rápida que os algoritmos genéticos em problemas que não sejam globalmente complexos, ao menos no caso de se utilizar programação serial. Os algoritmos genéticos trabalham com uma população de possíveis soluções, junto com operadores genéticos (seleção, crossover e mutação) para produzir resultados mais adequados sucessivamente. Cada solução é representada por uma série de números (cromossomo). Cada cromossomo contém sub-séries ou genes, que são valores ou componentes que formam ou avaliam a função objetivo do problema. Os algoritmos genéticos começam por definir um cromossomo ou uma série de parâmetros a serem otimizados. A rotina dos AGs começa gerando uma população inicial aleatoriamente e calcula a adequação de cada indivíduo da população em relação à característica que se quer otimizar. Então a rotina seleciona os indivíduos mais aptos (geralmente os 50% com melhor adequação ou custo) desta população inicial. A partir daí, o algoritmo seleciona os indivíduos para cruzamento, podendo escolher entre várias técnicas, tais como: seleção proporcional, seleção aleatória, seleção aleatória ponderada e seleção por sorteio e cria descendentes através da aplicação de recombinação (crossover) e/ou mutação para os indivíduos selecionados. A partir daí, a rotina calcula a adequação destes descendentes e elimina os menos aptos para inserir os mais aptos na nova geração, formada pelos pais e pelos descendentes mais aptos selecionados. Se a população convergir, a rotina termina. Caso contrário, ela repete os passos descritos anteriormente. A maioria dos problemas de otimização requer constantes ou limites para os parâmetros (funções de restrição). Os AGs não são capazes de manejar restrições ou constantes, por isto, faz-se uso de uma função de penalidade. A função de penalidade evita que indivíduos que geram soluções não factíveis sejam selecionados, assim os 30 AGs se concentrarão nas soluções factíveis ou nas proximidades delas. Cabe ao usuário definir a função de penalidade de acordo com o problema que ele tiver em mãos. 2.1.4.1 Representação dos parâmetros Uma das maneiras de representar os parâmetros do problema é utilizar o código binário. O algoritmo genético binário trabalha com um número de parâmetros finito, mas normalmente muito grande. Esta característica torna o AG ideal para otimizar uma solução que está ligada a parâmetros que só podem assumir um número finito de valores. O AG trabalha com codificação binária, mas a função objetivo requer parâmetros contínuos, por isto, sempre que a função objetivo é avaliada, o cromossomo deve ser primeiro decodificado. Outra forma de representar os AGs é o código de Gray. Este código redefine os números binários de modo que dois números consecutivos (adjacentes) têm uma distância de Hamming de apenas um. A distância de Hamming é definida como o número de bits que diferem dois cromossomos. O código de Gray é usado para evitar variações muito grandes nos valores das variáveis entre as gerações e facilitar a convergência para uma boa solução, entretanto, este código pode deixar o AG de 10 a 20 % mais lento, dependendo da situação. Outra maneira de representar os parâmetros do problema é representar os parâmetros utilizando números reais que fiquem entre os limites estabelecidos. Neste tipo de representação os parâmetros são contínuos e por isto podem assumir qualquer valor. Apesar disto, os computadores digitais representam os números com um número finito de bits e utilizam a sua precisão interna para definir a precisão dos parâmetros contínuos. Portanto, o AG fica com a precisão limitada ao erro de arredondamento do computador. Este tipo de representação tem a vantagem de requerer menos memória do computador para armazenar dados. 31 2.1.4.2 População inicial O algoritmo genético começa com um grande número de cromossomos, os quais formam a população inicial. Esta população é representada por uma matriz preenchida com números entre zero e um, gerados aleatoriamente e arredondados para o inteiro mais próximo (0 ou 1), onde cada linha representa um cromossomo e cada coluna do cromossomo representa um bit. Após isto, os parâmetros são passados para a função objetivo para avaliação. Uma população grande fornece uma boa amostra do espaço de pesquisa para o AG, mas pode prejudicar bastante a eficiência dele. Normalmente, apenas uma parcela da população inicial participa da parte iterativa do AG. No caso de se representarem os parâmetros com números reais, a população inicial é representada por uma matriz, onde cada linha é composta por uma série de parâmetros contínuos. Os elementos da matriz são números entre 0 e 1 gerados aleatoriamente multiplicados pela diferença entre o maior valor e o menor valor permitidos no intervalo do parâmetro, sendo este resultado somado ao menor valor permitido no intervalo do parâmetro. Quando a população inicial é muito grande para passar pelo processo iterativo do AG, uma parte da população é descartada. Primeiro, o AG calcula a adequação de cada indivíduo e os coloca em ordem decrescente (do mais adequado para o menos adequado), então, os menos adequados são descartados (normalmente 50%) e apenas os melhores farão parte da população para participar das iterações na rotina do AG. Na hora da iteração, apenas uma parte destes melhores indivíduos (50%) é selecionada para fazer parte do grupo de reprodução, a outra metade destes melhores indivíduos é descartada. Este processo se repete a cada iteração. Como exemplo, suponhamos que uma população inicial de 80 indivíduos é considerada muito grande por algum critério, portanto, apenas os 40 melhores indivíduos são mantidos na população para participar do processo iterativo. Neste processo, apenas os 20 melhores farão parte do grupo de reprodução, enquanto que os 20 piores serão descartados. Os 20 melhores irão produzir 20 descendentes e a população voltará a ter 40 indivíduos. Novamente, apenas os 20 melhores farão parte do grupo de reprodução da próxima iteração e assim por diante. 32 Uma outra forma de selecionar os cromossomos para reprodução consiste em definir algum princípio de sobrevivência. Todos os cromossomos que não alcançarem este princípio de sobrevivência são descartados. Caso todos os cromossomos sejam descartados, uma nova população inicial é criada para achar cromossomos que passem no teste. Esta técnica tem como característica, a vantagem de não necessitar que a população seja classificada, como no caso anterior. 2.1.4.3 Seleção Na seleção, dois indivíduos são selecionados do grupo de reprodução para produzir dois novos descendentes. A seleção dos indivíduos continua até que haja descendentes suficientes para a população voltar ao seu tamanho original. A seleção dos indivíduos pode ser escolhida entre várias técnicas, tais como: a) Seleção proporcional Nesta seleção, o algoritmo classifica os cromossomos de acordo com sua adequação em ordem decrescente e escolhe os pares de cromossomos para reprodução de dois em dois do início para o final. Assim, o algoritmo escolhe o melhor e o segundo melhor, o terceiro melhor e o quarto melhor e assim por diante. Esta técnica não modela a natureza de forma adequada e não mantém a diversidade populacional. b) Seleção aleatória Esta técnica utiliza um gerador de número aleatório uniforme para selecionar os cromossomos. Os cromossomos são classificados de acordo com sua adequação e dois números aleatórios são gerados para escolher dois indivíduos para reprodução. Nesta técnica, o algoritmo gera uma quantidade de números aleatórios entre 0 e 1 igual ao número de indivíduos do grupo de reprodução. A partir daí, estes números gerados são multiplicados pelo número de indivíduos do grupo de reprodução e os resultados são arredondados para o teto dos números inteiros mais próximos 33 correspondentes. Estes resultados finais fornecem números inteiros que correspondem aos cromossomos selecionados para reprodução, que são pegos de dois em dois na ordem em que foram gerados. c) Seleção aleatória ponderada Esta técnica designa probabilidades para os indivíduos do grupo de reprodução de acordo com as suas funções objetivo. O cromossomo com o maior valor da função objetivo tem a maior probabilidade de ser selecionado para reprodução e vice-versa. Um número aleatório define qual cromossomo é selecionado. Esta técnica é mais conhecida como seleção por mecanismo de roleta. Uma maneira de se usar esta técnica é calcular a probabilidade através da posição do cromossomo no grupo de reprodução. Cada cromossomo do grupo de reprodução recebe um número inteiro “n”, a partir de 1, para designar sua posição no grupo, começando do mais apto. Para se calcular a probabilidade “Pn” do cromossomo, pega-se o número de cromossomos que compõem o grupo de reprodução “Nrep” acrescido de um e subtrai-se o número (“n”) da posição do cromossomo no grupo. Este valor é dividido pelo somatório dos números das posições de todos os cromossomos do grupo de reprodução, conforme eq.(1). Utilizam-se as probabilidades acumuladas de cada cromossomo para selecioná-los. A partir daí, gera-se uma quantidade de números aleatórios entre 0 e 1 igual ao número de indivíduos do grupo de reprodução. Começando-se do início para o final, o primeiro cromossomo com uma probabilidade acumulada maior que o primeiro número gerado é escolhido para reprodução e assim por diante até que todos os números gerados sejam testados. Neste processo, um mesmo cromossomo pode ser escolhido mais de uma vez. Se por acaso, um cromossomo faz par com ele mesmo, pode-se ignorar este fato ou pegar um outro cromossomo aleatoriamente. A aleatoriedade desta técnica está mais de acordo com a natureza. 34 Pn N rep n 1 N rep (1) n n 1 Outra maneira de se usar esta técnica é calcular a probabilidade através da adequação do cromossomo no grupo de reprodução. Uma adequação normalizada “An” é calculado para cada cromossomo, subtraindo o maior valor da adequação do cromossomo descartado “ANrep” do valor de adequação “An” de cada cromossomo do grupo de reprodução. A probabilidade “Pn” para cada cromossomo é calculada pelo módulo da divisão da adequação normalizada pelo somatório de todas as adequações normalizadas “Ap” dos cromossomos do grupo de reprodução. Utilizam-se as probabilidades acumuladas de cada cromossomo para selecioná-los. A partir daí, gera-se uma quantidade de números aleatórios entre 0 e 1 igual ao número de indivíduos do grupo de reprodução. Começando-se do início para o final, o primeiro cromossomo com uma probabilidade acumulada maior que o primeiro número gerado é escolhido para reprodução e assim por diante, até que todos os números gerados sejam testados. Pn An N rep Ap (2) p 1 Figura 1 – Seleção aleatória ponderada 35 d) Seleção por sorteio Esta técnica imita de perto a competição na natureza. Nesta técnica, o algoritmo pega um sub-conjunto de cromossomos do grupo de reprodução e o indivíduo com a melhor adequação neste sub-conjunto se torna um pai. O número de sorteios é igual ao número de cromossomos existentes no grupo de reprodução. Os sub-conjuntos têm geralmente dois cromossomos. Os sorteios selecionam o subconjunto de cromossomos do grupo de reprodução aleatoriamente. Na seleção por sorteio a população não precisa ser classificada como nas outras técnicas. Cada sistema de seleção resulta em diferentes conjuntos de pais, portanto, os descendentes também são diferentes. Dependendo do problema, um sistema trabalha melhor que o outro e cabe ao usuário decidir qual usar. 2.1.4.4 Recombinação A recombinação (crossover) é a criação de um ou mais descendentes a partir dos cromossomos (pais) selecionados no processo de seleção. A recombinação é a primeira maneira do AG explorar o espaço de soluções. A constituição genética da população é limitada pelos membros em curso da população e ajuda o AG a convergir. A forma mais comum de recombinação utiliza dois pais para produzir dois descendentes. Normalmente, a porcentagem de recombinação na população de 50 a 95% por iteração. Os método mais simples para se fazer as recombinações é escolher um ou mais pontos nos cromossomos pais e fazer o intercâmbio entre as partes de cada cromossomo. Uma maneira de se fazer a recombinação é escolher um ponto aleatoriamente entre o primeiro e o último bit dos cromossomos dos pais. Em primeiro lugar, o primeiro e o segundo pai passam seus códigos binários à esquerda do ponto escolhido para o primeiro e o segundo descendentes respectivamente. Depois, o primeiro pai passa seu código binário à direita do ponto escolhido para o segundo descendente e o segundo pai passa seu código para o primeiro descendente. Assim, os descendentes contêm porções dos códigos binários dos dois pais. Como cada par 36 de pais do grupo de reprodução produz dois descendentes, a população de cromossomos volta ao seu tamanho original. Pai1 00100110011101 Pai2 01010110000100 Descendente1 00100110000100 Descendente2 01010110011101 Pode-se fazer também a recombinação escolhendo-se aleatoriamente dois pontos nos cromossomos pais. Os pais trocam os bits entre estes dois pontos de intercâmbio. Como alternativa, pode-se escolher aleatoriamente uma das três partes do cromossomo para fazer as trocas de bits. Pai1 00101011000110 Pai2 01111100001100 Descendente1 00111100000110 Descendente2 01101011001100 Outro esquema de recombinação envolve três pais e dois pontos de intercâmbio. Com este esquema, forma-se um total de 18 descendentes, embora não seja necessário gerar todos. O usuário pode escolher quantos descendentes serão gerados. Uma outra maneira de se fazer a recombinação é percorrer todos os pontos dos cromossomos pais e escolher aleatoriamente qual pai irá contribuir com seu parâmetro para cada posição dos cromossomos descendentes. Para isto, uma máscara aleatória é gerada. Esta máscara é um vetor aleatório de zeros e uns e tem o mesmo comprimento dos pais. Quando o bit na máscara é 0, o bit correspondente no primeiro pai passa para o primeiro descendente e o bit correspondente no segundo pai passa para o segundo descendente. Quando o bit na máscara é 1, o bit correspondente no primeiro pai passa para o segundo descendente e o bit correspondente no segundo pai passa para o primeiro descendente. Este tipo de recombinação é conhecido como recombinação uniforme. 37 Pai1 00101011000110 Pai2 01111100001100 Máscara 00110110001110 Descendente1 00111101001100 Descendente2 01101010000110 O problema com as recombinações baseadas na escolha de pontos é que nenhuma informação nova é introduzida. Os parâmetros gerados aleatoriamente na população inicial são passados para a próxima geração em combinações diferentes. Esta estratégia funciona bem para representações binárias, mas no caso da representação com números reais, as informações são apenas trocadas entre os pontos escolhidos. Para superar este problema, faz-se uso da recombinação misturada. A recombinação misturada encontra maneiras de combinar os valores dos parâmetros dos dois pais para formar um novo parâmetro nos descendentes. Uma maneira de se fazer isto é escolher aleatoriamente um parâmetro qualquer em cada par de cromossomos pais para ser o ponto de intercâmbio. Depois, os parâmetros escolhidos são combinados para formar novos parâmetros que estarão presentes nos descendentes. Por fim, completa-se a recombinação com o resto do cromossomo.Esta combinação pode ser feita de várias maneiras, como por exemplo: Pai1=[Ppai1 Ppai2 ... Ppai ... Ppaifinal] Pai2=[Pmãe1 Pmãe2 ... Pmãe ... Pmãefinal] Pnovo1= Ppai+ (Pmãe - Ppai) Pnovo2= Pmãe - (Pmãe - Ppai) onde: Pnovo1= novo parâmetro para o descendente um; Pnovo2= novo parâmetro para o descendente dois; Ppai= parâmetro proveniente do pai; Pmãe= parâmetro proveniente da mãe; = número entre zero e um gerado aleatoriamente. 38 Descendente1=[Ppai1 Ppai2 ... Pnovo1 ... Pmãefinal] Descendente2=[Pmãe1 Pmãe2 ... Pnovo2 ... Ppaifinal] O valor de pode ser o mesmo para todos os parâmetros ou pode-se gerar um valor de diferente para cada parâmetro. Quando o primeiro parâmetro do cromossomo é selecionado para ponto de intercâmbio, somente os parâmetros à sua direita fazem intercâmbio. Quando o último parâmetro do cromossomo é selecionado para ponto de intercâmbio, somente os parâmetros à sua esquerda fazem intercâmbio. O número de parâmetros a serem selecionados para a mistura de informações fica a cargo do usuário, podendo até conter todos os parâmetros dos cromossomos pais. 2.1.4.5 Mutação As mutações alteram uma pequena porcentagem dos bits dos cromossomos. As mutações são a segunda maneira do AG explorar o espaço de soluções. As mutações introduzem características não presentes na população original e evita que o AG faça a convergência muito rápida. A mutação em um ponto muda de 1 para 0 ou vice-versa. Os pontos de mutação são selecionados aleatoriamente entre os bits da população. Normalmente, de 1 a 5% dos bits sofrem mutação a cada iteração. As mutações não ocorrem na última iteração. Para se evitar que os melhores indivíduos sofram mutações, pode-se usar uma técnica chamada Elitismo. Esta técnica consiste em nunca substituir os melhores indivíduos da população, mas o elitismo pode gerar uma rápida convergência. O elitismo não faz a população escapar de um ótimo local. A maioria das mutações aumenta a adequação do cromossomo. Uma diminuição ocasional do custo aumenta a diversidade e fortalece a população. As mutações ajudam a explorar o espaço de soluções, porque elas saem da rota de convergência para outros territórios. Para a representação com números reais, multiplica-se a taxa de mutação pelo número de parâmetros total da população para definir quantos parâmetros sofrerão mutação. Depois, números aleatórios são gerados para escolher a linha e a coluna dos parâmetros que sofrerão mutação. Os parâmetros escolhidos são apagados e 39 substituídos por um novo número aleatório gerado entre os limites de variação do parâmetro. 2.1.4.6 A geração seguinte Depois que as recombinações e as mutações acontecem, as adequações dos descendentes e dos cromossomos que sofreram mutação são calculadas. A seguir, o AG classifica a população segundo as adequações dos indivíduos e seleciona os que farão parte do grupo de reprodução. Depois que estes indivíduos passam pela seleção, recombinação, mutação e classificação das suas adequações, a geração seguinte é formada e assim por diante até a convergência. 2.1.4.7 Convergência O número de gerações que evoluem depende se uma solução aceitável foi alcançada ou se um número estabelecido de iterações foi excedido. Após um período de tempo, todos os cromossomos e suas adequações seriam iguais se não fosse pelas mutações. São elas que mantêm a diversidade genética da população. Quando a diversidade genética não varia ou varia muito pouco, o AG deve parar. A maioria dos AGs presta atenção às estatísticas da população através da análise da adequação média da população, desvio padrão e melhor adequação. Qualquer uma destas ou uma combinação delas pode servir como teste de convergência. 2.2 Análise de bibliografia relevante sobre técnicas de otimização A análise do regime permanente em redes hidráulicas é um problema de grande importância na engenharia. As equações hidráulicas básicas que descrevem o fenômeno não são lineares e podem ser resolvidas iterativamente. Estas equações básicas, que governam o escoamento do fluido em uma rede hidráulica são a equação da conservação de massa e a equação da energia. 40 Vários algoritmos foram desenvolvidos para resolver estas equações e apesar de poderem ser usados no projeto global de uma rede hidráulica, eles são geralmente formulados para fornecer as vazões e pressões para características de redes específicas e assim não fornecem informações de projeto diretamente. Como resultado, vários autores têm empregado várias técnicas de otimização no desenvolvimento de algoritmos de projeto geral. Em geral o objetivo da maioria das técnicas de otimização é a minimização dos custos. A despeito do grande número de algoritmos que tem sido desenvolvidos, nenhum deles foi totalmente aceito ou tem sido largamente aplicado em execuções de projetos de redes hidráulicas. Isto é devido, em parte, à grande complexidade das técnicas requeridas para otimizar as soluções. Epp; Fowler (1970) desenvolveram um programa de computador para a solução de redes de água em escoamento permanente. O programa introduziu um algoritmo para a minimização da largura de banda da matriz dos coeficientes através da numeração automática dos anéis e utilizou outros algoritmos para definir os anéis das malhas de forma a reduzir o número de equações a serem resolvidas e estimar as vazões iniciais. Epp; Fowler (1970) utilizaram o método de Newton-Raphson aplicado aos anéis da malha para a resolução do sistema de equações não-lineares. O programa foi utilizado para uma grande variedade de redes de água e alcançou uma boa convergência em todas, inclusive em redes nas quais o método de Hardy Cross e o método de Newton-Raphson aplicado aos nós foram utilizados e não alcançaram a convergência. Wood; Charles (1972) propuseram resolver problemas de redes hidráulicas usando um método linear. Como as equações de energia são não-lineares, eles propuseram aproximar o valor da perda de carga da seguinte maneira: hLi= Ki.Qi0a-1.Qi= Ki‟. Qi onde: hLi= perda de carga para um tubo i da malha; Ki= constante do tubo i; Qi0= vazão no tubo i no instante de cálculo anterior; Qi= vazão no tubo i no instante de cálculo atual; 41 a= expoente de perda de carga, empírico normalmente, variando entre 1,8 e 2,0. Este método tem a vantagem de não necessitar estimar vazões iniciais para cada tubo, a convergência para os resultados finais é muito rápida e foi assegurada para todos os casos testados, o método pode ser aplicados para redes malhadas e ramificadas e o método não exige uma programação complexa. Wood; Rayes (1981) testaram cinco métodos para resolver as equações que governam as redes hidráulicas para 51 sistemas de redes e 91 situações diferentes. Três métodos (Método de Ajuste Único do Trecho, Método de Ajuste Simultâneo dos Trechos e Método Linear) utilizaram as equações de malha (escritas em termos dos fluxos desconhecidos nos tubos) e dois métodos (Método de Ajuste Único do Nó e Método de Ajuste Simultâneo dos Nós) utilizaram as equações dos nós (escritas em termos da carga total em cada nó do sistema de tubos). Wood; Rayes (1981) concluíram que o Método Linear e o Método de Ajuste Simultâneo dos Trechos alcançam uma boa convergência com poucas iterações, boa precisão e podem ser aplicados na resolução das equações das redes hidráulicas se informações relativamente seguras a respeito da rede são fornecidas. O Método de Ajuste Único do Trecho, o Método de Ajuste Único do Nó e o Método de Ajuste Simultâneo dos Nós apresentaram vários problemas significativos de convergência e os resultados não são confiáveis, apesar de que são grandemente utilizados para resolver os problemas de redes hidráulicas. Os autores aconselham que se tenha bastante cuidado ao se utilizar um destes três métodos. Ormsbee; Wood (1986) propuseram uma técnica alternativa para o problema do projeto de redes hidráulicas. Eles remodelaram o conjunto básico de equações de redes hidráulicas realçando um ou mais parâmetros de projeto como variáveis desconhecidas e especificando condições alternativas, como por exemplo, especificar a velocidade global de escoamento no caso de se realçar somente um parâmetro de projeto ou introduzir equações de energia ou continuidade adicionais no caso de se realçar mais de um parâmetro de projeto. Ormsbee; Wood (1986) propuseram um algoritmo que utilizou uma expansão truncada da série de Taylor para linearizar as equações da energia e da continuidade 42 para cada tubo da rede. Este método é uma versão modificada do método linear proposto por Wood; Charles (1972). Jowitt; Xu (1990) desenvolveram um algoritmo para a determinação dos valores das aberturas de válvulas de controle de fluxo para minimizar os vazamentos. É sabido que os vazamentos em algumas redes de distribuição de água são responsáveis por quantidades significativos da água colocada para abastecimento. Para algumas redes urbanas antigas, taxas de até 50% são citadas, sendo que taxas médias de 25% são típicas. Taxas tão altas de vazamento representam perdas econômicas de monta. Sabe-se que os vazamentos de água em uma rede de distribuição de água são diretamente relacionado à pressão de serviço do sistema. As pesquisas anteriores para determinação dos valores das aberturas das válvulas para reduzir as pressões na rede e conseqüentemente os vazamentos, formularam o problema de modo a minimizar as sobrepressões do sistema sujeitas às constantes operacionais do sistema. Algumas destas abordagens tentaram resolver o problema sem considerar diretamente o vazamento dentro do modelo da rede. Mais recentemente, Germanopoulos; Jowitt (1989) apud Jowitt; Xu (1990) incorporaram componentes de vazamento dependentes de pressão explicitamente dentro do modelo do sistema. O artigo pesquisado teve a originalidade de apresentar um algoritmo que estende o trabalho de Germanopoulos; Jowitt (1989) apud Jowitt; Xu (1990) por procurar minimizar os vazamentos do sistema diretamente ao invés de simplesmente minimizar as sobrepressões do sistema. As avaliações dos potenciais benefícios econômicos foram feitas com comparações dos volumes de vazamento em casos de sistemas de água controlados e não controlados. As equações hidráulicas básicas não-lineares da rede, que descrevem as cargas nos nós e as vazões nos elementos, foram escritas em termos que explicitamente mostram o vazamento dependente de pressões e em termos que modelam o efeito das ações das válvulas. Estas equações foram linearizadas pelo método desenvolvido por Wood; Charles (1972), o que permitiu o desenvolvimento de um programa linear de mínimo vazamento para resolver o problema de controle de válvula. O método de linearização desenvolvido por Wood; Charles (1972) é iterativo. O processo iterativo termina quando a máxima discrepância entre as vazões 43 do instante de cálculo e do instante anterior for menor que um valor de tolerância especificado. O problema de programação linear foi resolvido utilizando o método simplex revisado. Para mostrar o desempenho do método proposto no artigo, Jowitt; Xu (1990) usaram uma rede de água utilizada por outros autores em outros trabalhos. As operações das válvulas determinadas pelo algoritmo de otimização desenvolvido no artigo reduziram os vazamentos na rede principalmente durante a noite, quando o consumo é menor e as pressões tendem ser maiores. Durante o período de demanda de pico, a redução dos volumes de vazamento foi marginal. A redução global no vazamento foi por volta de 20%. A pesquisa teve como pontos altos utilizar um plano de controle para um período de 24 horas, que foi desenvolvido para simular o caráter dinâmico de uma rede real, além disto, as variações dos níveis dos reservatórios foram representadas indicando a prática usual de encher os reservatórios através de bombeamento durante a noite por ser mais barato. Um outro aspecto, é que a linearização dos termos que representam as ações das válvulas usada no artigo é diferente da que foi usada por Germanopoulos; Jowitt (1989) apud Jowitt; Xu (1990) e isto levou a uma solução mais eficiente para o problema. No artigo lido, a equação que representa a ação da válvula incorpora o valor da constante de abertura desta na iteração anterior à presente. O desempenho relativo dos dois métodos de linearização foram comparados através da máxima discrepância entre a vazão e o vazamento em iterações consecutivas e o método proposto pelo artigo leva a uma convergência melhor. O artigo também levou em conta que a minimização dos vazamentos na rede não poderia interromper a continuidade do abastecimento aos consumidores. Para isto, foi incorporado ao programa linear restrições exigindo que as cargas nos nós se mantivessem acima de valores mínimos especificados. A pesquisa teve como pontos baixos utilizar a equação de Hazen-Williams para relacionar as vazões e as perdas de carga. Esta equação não é realmente válida para os regimes de escoamento existentes e além disto, hoje em dia ela não é muito utilizada. A pesquisa desenvolvida utilizou uma equação que relaciona o vazamento com a pressão média de serviço baseada em dados experimentais, o que reduz a aplicabilidade do algoritmo, pois em outras circunstâncias a equação não representa a 44 realidade. Além disto, a maioria das redes de distribuição de água não tem uma relação vazamento-pressão calibrada disponível. O algoritmo também não levou em conta a locação das válvulas. Perera; Codner (1996) desenvolveram uma metodologia genérica usando programação dinâmica estocástica (PDE) para determinar as regras de operação em termos de metas de funcionamento dos reservatórios para sistemas urbanos de suprimento de água. A PDE foi usada porque além de produzir teoricamente a solução ótima global, ela considera a distribuição de probabilidade teórica para os fluxos de água no sistema. A metodologia foi aplicada ao sistema urbano de suprimento de água de Melbourne na Austrália. A PDE é usada para determinar a operação ótima de um sistema urbano de suprimento de água com vários reservatórios. A operação ótima produz volumes de armazenamento no final de um período para vários estados de afluência e armazenamento no início do período. Estes volumes de armazenamento no final do período são analisados para deduzir as curvas de armazenamento alvo. Neste artigo, as curvas de armazenamento alvo são apresentadas como uma distribuição de probabilidade para cada armazenamento total do sistema que pode ser descrita pela média (chamada de curva de armazenamento alvo) e o desvio padrão de volumes de armazenamento individuais. As curvas de armazenamento alvo especificam a distribuição espacial dos volumes de armazenamento de cada reservatório dentro de um sistema de vários reservatórios. Elas podem ser um conjunto de curvas para um ano ou curvas diferentes para cada estação do ano. Para ilustrar o conceito de curva de armazenamento alvo, vamos considerar um sistema com dois reservatórios. Para um dado armazenamento total do sistema At em um dado período, as curvas de armazenamento alvo especificam os volumes de armazenamento nos reservatórios 1 e 2 como A1 e A2 respectivamente, onde a soma de A1 e A2 é igual a At. As curvas de armazenamento alvo são definidas para todo o intervalo de armazenamento total do sistema, fornecendo os volumes de armazenamento preferenciais de reservatórios individuais, podendo ser ótimos ou não. Existe uma região factível para as curvas de armazenamento alvo, que é igual à diferença entre a capacidade máxima de 45 armazenamento total do sistema e a capacidade máxima de armazenamento do reservatório. A interpretação das curvas de armazenamento alvo é importante para entender como a água é armazenada em um sistema com vários reservatórios, quando a afluência durante um passo da simulação é maior que a demanda ou vice-versa. Por causa do excesso (falta) de água (diferença entre a afluência e a demanda no sistema total ou entre a demanda e a afluência), o armazenamento total do sistema aumenta (diminui) e as curvas de armazenamento alvo determinam onde este excesso (falta) de água deverá ser armazenado (distribuído). Isto é explicado pela comparação do gradiente da curva de armazenamento alvo de um reservatório com o da curva de armazenamento total. Um programa foi desenvolvido para determinar as curvas de armazenamento alvo para sistemas urbanos de suprimento de água com qualquer configuração. Para isto, um programa utilizando a teoria de Programação Linear (PL) foi utilizado para calcular a distribuição da água no sistema a partir das afluências fornecidas, as demandas e o armazenamento inicial e final nos reservatórios. Este programa utilizou uma função objetivo de minimização do custo total sujeita às restrições de capacidade de transporte de água nos tubos. Depois o programa desenvolvido utilizou a PDE e proveu a operação ótima para uma versão simplificada do sistema urbano de água de Melbourne e os resultados foram usados para deduzir as curvas de armazenamento alvo. A PDE utilizou a maximização da confiabilidade volumétrica, que é definida como a relação entre o volume total fornecido em um período de tempo pelo volume total de água demandado no mesmo período, como função objetivo sujeita às restrições do sistema. Maximizar a confiabilidade volumétrica reduz os déficits de demanda. Anteriormente, a confiabilidade volumétrica anual mostrou ser uma função objetiva satisfatória para determinar a operação ótima de sistemas de abastecimento de água urbanos (Perera (1985); Perera; Codner (1985) apud Perera; Codner (1996)). Os autores utilizaram dois métodos, a adoção da correlação cruzada dos fluxos de água e a aproximação corredor, para melhorar a eficiência computacional. Como foi dito anteriormente, a operação ótima produz volumes de armazenamento no final de um período para vários estados de afluência e 46 armazenamento no início do período. Identificar e eliminar os estados infactíveis ou improváveis, reduz o esforço computacional. Isto é possível quando os fluxos de água tem uma alta correlação cruzada. Foi estudado que se o fluxo de água está em um local em um intervalo i, então o fluxo de água nos outros lugares estarão dentro dos intervalos (i N) com 90% de certeza e N é 25% do número de intervalos do fluxo de água no local i. Os intervalos do fluxo de água foram definidos baseando-se no critério de probabilidade igual, considerando cada seqüência histórica do fluxo de água como uma série independente. Isto se chama adoção da correlação cruzada dos fluxos de água. A aproximação corredor foi desenvolvida com base no método de programação dinâmica diferencial discreta de Heidari et al (1971) apud Perera; Codner (1996). Se um estado de afluência e de armazenamento é necessário para otimizar a função objetivo em um estágio, um armazenamento inicial é selecionado para o estágio anterior. Um corredor é colocado ao redor do volume de armazenamento inicial e a otimização é realizada com respeito às possíveis combinações do armazenamento inicial dentro do corredor, considerando todos os intervalos do fluxo de água no estágio anterior. O volume de armazenamento que fornece o valor ótimo do estado dentro do corredor é comparado com o volume de armazenamento inicial. Se eles são diferentes, o novo volume de armazenamento é considerado como o novo volume de armazenamento inicial e o procedimento é repetido. Se os volumes de armazenamento são os mesmos, o valor ótimo para este estado é alcançado e o procedimento é realizado para outros estados do sistema. A pesquisa teve como pontos altos desenvolver um programa geral, que pode ser aplicado a qualquer configuração de sistema, além disto, o programa utilizou uma nova função objetivo e modificou a relação recursiva que é utilizada pela PDE para os sistemas urbanos de suprimento de água. Outro ponto, é que as curvas de armazenamento alvo obtidas ficaram logicamente corretas em termos de distribuição temporal e espacial do fluxo de água no sistema e a demanda do sistema. A pesquisa teve como pontos baixos usar uma versão simplificada do sistema urbano de suprimento de água de Melbourne e com isto não obteve o ótimo global para o sistema verdadeiro, além disto, a aproximação corredor não foi testada com outras funções objetivo. 47 Dandy; Simpson; Murphy (1996) desenvolveram uma formulação aperfeiçoada de algoritmo genético para otimização de redes hidráulicas. O AG usa uma escala de potência variável da função de ajuste. O expoente introduzido na função de ajuste cresce em magnitude à medida que o computador realiza os cálculos com o AG. Foi introduzido um operador de mutação de adjacência e foi utilizado o código Gray para representar o conjunto de variáveis que compõem o projeto de uma rede hidráulica. Os resultados da nova formulação foram comparados aos da formulação tradicional para o problema dos túneis de Nova York. Os resultados mostraram que o novo AG se desempenhou significativamente melhor que o tradicional. O novo AG levou a uma solução melhor que os métodos tradicionais anteriormente usados como a programação linear, a programação dinâmica, a programação não-linear e o método de pesquisa enumerativa. Reis; Porto; Chaudhry (1997) testaram um algoritmo genético para a locação de válvulas de controle e suas aberturas em uma rede de abastecimento de água para obter a máxima redução de vazamento para níveis de reservatório e demandas nodais dadas. Foi mostrado que as válvulas otimamente locadas em uma rede são muito mais efetivas em produzir uma redução máxima do vazamento. Reis; Porto; Chaudhry (1997) simularam vários padrões de demanda e concluíram que o vazamento em uma rede com válvulas otimamente locadas é praticamente independente da demanda total. Um estudo do efeito da variação de demandas na locação ótima das válvulas indicou várias combinações de locações das válvulas para os diferentes padrões espaciais de demandas nodais e para diferentes demandas totais. Savic; Walters (1997) desenvolveram um modelo de computador chamado GANET que envolve aplicação de AG para o problema de mínimo custo para projetos de redes de abastecimento de água. Para mostrar a capacidade do GANET, os autores resolveram três problemas anteriormente publicados e descobriram inconsistências nas predições do desempenho da rede causadas pelas diferentes interpretações do método de Hazen-Williams adotado nos estudos anteriores. Wardlaw; Sharif (1999) exploraram o potencial de formulações alternativas dos algoritmos genéticos aplicadas a sistemas de reservatórios e a problemas de horizonte finito determinístico em particular. 48 Os AGs podem ser estabelecidos de muitas maneiras, mas até agora há pouca informação na literatura a respeito do tipo de formulação mais apropriada para sistemas de reservatórios. Este artigo se volta para esta oportunidade através da aplicação de AGs ao bem conhecido problema dos quatro reservatórios Larson (1968) apud Wardlaw; Sharif (1999). Este problema se tornou um marco para algoritmos de otimização de sistemas de recursos de água. Este problema dos quatro reservatórios já foi resolvido por Esat; Hall (1994) apud Wardlaw; Sharif (1999) através de AG, mas este artigo estendeu o trabalho de Esat; Hall (1994) apud Wardlaw; Sharif (1999) por considerar várias abordagens diferentes para a formulação do AG, junto com um intervalo de análise de sensibilidade. O artigo também considerou o potencial do AG em operações de reservatórios em tempo real com previsões estocásticas de entrada de água. O AG também foi aplicado ao problema dos quatro reservatórios com horizonte de tempo estendido, a um problema com dez reservatórios e ao problema dos quatro reservatórios utilizando equacionamento não-linear. No problema dos quatro reservatórios, os fornecimentos de água do sistema são usados para irrigação e geração hidrelétrica. A geração hidrelétrica é possível para cada reservatório e todas as descargas passam através das turbinas. A defluência do reservatório quatro pode ser dividida para ser usada na irrigação. Os benefícios da irrigação e da geração hidrelétrica são quantificados por funções lineares de descarga. O objetivo é maximizar os benefícios provenientes do sistema sobre 12 períodos de operação de 2 horas cada. Há afluências somente para o primeiro e segundo reservatórios e estas são 2 e 3 unidades respectivamente em todos os períodos. O armazenamento inicial em todos os reservatórios é de 5 unidades. Para os reservatórios de um a três, o armazenamento deve ficar entre 0 e 10 unidades e para o quatro entre 0 e 15 unidades. As defluências dos reservatórios através das turbinas deve ficar entre 0 e 3 unidades para o reservatório um, entre 0 e 4 unidades para os reservatórios dois e três e entre 0 e 7 unidades para o reservatório quatro. Há armazenamentos alvos finais para todos os reservatórios. Há 5 unidades para os reservatórios um a três e sete unidades para o reservatório quatro. Uma função de penalidade baseada no armazenamento final de cada reservatório foi usada para se alcançar os armazenamentos alvos finais nos reservatórios. Uma solução utilizando 49 programação linear foi produzida em uma planilha a título de comparação e foi idêntica à encontrada por Larson (1968) apud Wardlaw; Sharif (1999). O artigo utilizou três esquemas de representação para os cromossomos: (1) código binário, (2) código de Gray e (3) código com valor real. No código binário, inteiros, números reais ou qualquer coisa apropriada ao problema são codificados pelos bits de um cromossomo. No código de Gray, a representação binária de dois valores de variáveis adjacentes têm somente um dígito binário diferente. Isto é feito para evitar variações muito grandes nos valores das variáveis entre as gerações, a fim de facilitar a convergência para uma boa solução. No código com valor real, os valores das variáveis são colocados aleatoriamente em cada gene, dentro dos limites factíveis da variável representada. O artigo trabalhou com mutação uniforme, que permite que o valor de um gene seja mudado aleatoriamente dentro de uma faixa de valores próprios factíveis e com mutação uniforme modificada, que permite a modificação do valor do gene por uma quantidade especificada, podendo esta ser negativa ou positiva. O artigo trabalhou com “crossover” em um ponto, onde um ponto de “crossover” é selecionado aleatoriamente entre dois cromossomos selecionados em um ponto “c” no comprimento “L” do cromossomo e dois novos são formados por trocar todos os genes entre as posições “c” e “L”, “crossover” em dois pontos, onde o material genético é trocado entre duas posições escolhidas aleatoriamente no comprimento do cromossomo e “crossover” uniforme, onde cada gene do cromossomo é considerado por vez para realizar o “crossover”. A seleção dos indivíduos para participarem no processo de reprodução foi feita através de um esquema chamado seleção por sorteio. Neste esquema, um grupo de indivíduos é escolhido aleatoriamente da população e o indivíduo com maior adequação, que neste artigo foi expressa como uma proporção do resultado ótimo conhecido para o problema dos quatro reservatórios, é selecionado para inclusão na próxima geração. O procedimento é repetido até que o número apropriado de indivíduos sejam selecionados para a nova geração. A seleção foi desenvolvida inicialmente com grupos de dois indivíduos, mas o artigo utilizou grupos maiores por produzir uma maior diversidade e uma progressão mais suave para a solução. 50 A análise de sensibilidade foi feita para estabelecer conjuntos de parâmetros apropriados para os três esquemas de representação. Na sensibilidade para o “crossover” e na sensibilidade para a mutação, o código com valor real teve maior adequação que os outros dois. A probabilidade de “crossover” variou entre 0,5 e 0,95 e o número de mutações variou entre 0,1 e 10 e a probabilidade entre 0,002 e 0,208. Para o problema dos quatro reservatórios, foi encontrada uma solução muito próxima ao ótimo global conhecido para uma população de 100 cromossomos e 500 gerações e para uma população de 200 cromossomos e 500 gerações ou para uma população de 100 cromossomos e 750 gerações, o ótimo global foi achado. Concluiu-se que a codificação com valores reais, incorporando a seleção por sorteio, elitismo (técnica que assegura que o melhor indivíduo de uma população não é perdido entre gerações e desta forma uma adequação melhor e maior é mantida em todas as representações), “crossover” uniforme e mutação uniforme modificada produz os melhores resultados. Uma probabilidade de “crossover” de 0,70 é apropriada para este problema e a probabilidade de mutação deve ser baseada em uma mutação por cromossomo. Neste problema, a mutação uniforme modificada foi usada com todos os esquemas de “crossover” e o “crossover” uniforme foi usado com todos os esquemas de mutação. Para o problema dos quatro reservatórios modificado, uma relação de carga não-linear foi introduzida em cada reservatório e a função objetivo foi modificada em função disto. Para este problema, o código computacional utilizado no problema dos quatro reservatórios não foi modificado com exceção da função de avaliação. O problema foi resolvido também com Programação Dinâmica Diferencial Discreta (PDDD) e os resultados encontrados foram os mesmos, mas o AG foi três vezes mais rápido que a PDDD e alcançou a maior adequação com uma população de 100 cromossomos e 460 gerações Para o problema dos dez reservatórios o objetivo era maximizar a produção hidrelétrica e havia reservatórios em série e em paralelo. O problema foi equacionado da mesma forma que o problema dos quatro reservatórios com valores próprios. O problema foi resolvido utilizando o mesmo código computacional do problema dos quatro reservatórios. Uma solução utilizando programação linear foi também produzida em uma planilha a título de comparação. Os resultados foram similares, 51 mas o AG foi oito vezes mais lento que a PL e utilizou uma população de 500 cromossomos e 2500 gerações, entretanto, o tempo de execução do AG não seria influenciado pela introdução de constantes ou funções objetivo não-lineares. Este problema já havia sido resolvido por Murray; Yakowitz (1979) apud Wardlaw; Sharif (1999) utilizando Programação Dinâmica Diferencial e o resultado encontrado pelo AG foi bem próximo ao destes autores. O problema dos quatro reservatórios foi resolvido com horizonte de tempo estendido para até 96 períodos utilizando AG e PDDD. Os resultados foram similares. O AG utilizou populações de 100 e 200 cromossomos. Os resultados mostraram que uma população maior produz uma adequação global maior, embora o número de gerações requerido para uma população maior foi muito similar ao requerido com uma população menor. A deterioração da adequação para horizontes de tempo mais longos é insignificante. O número de gerações utilizado em cada análise (12, 24, 36, 48, 60, 72, 84 e 96) foi aquele requerido pelo AG para convergir para um estado no qual a mudança na adequação após 100 gerações é menor que 0,025%. O artigo teve como pontos altos o fato de ter aplicado o AG para resolver vários tipos de problema envolvendo sistemas de reservatórios como variação no número de reservatórios, equacionamento linear e não-linear e horizonte de tempo estendido e comparar com outras soluções clássicas utilizando programação dinâmica e linear. O artigo também considerou o potencial do AG em operação de reservatório em tempo real com previsão estocástica de entrada de água. Além disto, os autores concluíram que o AG é facilmente aplicado a problemas não-lineares e a sistemas complexos e produz resultados aceitáveis para problemas com horizonte de tempo estendido. O artigo teve como ponto baixo não utilizar o AG em um sistema real de reservatórios. O artigo não fez uma aplicação prática do AG. Morshed; Kaluarachchi (2000) desenvolveram três métodos potenciais para realçar o algoritmo genético. Estes três métodos são o fitness reduction method (FRM) para lidar com as restrições, o search bound sampling method (SBSM) para amostrar os limites de pesquisa com uma maior probabilidade e o optimal resource allocation guideline (ORAG) para alocar recursos computacionais. Foi observado 52 que estes métodos realçaram o algoritmo genético usado para resolver um problema de manuseio de água subterrânea tirado de McKinney; Lin (1994) apud Morshed; Kaluarachchi (2000). Foram tiradas quatro conclusões: (1) O AG com o FRM mostra pouca sensibilidade ao coeficiente de penalidade quando este tem um grande intervalo de variação e o FRM parece realçar a eficiência do AG no manejo das restrições. (2) O AG com o SBSM mostra pouca sensibilidade ao coeficiente de extensão (do intervalo de pesquisa) quando este tem um grande intervalo de variação e o SBSM parece realçar a precisão do AG em amostrar os limites de pesquisa adequadamente. Em particular, o SBSM parece realçar o AG na solução de problemas com custos fixos. (3) O AG com o ORAG parece prover alguma garantia de convergência e o ORAG parece realçar a confiabilidade do AG para um dado recurso computacional. (4) O AG com o FRM e o SBSM mostra pouca sensibilidade ao tamanho do cromossomo, ao custo, à probabilidade de crossover, à probabilidade de mutação e ao valor inicial usado pelo gerador de números aleatórios uniformes. Em particular, a precisão do AG é marginalmente aumentada do quase-ótimo ao ótimo global através do ajuste de qualquer um destes parâmetros e aí parece haver pouca necessidade de se aventurar em uma análise de larga escala para alcançar este aumento de precisão. Simpson; Dandy; Murphy (1994) utilizaram um algoritmo genético para otimização de redes de distribuição de água. O AG utilizado tinha três operadores a saber: reprodução, crossover e mutação. Utilizou-se o código binário para representar as variáveis de decisão desconhecidas. Os resultados foram comparados com as técnicas de enumeração completa e programação não-linear. As técnicas de otimização foram aplicadas a uma rede de distribuição de água de um estudo de caso tirado de Gessler (1985) apud Simpson; Dandy; Murphy (1994). Os custos das redes calculados pelas técnicas de otimização utilizadas são em dólares americanos. A rede de distribuição utilizada tinha algumas características tais como: seleção dos diâmetros de cinco novos tubos a serem acrescentados na rede, três tubos existentes podem ser limpos, duplicados ou mantidos do mesmo jeito, três padrões de demanda de vazão (incluindo dois casos de carga para incêndio) e as cargas de pressão mínimas associadas a estas demandas para cada nó da rede devem ser satisfeitas e existem dois reservatórios. Apesar de no problema original existirem 53 apenas seis alternativas para o tamanho dos diâmetros dos tubos, os autores adicionaram mais dois diâmetros maiores que os existentes para constituir oito alternativas para cada variável de decisão para a formulação do AG. Estas oito alternativas foram utilizadas nas outras duas técnicas de otimização. A enumeração completa é uma aproximação para a otimização das redes de distribuição de água. A técnica simula toda combinação possível de tamanhos discretos de diâmetros de tubos. Seleciona-se a rede com o custo menor que satisfaça as restrições de pressão. Este método acha o ótimo global, mas para problemas com redes grandes esta técnica seria impraticável mesmo no computador mais rápido. A enumeração completa aplicada à rede do estudo de caso fez aproximadamente 11.940.000 análises hidráulicas e o computador levou mais de 82 horas para realizar as análises. O computador encontrou duas alternativas de redes com o mínimo custo cujos valores são de 1.750.300 dólares para ambas. Gessler (1985) apud Simpson; Dandy; Murphy (1994) utilizou apenas seis tamanhos diferentes de diâmetro e encontrou uma rede com custo mínimo de 1.833.700 dólares. Os autores utilizaram um pacote de otimização não-linear chamado GINO, que utiliza um método de gradiente reduzido generalizado para resolver problemas de otimização não-linear e assumiram que tamanhos contínuos de diâmetros estavam disponíveis para todos os tubos. A otimização não-linear foi a técnica de otimização aplicada à rede do estudo de caso mais rápida em alcançar o menor valor de custo para rede. O computador levou apenas 6,8 minutos para alcançar um valor de 1.760.000 dólares. Precisa-se ajustar uma função de custo para os tubos devido aos valores discretos dos diâmetros e isto pode levar a algumas imprecisões. O projetista teria também que arredondar para cima ou para baixo os valores contínuos dos diâmetros encontrados na solução para os valores discretos mais próximos. Rodadas adicionais do computador são requeridas para assegurar que a solução dos valores arredondados realmente satisfaça as restrições de pressão. Depois que os autores utilizaram os valores dos diâmetros arredondados, eles chegaram ao valor de 1.750.300 dólares para a rede. Para sistemas maiores, o processo de arredondamento se torna um segundo problema de otimização. Os autores utilizaram um cromossomo de 24 bits para representar cada indivíduo da população. Cada uma das variáveis de decisão, que eram oito tubos 54 tirados da rede do estudo de caso, era representada por uma sub-série binária de três bits, sendo que cada sub-série representava oito possíveis alternativas (tabeladas pelos autores) para cada variável de decisão. A função objetivo tinha que achar a configuração de rede com o mínimo custo. A função de adequabilidade para cada indivíduo era calculada como o inverso do custo total da rede. A população variou entre 20 e 150 indivíduos. A nova geração de indivíduos foi gerada pelo esquema de seleção aleatória ponderada. A probabilidade do crossover foi de 70%. A probabilidade de mutação foi de 1%. A função de penalidade para cada rede testada levou em conta a não satisfação do limite de pressão mínimo no pior nó da rede. Foi desenvolvido um programa de computador em PASCAL do AG com três operadores acoplado com um programa de cálculo de rede que utiliza o método de NewtonRaphson. Foram realizadas dez rodadas do AG usando diferentes números aleatórios gerados como ponto de partida. Foi permitido um máximo de 50.000 avaliações de função (0,298% das 16.777.216 combinações possíveis) para cada rodada. Os autores descobriram que o AG foi particularmente efetivo em achar as soluções de ótimo global ou ótimo próximo. O AG requereu somente um número relativamente pequeno de avaliações para achar a solução ótima. O computador levou 45 minutos para realizar 50.000 avaliações para cada uma das 10 rodadas do AG. Este tempo é comparativamente longo. Entretanto, o AG foi ainda efetivo em achar o ótimo global para 15.000 avaliações para cada rodada. Uma dificuldade com a técnica do AG é saber quantas avaliações serão suficientes. Pode-se também encontrar dificuldades se uma variável contínua precisa ser representada com um código binário, especialmente se for valores numéricos grandes. Os autores concluíram que a enumeração completa só é aplicável a redes de distribuição com poucos tubos. A otimização não-linear é uma técnica efetiva quando aplicada a pequenas expansões de rede como no estudo de caso analisado neste artigo, mas o problema de arredondamento dos valores contínuos dos diâmetros encontrados na solução para os valores discretos mais próximos deve ser considerado. A programação não-linear gera somente uma solução. O AG gera várias soluções alternativas próximas do ótimo e uma destas soluções pode realmente ser preferida à solução ótima baseada em outras medidas não quantificáveis. Este é o maior benefício do AG. 55 Um dos pontos altos do artigo é o fato de que os autores não só ampliaram o estudo de caso ao adicionarem dois novos diâmetros como conseguiram uma solução ótima melhor que a original. Outro ponto alto foi que os autores compararam o AG, que é uma técnica relativamente nova a outras duas técnicas e conseguiram chegar às mesmas soluções ótimas. Um ponto baixo da pesquisa é utilizar a equação de Hazen-Williams para relacionar as vazões e as perdas de carga. Esta equação não é realmente válida para os regimes de escoamento existentes e além disto, hoje em dia ela não é muito utilizada. Outro ponto baixo da pesquisa é que não foi avaliada uma rede maior e/ou uma outra rede, assim não é possível saber se o AG seria tão eficiente em outras configurações de rede. 56 3 Método 3.1 Método matricial para cálculo de rede de distribuição de água Neste trabalho será apresentado o método matricial para o cálculo de redes de distribuição de água. Trata-se de um método que permite o cálculo de vazões e da distribuição da pressão em uma rede, tanto em regime permanente quanto transitório. Este método leva grande vantagem sobre o método de Cross pelo fato deste último não permitir o cálculo das situações transitórias que ocorrem, por exemplo, durante a abertura e fechamento de uma válvula, partida e parada de uma bomba, rompimento de uma tubulação, etc. Serão adotadas as seguintes hipóteses simplificadoras: 1. Fluido incompressível; 2. Escoamento turbulento e isotérmico; 3. Tubo rígido; 4. O coeficiente “f” para o cálculo da perda de carga em regime transitório será o mesmo do regime permanente para uma mesma vazão; 3.1.1 Formulação matemática para o regime permanente Figura 2 – Esquema de uma rede de distribuição 57 A fig. 2 anterior é um esquema de uma rede de distribuição constituída de 4 (quatro) nós e 6 (seis) trechos, onde as setas indicam os sentidos positivos dos escoamentos. Define-se matriz de conexão, constituída de elementos +1, -1 e 0, do seguinte modo: cada trecho da rede corresponde a uma linha da matriz e cada nó da rede corresponde a uma coluna da matriz. Um elemento Cij da matriz de conexão poderá ter os seguintes valores: Cij = 0 Se o trecho i não tem conexão com o nó j; Cij = -1 Se o trecho i tem conexão com o nó j e o escoamento do trecho chega ao Nó; Cij = 1 Se o trecho i tem conexão com o nó j e o escoamento do trecho emana do nó; Para o exemplo de rede indicado anteriormente a matriz de conexão é: (1) (2) (3) (4) nó (1) -1 0 0 0 (2) 1 -1 0 0 (3) 1 0 -1 0 (4) 0 1 -1 0 (5) 0 1 0 -1 (6) 0 0 1 -1 = [C] trecho Na fig. 2, nota-se que o trecho 1 está conectado somente a um nó e não a dois nós como os demais trechos. Este trecho na realidade não existe na rede, ele é fictício. A criação deste trecho fictício é necessária para se montar a matriz de conexão de forma correta. Pode-se notar que a primeira linha da matriz de conexão é diferente das demais, pois enquanto as demais linhas são compostas por três 58 diferentes algarismos, a saber, (1), (-1) e (0), a primeira linha da matriz é composta apenas por dois algarismos, a saber, (1) ou (-1) e (0). A matriz M (definida mais adiante), que é criada a partir da matriz de conexão e outras duas matrizes, deverá ser invertida. Caso não se introduza esta primeira linha na matriz de conexão, o valor do determinante de M se iguala a zero, tornando a inversão de M impossível. Na realidade, este trecho fictício, que é conectado a apenas um nó, não precisa ser definido como o primeiro trecho da rede. Ele poderia ser definido em qualquer lugar, mas devido às características internas do programa que foi desenvolvido neste trabalho, torna-se necessário que este trecho fictício seja definido como o primeiro trecho da rede, caso contrário, o programa não funcionará. O método baseia-se em três equações escritas em forma matricial. A eq.(3) relaciona a diferença de carga piezométrica de um trecho com as cargas piezométricas nos nós extremos do referido trecho: P P C g g (3) A eq.(4) do método é a da continuidade escrita em forma matricial para os nós: C Q Q 0 T (4) es A eq.(5) é a da quantidade de movimento em forma de diferenças finitas (matricial): D 2 4 v v 0 D 2 D 2 P L g 4 4 t D 2 D 2 Z L gH g H Fav (5) v 4 4 L A força de atrito viscoso Fav é dada matricialmente por: 59 8 fL' Q 0 Q 0 Fav g 2 5 D g D 2 4 (6) Pela substituição de{Fav}, dado pela eq.(6), na eq.(5) e levando-se em conta que v = Q/(D2/4), a eq.(5) transforma-se em: 8 fL' Q 0 Q 0 Q Q 0 D 2 g P Z H H v 2 D5 g t 4 L g (7) O fator de atrito f pode ser calculado pela fórmula de Swamee (matricial): 1 6 16 8 64 8 K 5,62 2500 f 9,5ln 0, 9 R 3,71D R R (8) Resolve-se a eq.(7) para Q, obtendo-se: Q Q 0 P Z H H v Pc g (9) onde: D 2 gt Pc 4L 8 fL' Q 0 Q 0 2 D5g (10) (11) Substituindo-se a matriz coluna {P/(g)} da eq.(3) na eq.(9) e substituindose o resultado na eq.(4), chega-se a: 60 C Q C * * C Pg C Z H H T 0 T T v Pc Qes 0 (12) Resolvendo-se a eq.(12) para{P/(g)}, chega-se a: P 1 1 T 0 M C Z H H v Pc Q M Qes g (13) onde M é uma matriz quadrada, definida como: M C T * * C (14) A matriz [] é uma matriz diagonal tendo os valores de (dos trechos) em sua diagonal e zeros nas demais posições. A solução numérica do problema pode ser obtida pela resolução das eqs.(13), (3) e (9) em um computador digital. Os dados de entrada para esta análise são: a topologia da rede, as dimensões geométricas, as propriedades hidráulicas, as condições iniciais do problema e as variáveis de controle. É necessário observar que apesar do equacionamento anterior prever a presença de bombas e de válvulas na rede durante o cálculo do regime permanente, o programa calcula o regime permanente da rede como se houvesse apenas tubos e vazões de entrada e saída nos nós, podendo ou não haver reservatório(s) com nível(eis) constante(s). Este procedimento foi adotado para se ter uma idéia de como seria o funcionamento ideal da rede, como se ela estivesse sendo projetada. As bombas e válvulas podem ou não (depende do usuário) ser consideradas durante o cálculo do regime extensivo, que será definido a seguir. Os cálculos numéricos podem ser convenientemente divididos em dois grupos. O primeiro grupo é composto pelas operações matemáticas realizadas uma única vez no início do programa. A matriz de conexão, a sua transposta, a matriz diagonal , as diferenças de cota entre os nós que limitam os trechos, a formação da matriz M definida na eq.(14) e sua inversa, o intervalo de tempo, que obedece a condição de Courant, assim como o cálculo de todos os termos independentes da 61 vazão, presentes nas eqs.(13) e (9), fazem parte do primeiro grupo. O segundo grupo consiste de operações iterativas realizadas após cada incremento de tempo. O cálculo das perdas de carga nos trechos, de altura manométrica da bomba, assim como o cálculo dos termos dependentes da vazão nas eqs.(13) e (9) fazem parte do segundo grupo. Uma observação importante é que não será necessário realizar os cálculos numéricos do primeiro grupo novamente, quando se for calcular os regimes extensivo e transitório. Os cálculos numéricos deste grupo servem para todos os regimes e só precisam ser realizados uma vez. Para se iniciar o cálculo é conveniente a adoção de vazões nos trechos que satisfaçam a equação de continuidade em cada nó para diminuir o número de iterações. 3.1.1.1 Diagrama de blocos do regime permanente Figura 3 – Diagrama de blocos para o regime permanente 62 3.1.2 Formulação matemática para o regime extensivo O anexo 1 apresenta o desenvolvimento matemático completo para o regime extensivo. Após o cálculo do regime permanente, inicia-se o cálculo do regime extensivo podendo-se considerar ou não as operações dos dispositivos da rede (válvulas e bombas) e a presença ou não de reservatórios. Para se calcular o regime extensivo, divide-se o dia em períodos. O número de períodos do dia é definido pelo próprio usuário e pode variar de 1 a 24, considerando-se cada período igual a 1 hora. O cálculo do regime extensivo utiliza o mesmo equacionamento do regime permanente, pois o final de cada período corresponde ao regime permanente daquele instante com suas próprias características. O que diferencia o regime extensivo do permanente é o fato de que agora, as vazões de entrada e saída da rede podem variar de um período para o outro, pode haver bombas e/ou válvulas na rede e os reservatórios variam os níveis d‟água. As características das bombas e das válvulas, os valores das vazões de entrada e saída da rede para cada período e o nível máximo e mínimo da lâmina d‟água dos reservatórios são dados de entrada. A variação da lâmina d‟água é calculada pela equação da continuidade: H A tQe tQs (15) No regime extensivo, para se calcular cargas piezométricas nos nós da rede, adiciona-se a eq.(15) multiplicada por M 1 à eq.(13): P 0 1 1 T 1 M HA M C Z H Hv Pc Q M Qes (16) g Após isto, a solução numérica do problema é obtida utilizando-se as eqs.(3) e (9). 63 3.1.2.1 Diagrama de blocos do regime extensivo Figura 4 – Diagrama de blocos para o regime extensivo 3.1.3 Formulação matemática para o regime transitório O anexo 1 apresenta o desenvolvimento matemático completo para o regime transitório. Após obterem-se os valores para as vazões nos tubos e as pressões nos nós de uma rede de distribuição de água qualquer para um período qualquer do regime extensivo, calculam-se os coeficientes Ces para os nós que têm demanda de água e, a seguir, monta-se uma matriz diagonal [Ces] tendo os valores de Ces em sua diagonal e zeros nas demais posições com a seguinte equação: 64 P C es Q es g (17) No regime transitório, as pressões nos nós e as vazões nos tubos variam quando ocorre alguma manobra na rede, por isto as vazões de entrada e saída dos nós da rede Qes neste regime serão calculadas usando a hipótese de foronomia com a seguinte equação: P es g Qes * C es (18) Obs: os valores dos coeficientes Ces usados na eq.(18) são os mesmos do regime permanente, pois assumiu-se que a variação destes valores é muito pequena. Além disto, os valores de Ces são pequenos também. No regime transitório, para se calcular cargas piezométricas nos nós da rede, utiliza-se a eq.(19), desenvolvida a partir da eq.(13): * P Pes * 0 1 * 1 T * 1 M H A M C Z H Hv Pc Q M Ces (19) g g Para se calcular a diferença de carga piezométrica em cada um dos trechos da rede no regime transitório, multiplica-se a matriz de conexão [C] pelos valores das cargas piezométricas nos nós calculadas na eq.(19) através da eq.(20): * P P C g g * (20) No regime transitório, para se calcular vazões nos tubos da rede, utilizam-se as diferenças de cargas piezométricas calculadas na eq.(20): 65 Q* Q0 gP * Z H* Hv* Pc (21) 3.1.3.1 Diagrama de blocos do regime transitório Figura 5 – Diagrama de blocos para o regime transitório 3.2 Definições gerais para aplicação do algoritmo genético 3.2.1 Parâmetros A aplicação do algoritmo genético utilizado começa com o usuário definindo parâmetros como tamanho da população (deve ser par), número de variáveis (igual ao número de intervalos de tempo vezes o número de válvulas), o intervalo das variáveis, tamanho do gene (todos os genes têm o mesmo tamanho), tamanho do cromossomo (igual ao número de variáveis vezes o tamanho do gene), o número de 66 gerações (cada geração tem o número de indivíduos da população), a probabilidade de recombinação (crossover), a probabilidade de mutação, se vai haver elitismo (s/n) e o fator de escala (se for igual a zero, a escala de adequação não é aplicada). 3.2.1.1 Variáveis O número de variáveis é definido pelo usuário como sendo igual ao número de intervalos de tempo vezes o número de válvulas por causa dos procedimentos internos do AG. Isto é necessário, para que o AG possa gerar o número de variáveis adequado ao problema a ser resolvido em cada ocasião. Na realidade, as variáveis geradas pelo AG correspondem aos coeficientes de perda de carga (kv) das válvulas para cada período de cálculo do regime extensivo. O cromossomo que representará cada indivíduo da população será uma série de bits. Cada indivíduo será composto por uma ou mais válvulas, onde cada coeficiente de perda de carga (k v) da válvula será representada por uma sub-série (gene) de bits. Cada gene representará o coeficiente (kv) da válvula para um período de cálculo. Como já foi dito, o número de períodos do dia para se calcular o regime extensivo poderá variar de 1 a 24, considerando cada período igual a 1 hora. Para exemplificar, considera-se que uma rede de distribuição contenha uma válvula e que esta válvula operará 24 vezes durante o dia, portanto, o cromossomo terá 24 genes. 1 2 24 Figura 6 – Esquema do cromossomo representando os coeficientes (kv) das válvulas 3.2.1.2 Definindo o intervalo das variáveis O usuário deve definir os limites superior e inferior para as variáveis. Diferentes problemas terão limites diferentes. Como neste trabalho as variáveis são os coeficientes de perda de carga (kv) das válvulas, o usuário deverá colocar como limites superior e inferior os coeficientes de perda de carga para a válvula fechada e 67 aberta, respectivamente. Logicamente, estes limites variarão conforme o tipo de válvula utilizado. 3.2.2 Função objetivo Pela análise bibliográfica feita, verificou-se que na maioria das aplicações dos algoritmos genéticos em redes de distribuição de água, os autores utilizam como função objetivo a minimização de algum custo. Neste trabalho, decidiu-se utilizar como função objetivo a minimização da soma das potências hidráulicas dissipadas na rede como um todo de todos os períodos de cálculo do regime extensivo. Esta função objetivo é representada pela seguinte equação: tp nt Pmin min gQ ji H ji (22) j 1 i 1 3.2.3 Restrições As restrições impostas serão os limites de carga piezométrica máxima e mínima admissíveis na rede(nos nós) e os limites máximo e mínimo da lâmina d´água nos reservatórios. 3.2.4 Função de penalidade O anexo 1 apresenta o desenvolvimento matemático completo para se calcular a função de penalidade. Como foi dito anteriormente, a função objetivo deve minimizar a soma das potências hidráulicas dissipadas na rede como um todo de todos os períodos de cálculo. Além disto, as restrições impostas (já explicadas) devem ser respeitadas. Caso as restrições não sejam respeitadas, aplicam-se penalizações à função objetivo. As penalidades são aplicadas através de funções de penalidade. Neste trabalho, a penalidade é calculada pela seguinte função: 68 f p 1 fp fp 2Hp Hpmáx Hpmin Hpmáx Hpmin 2Hp Hpmáx Hpmin Hpmáx Hpmin se Hpmin Hp Hpmáx (23) se Hp Hpmin (24) se Hp Hpmáx (25) Na prática, esta penalização será aplicada pela incorporação do valor de “fp” na função objetivo. Assim, a eq.(22) fica da seguinte forma: tp nt Pmin min f p gQ ji H ji (26) j 1 i 1 3.2.5 População inicial A população inicial é criada através da geração aleatória de séries de zeros e uns. “Randomize” é um procedimento do Pascal que gera números aleatórios. Se o intervalo de variação para os números gerados não é especificado, o programa gera números aleatórios decimais entre 0 e 1. “Random” é uma função que retorna um número aleatório. Se “Random”>0.5, então o número “1” é colocado na série, caso contrário, o número “0” é inserido na série. 3.2.6 Decodificando as variáveis O AG utilizado gera as variáveis do problema através de números binários. Como os coeficientes de perda de carga (kv) das válvulas são números reais, é necessário fazer a transformação dos números binários em números reais. Esta transformação é feita em duas etapas. Primeiro, o AG chama uma rotina para transformar os genes escritos na forma binária em inteiros na base 10. Após esta transformação, O AG chama uma outra rotina para transformar os genes escritos na forma de inteiros na base 10 em reais. Esta transformação é feita através da seguinte equação: 69 r r r maxcl min z rmin 2 1 (27) 3.2.7 Classificação por adequação 3.2.7.1 Cálculo da adequação Após as variáveis terem sido decodificadas, o AG chama uma outra rotina que calcula a adequação de cada um dos indivíduos da população. A adequação de cada indivíduo é calculada através da função objetivo, já definida anteriormente. As adequações são sempre maiores ou iguais a zero. 3.2.7.2 Encontrando o indivíduo mais apto Após o cálculo das adequações dos indivíduos, o AG chama uma rotina para calcular a adequação média da população, a soma das adequações dos indivíduos desta população e encontrar o indivíduo mais apto. Esta mesma rotina chama uma nova rotina para aplicar o elitismo, caso o usuário tenha requerido. 3.2.7.2.1 Elitismo Como já foi dito, o elitismo é uma técnica que assegura que o melhor indivíduo de uma população não seja perdido entre gerações e desta forma uma adequação melhor e maior é mantida em todas as representações, embora o elitismo possa gerar uma rápida convergência e isto faz com que o AG falhe em achar o ótimo global. O elitismo neste AG funciona por substituir um indivíduo da nova população escolhido aleatoriamente pelo membro de elite da população anterior se o indivíduo com a máxima adequação da nova população tiver uma adequação inferior a do indivíduo com melhor adequação (membro de elite) da população anterior. 70 O elitismo guarda uma cópia do indivíduo mais apto para evitar que ele seja perdido durante a recombinação (crossover) ou mutação. 3.2.8 Resultados Após a classificação por adequação, o AG chama uma rotina para imprimir resultados. Esta rotina imprime valores referentes ao indivíduo mais apto de cada geração, ou seja, os coeficientes de perda de carga (kv) de cada válvula instalada na rede de distribuição de água para cada período de cálculo, a geração na qual estes valores foram gerados e o valor da função objetivo (soma das potências hidráulicas dissipadas na rede como um todo de todos os períodos de cálculo do regime extensivo) da respectiva geração. Todos estes valores são impressos para todos os indivíduos mais aptos de todas as gerações. 3.2.9 Escala de adequação linear A escala de adequação linear é utilizada para evitar uma rápida convergência da função objetivo, o que poderia provocar uma convergência errônea ou para um ótimo local. A escala de adequação linear serve também para manter um grau de pressão de seleção nos estágios finais. A escala de adequação linear neste AG funciona por fazer a adequação dos indivíduos da população girar nas imediações da adequação média desta população. Isto permite que uma proporção aproximadamente constante de cópias dos melhores indivíduos seja selecionada comparada com os indivíduos médios. Os valores típicos do fator de escala variam no intervalo de 1 a 2. Quando o fator de escala é igual a 2, significa que aproximadamente duas vezes o número de melhores indivíduos passarão para a geração seguinte do que passarão os indivíduos médios. Para se conseguir isto, a adequação de cada indivíduo da população terá que passar por um escalonamento logo antes da seleção. Este escalonamento deve ser dinâmico. As adequações precisarão ser mais próximas durante os estágios iniciais e mais separadas durante as gerações posteriores. O escalonamento requerido é conseguido através da transformação linear mostrada na eq.(30) a seguir: 71 a c m 1 f ave f max f ave (28) b 1 a f ave (29) f i s af i b (30) Esta transformação pode produzir adequações escaladas com valores negativos para alguns indivíduos da população. Quando isto ocorre, o AG iguala a zero os valores das adequações destes indivíduos. Como já foi dito, quando o fator de escala é igual a zero, a escala de adequação não é aplicada. O escalonamento é aplicado logo antes da seleção. Como os resultados são impressos antes de se realizar o escalonamento, a adequação impressa (função objetivo) é a verdadeira adequação, não a adequação escalonada. 3.2.10 Seleção O AG usa a seleção aleatória ponderada com seleção através da analogia de um mecanismo de roleta. Um número aleatório entre 0 e 1 é gerado e multiplicado pela soma das adequações de todos os indivíduos da população. Após isto, as adequações de cada indivíduo são somadas, uma a uma, até que esta soma seja igual ou maior ao produto anterior. O último indivíduo a ser adicionado é então o indivíduo selecionado para reprodução. Este mecanismo de seleção é aplicado duas vezes para selecionar um par de indivíduos para reprodução. O processo de seleção continua até o número de indivíduos selecionados seja igual ao tamanho da população. É por isto que a população deve conter um número par de indivíduos, caso contrário, sobraria um indivíduo e o AG não funcionaria corretamente. 3.2.11 Recombinação (crossover) O AG começa gerando um número aleatório entre 0 e 1. Se este número é menor ou igual à probabilidade de recombinação (definida pelo usuário), então a 72 recombinação ocorre nos cromossomos pais selecionados no processo de seleção para produzir os cromossomos descendentes. Estes descendentes serão a nova população temporária. Se o número gerado for maior que a probabilidade de recombinação, os descendentes são clones dos seus respectivos pais. O AG faz a recombinação por escolher um ponto aleatoriamente entre o primeiro e o último bit dos cromossomos pais. Para escolher este ponto, o AG subtrai 1 do tamanho do cromossomo (definido pelo usuário), multiplica este resultado por um número entre 0 e 1 gerado aleatoriamente, soma 1 a este resultado e arredonda este resultado para o inteiro mais próximo. 3.2.12 Mutação Após a recombinação, o AG chama uma rotina para percorrer a nova população temporária inteira, passando por todos os bits de cada cromossomo da população e gerando um número aleatório entre 0 e 1. Se este número é menor ou igual à probabilidade de mutação (definida pelo usuário), então o valor do bit é trocado de 1 para 0 e vice-versa. 3.2.13 Substituição Após a mutação, o AG substitui a velha população pela nova população. Para isto, o AG substitui todos os bits, um por um, de todos os indivíduos da velha população pelos bits dos novos descendentes gerados. 3.2.14 Convergência Todas as descrições anteriores se referem aos indivíduos de uma única geração. Após o AG realizar todas as operações genéticas já descritas anteriormente, o AG passa para a geração seguinte e realiza novamente as mesmas operações, com exceção da criação da população inicial, visto não ser mais necessário, pois a nova população foi criada a partir da recombinação e mutação. 73 O AG irá parar após um certo números de gerações definidas pelo usuário. Se uma solução aceitável não foi alcançada, existem várias alternativas. Pode-se aumentar o número de gerações ou aumentar a população inicial ou alterar a taxa de mutação ou alterar a taxa de recombinação ou alterar o tamanho do gene. Estas alternativas podem ser utilizadas individualmente ou duas de cada vez e assim por diante. 3.2.15 Diagrama de blocos do algoritmo genético Figura 7 – Diagrama de blocos para o algoritmo genético 3.3 Modelo Híbrido O modelo híbrido consiste na conexão do algoritmo genético com o programa de cálculo hidráulico. A conexão é feita através de um programa principal e três 74 unidades. O programa principal conecta estas três unidades na ordem correta. A primeira unidade a ser chamada contém a rotina do algoritmo genético, a segunda unidade contém a rotina para o cálculo hidráulico e a terceira unidade calcula a função objetivo. O modelo híbrido fornece ao usuário três opções de cálculo. A primeira opção permite calcular apenas o regime permanente, a segunda opção permite calcular o regime permanente junto com o regime extensivo considerando-se a variação dos níveis d‟água dos reservatórios presentes na rede e podendo-se considerar ou não a presença de “boosters” na rede sem se considerar as válvulas e a terceira opção permite calcular a segunda opção, acrescida dos efeitos de válvulas instaladas na rede onde se procura otimizar as operações da rede pela utilização do AG. O usuário escolhe a opção de cálculo através da entrada de dados no arquivo de entrada. Quando a terceira opção é escolhida, o programa principal começa chamando o algoritmo genético, que gera uma população inicial (valores dos coeficientes de perda de carga (kv) das válvulas) aleatoriamente. Os valores de kv de cada indivíduo são fornecidos à unidade de cálculo hidráulico. Esta, primeiro calcula o regime permanente da rede como se houvesse apenas tubos e vazões de entrada e saída nos nós, podendo ou não haver reservatórios. Após o cálculo do regime permanente, inicia-se o cálculo do regime extensivo, considerando as operações dos dispositivos da rede (válvulas e bombas) e fornecendo os valores das pressões em cada nó e nos reservatórios, das vazões e das perdas de carga para cada tubo da rede para cada período de cálculo. Com os valores das pressões, as restrições são avaliadas. Com os valores das vazões e das perdas de carga, a função objetivo é avaliada. Caso as restrições não sejam atendidas, calcula-se o valor da função de penalidade e a função objetivo é penalizada. Após isto, retorna-se ao algoritmo genético para chamar os operadores genéticos já descritos. Este procedimento é repetido para todos os indivíduos de todas as gerações. O modelo híbrido fornece três arquivos de saída. O primeiro mostra os valores das variáveis hidráulicas para o regime permanente. O segundo pode mostrar dois tipos de valores. Caso o usuário opte pela segunda opção de cálculo já descrita, mostram-se os valores das variáveis hidráulicas para cada período do dia, calculados sem se considerar as válvulas. Caso o usuário opte pela terceira opção de cálculo, 75 mostram-se os valores das variáveis hidráulicas para cada período do dia para o indivíduo mais apto da última geração, calculado a partir dos coeficientes de perda de carga das válvulas fornecidos pelo AG. O terceiro mostra os valores dos coeficientes de perda de carga (kv) de cada válvula instalada na rede de distribuição de água para cada período de cálculo, a geração na qual estes valores foram gerados e o valor da função objetivo de cada geração, como já descrito antes. O programa imprime o indivíduo mais apto da última geração, pois esta é a geração que teoricamente contém o melhor indivíduo de todos os indivíduos gerados em todas as gerações. 3.3 Diagrama de blocos do modelo híbrido Figura 8 – Diagrama de blocos para o modelo híbrido 76 4 Resultados A título de exemplo, utilizou-se a rede esquematizada a seguir para mostrar os resultados obtidos pelo programa através da terceira opção de cálculo. Utilizou-se o programa para calcular a rede a seguir considerando-se os efeitos da variação do nível do reservatório, acrescidos dos efeitos de válvulas instaladas na rede, onde se procura otimizar as operações da rede pela utilização do AG. A rede possui duas válvulas tipo gaveta nos tubos 3 e 6 e um “booster” no tubo 2, como ilustra o esquema a seguir. Utilizou-se para a rede a seguir uma população de dez (10) indivíduos, trinta (30) gerações, uma porcentagem de crossover de 95%, uma porcentagem de mutação de 2%, um fator de escala de 1.2 e o elitismo foi aplicado. Estes valores são fornecidos diretamente ao programa principal. A rede foi calculada para 5 períodos de uma hora. Figura 9 – Esquema da rede de distribuição calculada 77 A seguir, mostra-se o arquivo com os dados de entrada e os arquivos de saída gerados pelo programa desenvolvido. 4.1 Arquivo de entrada ‘nava.dat’ Entre com o numero de tubos,de nos,de vazoes de entrada/saida e de reservatorios respectivamente e salte uma linha: 7541 Entre com o numero do trecho, o no inicial, o no final(o primeiro trecho nao tem no final),o diametro(m),o comprimento(m), a vazao inicial(adotada)(m3/s) e a rugosidade(m) respectivamente para cada trecho e salte uma linha: 1 2 3 4 5 6 7 1 1 2 2 3 3 4 2 3 4 4 5 5 0.3 0.3 0.25 0.2 0.175 0.15 0.2 1 650 700 550 650 500 400 0 0 0 0 0 0 0 0.00003 0.00003 0.00003 0.00003 0.00003 0.00003 0.00003 Entre com a viscosidade cinematica(m2/s) e a massa especifica(kg/m3) do fluido respectivamente e salte uma linha: 0.000001 1000 Entre com o valor da pressao maxima(m) e da pressao minima admissiveis na rede e salte uma linha: 50 15 Entre com o numero do no e a vazao de entrada/saida(m3/s) respectivamente para cada no para o regime permanente e salte uma linha: 1 3 4 5 -0.1 0.03 0.02 0.05 Comecando pelo reservatorio pulmao,entre com o numero do reservatorio,o no do reservatorio, o nivel(m),a area(m2),o nivel maximo e o nivel minimo admissiveis respectivamente para cada reservatorio e salte uma linha: 1 1 30 1000 30.5 29.5 78 Entre com o numero do no e a cota do no(m) respectivamente para cada no e salte uma linha: 1 2 3 4 5 660 650 649 642 647 Deseja calcular o periodo extensivo (s/n)? (salte uma linha apos a resposta) s Entre com o numero de valvulas da rede e salte uma linha: 2 Entre com o numero do tubo que contem a valvula e o coeficiente de perda de carga para a valvula fechada(kf) respectivamente e salte uma linha: 3 98 6 98 Entre com o numero de bombas da rede e com o numero de intervalos de tempo que as bombas trabalharao(1 a 24) e salte uma linha: 1 2 Na mesma linha,entre com o numero dos intervalos de tempo nos quais as bombas trabalharao e salte uma linha: 3 5 Entre com o numero do tubo que contem a bomba,a carga de shut-off(m),a carga(m) e a vazao(m3/s) para o rendimento maximo da bomba e uma carga qualquer(m) com a correspondente vazao(m3/s) respectivamente e salte uma linha: 2 16 9 0.11111 13 0.066667 Entre com o numero de intervalos de tempo (1 a 24) para se calcular o periodo extensivo e salte uma linha: 5 79 Na primeira linha,entre com o numero dos nos de entrada e saida. A partir da segunda linha,entre com as vazoes de entrada e saida(m3/s) para cada periodo e salte uma linha: 1 -0.1 -0.1 -0.1 -0.1 -0.1 3 0.03 0.05 0.04 0.02 0.09 4 0.02 0.04 0.02 0.03 0.05 5 0.05 0.03 0.06 0.02 -0.04 Escreva o nome do arquivo de saida para o periodo extensivo e salte uma linha: navaext.out 4.2 Arquivo de saída ‘nava.out’ A matriz de conexao e: -1 1 0 0 0 0 0 0 -1 1 1 0 0 0 trecho 1 2 3 4 5 6 7 trecho 1 2 3 4 5 6 0 0 -1 0 1 1 0 0 0 0 0 0 0 -1 0 -1 0 0 -1 1 -1 no inicial 1 1 2 2 3 3 4 no inicial 1 1 2 2 3 3 no final carga piez. carga piez. no inicial(m) no final(m) vazao (m3/s) perda de carga(m) 0.10000 0.05827 0.04173 0.01151 0.01676 0.03324 3.24102 3.12592 3.96363 0.83771 2.72335 1.88565 2 3 4 4 5 5 690.00000 690.00000 686.75898 686.75898 683.63306 683.63306 682.79536 686.75898 683.63306 682.79536 682.79536 680.90971 680.90971 no final pressao no inicial(m) pressao no cota no final(m) inicial(m) 2 3 4 4 5 30.00000 30.00000 36.75898 36.75898 34.63306 34.63306 36.75898 34.63306 40.79536 40.79536 33.90971 660.00000 660.00000 650.00000 650.00000 649.00000 649.00000 cota no final(m) 650.00000 649.00000 642.00000 642.00000 647.00000 80 7 no 4 5 40.79536 33.90971 642.00000 647.00000 vazao entrada/saida(m3/s) 1 3 4 5 -0.10000 0.03000 0.02000 0.05000 numero de iteracoes:= 155 4.3 Arquivo de saída ‘navaext.out’ Periodo 1 trecho 1 2 3 4 5 6 7 trecho 1 2 3 4 5 6 7 no 1 3 4 5 no inicial no final 1 1 2 2 3 3 4 2 3 4 4 5 5 690.00000 690.00000 686.75898 686.75898 683.01298 683.01298 682.38739 no inicial no final pressao no inicial(m) 2 3 4 4 5 5 30.00000 30.00000 36.75898 36.75898 34.01298 34.01298 40.38739 1 1 2 2 3 3 4 carga piez. carga piez. no inicial(m) no final(m) vazao entrada/saida(m3/s) -0.10000 0.03000 0.02000 0.05000 numero de iteracoes:= 153 686.75898 683.01298 682.38739 682.38739 680.44581 680.44581 pressao no final(m) 36.75898 34.01298 40.38739 40.38739 33.44581 33.44581 vazao (m3/s) perda de carga(m) 0.10000 0.05603 0.04397 0.00980 0.01623 0.03377 3.24102 2.90504 4.37194 0.62457 2.56762 1.94137 cota no inicial(m) cota no final(m) 660.00000 660.00000 650.00000 650.00000 649.00000 649.00000 642.00000 650.00000 649.00000 642.00000 642.00000 647.00000 647.00000 81 Periodo 2 trecho no inicial 1 2 3 4 5 6 7 trecho 1 1 2 2 3 3 4 2 3 4 4 5 5 no inicial no final pressao no inicial(m) 2 3 4 4 5 5 29.96514 29.96514 35.39495 35.39495 31.37911 31.37911 37.75328 1 2 3 4 5 6 7 no no carga piez. carga piez. vazao final no inicial(m) no final(m) (m3/s) 1 1 2 2 3 3 4 689.96514 689.96514 685.39495 685.39495 680.37911 680.37911 679.75328 685.39495 680.37911 679.75328 679.75328 679.00537 679.00537 0.12000 0.06965 0.05035 0.00980 0.00984 0.02016 pressao no cota no final(m) inicial(m) 35.39495 31.37911 37.75328 37.75328 32.00537 32.00537 660.00000 660.00000 650.00000 650.00000 649.00000 649.00000 642.00000 perda de carga(m) 4.57019 4.36614 5.64204 0.62477 1.02392 0.74771 cota no final(m) 650.00000 649.00000 642.00000 642.00000 647.00000 647.00000 vazao entrada/saida(m3/s) 1 3 4 5 -0.10000 0.05000 0.04000 0.03000 numero de iteracoes:= 90 Periodo 3 trecho 1 2 3 4 5 6 7 no inicial no final 1 1 2 2 3 3 4 2 3 4 4 5 5 carga piez. carga piez. vazao no inicial(m) no final(m) (m3/s) perda de carga(m) 689.96514 689.96514 693.40279 693.40279 688.47496 688.47496 687.62357 4.57019 4.29014 5.77962 0.85038 2.91488 2.99922 693.40279 688.47496 687.62357 687.62357 684.62419 684.62419 0.12000 0.06900 0.05100 0.01162 0.01738 0.04262 82 trecho 1 2 3 4 5 6 7 no no inicial no final 1 1 2 2 3 3 4 2 3 4 4 5 5 pressao no inicial(m) 29.96514 29.96514 43.40279 43.40279 39.47496 39.47496 45.62357 pressao no cota no final(m) inicial(m) 43.40279 39.47496 45.62357 45.62357 37.62419 37.62419 660.00000 660.00000 650.00000 650.00000 649.00000 649.00000 642.00000 cota no final(m) 650.00000 649.00000 642.00000 642.00000 647.00000 647.00000 vazao entrada/saida(m3/s) 1 3 4 5 -0.10000 0.04000 0.02000 0.06000 numero de iteracoes:= 88 Periodo 4 trecho 1 2 3 4 5 6 7 trecho 1 2 3 4 5 6 7 no no inicial no final carga piez. carga piez. no inicial(m) no final(m) 1 1 2 2 3 3 4 2 3 4 4 5 5 690.05228 690.05228 688.38956 688.38956 686.48874 686.48874 685.84276 no inicial no final pressao no inicial(m) 2 3 4 4 5 5 30.05228 30.05228 38.38956 38.38956 37.48874 37.48874 43.84276 1 1 2 2 3 3 4 vazao entrada/saida(m3/s) 688.38956 686.48874 685.84276 685.84276 685.51109 685.51109 vazao (m3/s) perda de carga(m) 0.07000 0.03708 0.03292 0.01000 0.00708 0.01292 1.66273 1.34904 2.54643 0.64701 0.56285 0.33188 pressao no cota no final(m) inicial(m) cota no final(m) 660.00000 660.00000 650.00000 650.00000 649.00000 649.00000 642.00000 650.00000 649.00000 642.00000 642.00000 647.00000 647.00000 38.38956 37.48874 43.84276 43.84276 38.51109 38.51109 83 1 3 4 5 -0.10000 0.02000 0.03000 0.02000 numero de iteracoes:= 134 Periodo 5 trecho 1 2 3 4 5 6 7 1 1 2 2 3 3 4 trecho 1 2 3 4 5 6 7 no 1 3 4 5 no no inicial final 2 3 4 4 5 5 no no inicial final 1 1 2 2 3 3 4 2 3 4 4 5 5 carga piez. carga piez. no inicial(m) no final(m) vazao (m3/s) 690.00000 690.00000 696.90891 696.90891 689.59665 689.59665 691.94810 696.90891 689.59665 691.94810 691.94810 692.91665 692.91665 pressao no inicial(m) pressao no cota no final(m) inicial(m) 30.00000 30.00000 46.90891 46.90891 40.59665 40.59665 49.94810 46.90891 40.59665 49.94810 49.94810 45.91665 45.91665 0.10000 0.05298 0.04702 -0.02022 -0.01680 -0.02320 660.00000 660.00000 650.00000 650.00000 649.00000 649.00000 642.00000 perda de carga(m) 3.24102 2.61612 4.96062 -2.35046 -2.73743 -0.96822 cota no final(m) 650.00000 649.00000 642.00000 642.00000 647.00000 647.00000 vazao entrada/saida(m3/s) -0.10000 0.09000 0.05000 -0.04000 numero de iteracoes:= 104 potencia dissipada em todos os periodos calculados:= 42775.32719 W 84 4.4 Arquivo de saída ‘lgados.res’ k1 k2 k3 k4 k5 geracao potencia dissipada (W) valv1 82.1935 18.9677 94.8387 22.1290 91.6774 valv2 72.7097 85.3548 98.0000 50.5806 91.6774 1 46428.41438 valv1 82.1935 18.9677 94.8387 22.1290 91.6774 valv2 72.7097 85.3548 98.0000 50.5806 91.6774 2 46428.41438 valv1 82.1935 18.9677 44.2581 22.1290 91.6774 valv2 22.1290 85.3548 98.0000 50.5806 91.6774 3 45599.74063 valv1 15.8065 94.8387 44.2581 22.1290 91.6774 valv2 22.1290 85.3548 98.0000 53.7419 91.6774 4 45108.98646 valv1 15.8065 94.8387 44.2581 22.1290 91.6774 valv2 22.1290 85.3548 98.0000 53.7419 91.6774 5 45108.98646 valv1 15.8065 94.8387 44.2581 22.1290 91.6774 valv2 22.1290 85.3548 98.0000 53.7419 91.6774 6 45108.98646 valv1 15.8065 94.8387 44.2581 18.9677 91.6774 valv2 22.1290 85.3548 9.4839 82.1935 22.1290 7 44847.69816 valv1 12.6452 31.6129 44.2581 18.9677 91.6774 valv2 22.1290 85.3548 9.4839 82.1935 22.1290 8 43693.65657 valv1 12.6452 31.6129 44.2581 18.9677 91.6774 valv2 22.1290 85.3548 9.4839 82.1935 22.1290 9 43693.65657 valv1 12.6452 31.6129 44.2581 18.9677 91.6774 valv2 22.1290 85.3548 9.4839 82.1935 22.1290 10 43693.65657 valv1 12.6452 31.6129 44.2581 18.9677 91.6774 valv2 22.1290 85.3548 9.4839 82.1935 22.1290 11 43693.65657 valv1 12.6452 31.6129 44.2581 18.9677 91.6774 valv2 22.1290 85.3548 9.4839 82.1935 22.1290 12 43693.65657 valv1 12.6452 31.6129 44.2581 18.9677 91.6774 valv2 22.1290 85.3548 9.4839 82.1935 22.1290 13 43693.65657 valv1 12.6452 31.6129 44.2581 18.9677 91.6774 valv2 22.1290 85.3548 9.4839 82.1935 22.1290 14 43693.65657 valv1 18.9677 44.2581 18.9677 18.9677 91.6774 valv2 22.1290 85.3548 9.4839 82.1935 22.1290 15 43571.51716 85 valv1 18.9677 37.9355 18.9677 18.9677 91.6774 valv2 22.1290 85.3548 9.4839 82.1935 22.1290 16 43469.70071 valv1 18.9677 37.9355 18.9677 18.9677 91.6774 valv2 9.4839 22.1290 6.3226 63.2258 12.6452 17 43415.37616 valv1 18.9677 37.9355 18.9677 18.9677 91.6774 valv2 9.4839 22.1290 6.3226 63.2258 12.6452 18 43415.37616 valv1 18.9677 37.9355 18.9677 18.9677 91.6774 valv2 9.4839 22.1290 6.3226 63.2258 12.6452 19 43415.37616 valv1 18.9677 37.9355 18.9677 18.9677 91.6774 valv2 9.4839 22.1290 6.3226 63.2258 12.6452 20 43415.37616 valv1 18.9677 44.2581 valv2 22.1290 22.1290 9.4839 18.9677 79.0323 6.3226 63.2258 12.6452 21 43301.66975 valv1 18.9677 44.2581 valv2 0.0000 22.1290 6.3226 18.9677 79.0323 6.3226 63.2258 12.6452 22 43252.74021 valv1 18.9677 44.2581 valv2 0.0000 22.1290 6.3226 18.9677 79.0323 6.3226 63.2258 12.6452 23 43252.74021 valv1 18.9677 31.6129 valv2 0.0000 22.1290 6.3226 18.9677 79.0323 6.3226 63.2258 0.0000 24 43088.77502 valv1 18.9677 31.6129 valv2 0.0000 22.1290 6.3226 18.9677 79.0323 6.3226 63.2258 0.0000 25 43088.77502 valv1 18.9677 31.6129 valv2 0.0000 22.1290 6.3226 18.9677 79.0323 6.3226 63.2258 0.0000 26 43088.77502 valv1 18.9677 31.6129 valv2 0.0000 22.1290 6.3226 18.9677 79.0323 6.3226 63.2258 0.0000 27 43088.77502 valv1 18.9677 6.3226 6.3226 18.9677 79.0323 valv2 0.0000 22.1290 18.9677 50.5806 12.6452 28 42805.22884 valv1 12.6452 6.3226 6.3226 18.9677 79.0323 valv2 0.0000 22.1290 18.9677 50.5806 12.6452 29 42775.32719 valv1 12.6452 6.3226 6.3226 18.9677 79.0323 valv2 0.0000 22.1290 18.9677 50.5806 12.6452 30 42775.32719 86 Pode-se observar que a potência dissipada impressas nos arquivos de saída „navaext.out‟ e „lgados.res‟ é a mesma, ou seja, 42775.32719 W. Outra observação é que neste exemplo rodado, usou-se apenas trinta gerações, o que é um número baixo de gerações. Este número baixo de gerações foi usado apenas para dar um exemplo da capacidade de cálculo do programa. 4.5 Rede 1 A seguir, utilizou-se a rede de distribuição de água da cidade de Itororó-BA (Porto, 2001) esquematizada a seguir para fazer testes mais abrangentes com o modelo híbrido. A rede possui um “booster” instalado no tubo 2 e quatro válvulas tipo gaveta nos tubos 7, 8, 13 e 16. As válvulas foram instaladas nestes tubos pois os nós 6, 16 e 12 podem apresentar problemas de sobrepressão durante os cálculos. Foi utilizada uma população de vinte (20) indivíduos, que foi testada para cem (100) e duzentas (200) gerações. Para cada um dos dois grupos de gerações, variou-se a porcentagem de crossover em 60%, 80% e 95% e a porcentagem de mutação em 0.5%, 1% e 2% respectivamente, resultando em seis gráficos. Foi utilizado um fator de escala de 1.5 e o elitismo não foi aplicado Os gráficos estão representados a seguir. É necessário observar que a rede continuou sendo calculada para 5 períodos e que a rugosidade absoluta para todos os tubos é 0,15mm (aço galvanizado). 87 Figura 10 – Esquema da rede de distribuição de Itororó-BA Tabela 1 – Dados da rede da cidade de Itororó-BA regime permanente (Porto, 2001) 1 Demanda (l/s) -62,5 Cota do nó (m) 230,7 1 Comprimento (m) 10 Diâmetro (m) 0,3 2 5,05 220,50 2 324 0,3 3 1,91 215,60 3 124 0,25 4 3,81 210,40 4 184 0,25 5 1,40 210,50 5 254 0,15 6 4,35 209,50 6 225 0,1 7 3,51 213,20 7 177 0,1 8 3,44 218,50 8 168 0,1 9 2,48 230,70 9 152 0,125 Nó Trecho 88 Tabela 1 – Dados da rede da cidade de Itororó-BA regime permanente (Porto, 2001) (continuação) 10 3,06 211,50 10 166 0,125 11 1,85 213,50 11 263 0,125 12 2,86 205,50 12 133 0,1 13 6,11 208,80 13 321 0,1 14 5,09 215,50 14 105 0,125 15 4,06 212,60 15 169 0,15 16 8,05 207,50 16 103 0,15 17 4,26 219,40 17 206 0,15 18 1,21 220,50 18 202 0,15 19 134 0,15 20 227 0,2 21 167 0,2 89 Tabela 2 – Demandas usadas no cálculo do regime extensivo em Itororó-BA Nó 1 Demanda 1 (l/s) -62,50 Demanda 2 (l/s) -62,50 Demanda 3 (l/s) -62,50 Demanda 4 (l/s) -62,50 Demanda 5 (l/s) -62,50 2 5,05 3,05 2,80 6,63 9,58 3 1,91 4,91 4,44 5,71 7,61 4 3,81 2,00 1,81 3,47 4,23 5 1,40 2,80 1,90 -7,73 4,87 6 4,35 4,35 3,05 3,52 4,35 7 3,51 5,01 6,51 7,98 8,73 8 3,44 4,44 0,44 9,33 3,43 9 2,48 0,48 3,48 3,56 2,35 10 3,06 2,06 2,06 4,74 1,22 11 1,85 1,90 4,91 -2,17 0,64 12 2,86 9,86 7,83 1,74 3,38 13 6,11 3,11 2,11 1,95 5,65 14 5,09 4,09 2,49 2,34 2,34 15 4,06 -5,60 4,60 -3,23 3,87 16 8,05 6,05 7,33 2,33 4,73 17 4,26 6,26 1,26 3,76 5,23 18 1,21 5,21 3,21 2,34 4,87 90 6420 6410 população:20 crossover:60% mutação:0,5% 6400 6390 6380 6370 6360 potência dissipada (W) 6350 6340 6330 6320 potência dissipada (W) 6310 6300 6290 6280 6270 6260 6250 6240 6230 6220 6210 6200 gerações 0 10 20 30 40 50 60 70 80 90 100 Figura 11 – Potência X 100 gerações, crossover:60% e mutação:0.5%, sem elitismo 6400 6390 população:20 crossover:80% mutação:1% 6380 6370 6360 6350 potência dissipada (W) 6340 6330 6320 6310 potência dissipada (W) 6300 6290 6280 6270 6260 6250 6240 6230 6220 6210 6200 gerações 0 10 20 30 40 50 60 70 80 90 100 Figura 12 – Potência X 100 gerações, crossover:80% e mutação:1%, sem elitismo 91 6290 população:20 crossover:95% mutação:2% 6280 6270 potência dissipada (W) 6260 6250 potência dissipada (W) 6240 6230 6220 6210 gerações 6200 0 10 20 30 40 50 60 70 80 90 100 Figura 13 – Potência X 100 gerações, crossover:95% e mutação:2%, sem elitismo Pelas três figuras anteriores, percebe-se que a função objetivo tende a convergir nos três casos, mas percebe-se também, que o valor dela oscila durante todo o cálculo, nunca chegando a um valor fixo para o número de gerações utilizadas. Nota-se que na fig.11 a função objetivo tende a convergir com maior rapidez e a potência dissipada final teve o menor valor das três figuras, sendo de 6206,127W para as taxas de crossover e mutação utilizadas. Não se sabe se este valor é o ótimo global devido às oscilações dos valores da função objetivo. A fig.13 apresentou o maior valor de potência dissipada final, sendo de 6235,704W para as taxas de crossover e mutação utilizadas. 92 6400 6390 população:20 crossover:60% mutação:0,5% 6380 6370 6360 6350 potência dissipada (W) 6340 6330 6320 6310 potência dissipada (W) 6300 6290 6280 6270 6260 6250 6240 6230 6220 6210 gerações 6200 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 potência dissipada (W) Figura 14 – Potência X 200 gerações, crossover:60% e mutação:0.5%, sem elitismo 6480 6470 6460 6450 6440 6430 6420 6410 6400 6390 6380 6370 6360 6350 6340 6330 6320 6310 6300 6290 6280 6270 6260 6250 6240 6230 6220 6210 6200 população:20 crossover:80% mutação:1% potência dissipada (W) gerações 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 Figura 15 – Potência X 200 gerações, crossover:80% e mutação:1%, sem elitismo potência dissipada (W) 93 6520 6510 6500 6490 6480 6470 6460 6450 6440 6430 6420 6410 6400 6390 6380 6370 6360 6350 6340 6330 6320 6310 6300 6290 6280 6270 6260 6250 6240 6230 6220 6210 6200 população:20 crossover:95% mutação:2% potência dissipada (W) gerações 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 Figura 16 – Potência X 200 gerações, crossover:95% e mutação:2%, sem elitismo Pelas três figuras anteriores, percebe-se que a função objetivo tende a convergir nos três casos, embora o valor dela oscile durante todo o cálculo, nunca chegando a um valor fixo para o número de gerações utilizadas. Nota-se que na fig.15 a função objetivo tende a convergir com maior rapidez, mas a potência dissipada final teve o segundo menor valor das três figuras, sendo de 6205,767W para as taxas de crossover e mutação utilizadas. A fig.14 mostra o menor valor de potência dissipada final obtida, sendo de 6204,599W. Não se sabe se este valor é o ótimo global devido às oscilações dos valores da função objetivo. A fig.16 apresentou o maior valor de potência dissipada final, sendo de 6218,947W para as taxas de crossover e mutação utilizadas. Na prática, o fato de a potência dissipada final na fig.14 ser de 6204,599W e na fig.15 ser de 6205,767W é irrelevante. Decidiu-se fazer os cálculos usando-se duzentas gerações, para ver se a função objetivo não iria oscilar tanto quanto quando se usou cem gerações, o que não aconteceu. Além do mais, cem gerações é um número baixo quando se quer otimizar uma função objetivo utilizando AG para um problema de rede. 94 A seguir, os cálculos foram refeitos aplicando o elitismo. Os gráficos estão representados a seguir. 6340 população:20 crossover:60% mutação:0,5% 6330 6320 6310 potência dissipada (W) 6300 6290 6280 potência dissipada (W) 6270 6260 6250 6240 6230 6220 6210 gerações 6200 0 10 20 30 40 50 60 70 80 90 100 Figura 17 – Potência X 100 gerações, crossover:60% e mutação:0.5%, com elitismo 6380 6370 população:20 crossover:80% mutação:1% 6360 6350 6340 6330 potência dissipada (W) 6320 6310 6300 potência dissipada (W) 6290 6280 6270 6260 6250 6240 6230 6220 6210 6200 gerações 0 10 20 30 40 50 60 70 80 90 100 Figura 18 – Potência X 100 gerações, crossover:80% e mutação:1%, com elitismo 95 6380 6370 população:20 crossover:95% mutação:2% 6360 6350 6340 6330 potência dissipada (W) 6320 6310 6300 potência dissipada (W) 6290 6280 6270 6260 6250 6240 6230 6220 6210 6200 gerações 0 10 20 30 40 50 60 70 80 90 100 Figura 19 – Potência X 100 gerações, crossover:95% e mutação:2%, com elitismo Pelas três figuras anteriores, percebe-se que a função objetivo convergiu nos três casos e o valor dela não oscilou em momento algum durante o cálculo. Nota-se que na fig.19 a função objetivo convergiu com maior rapidez, mas a potência dissipada final teve o maior valor das três figuras, sendo 6204,769W para as taxas de crossover e mutação utilizadas. A fig.18 mostra o menor valor de potência dissipada final obtida, sendo de 6204,409W. A fig.17 indica o valor de 6204,464W para a potência dissipada final. Em termos práticos, as diferenças entre os valores das potências dissipadas finais nestes três casos é irrelevante. 96 6360 6350 população:20 crossover:60% mutação:0,5% 6340 6330 6320 potência dissipada (W) 6310 6300 6290 potência dissipada (W) 6280 6270 6260 6250 6240 6230 6220 6210 gerações 6200 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 Figura 20 – Potência X 200 gerações, crossover:60% e mutação:0.5%, com elitismo 6380 6370 população:20 crossover:80% mutação:1% 6360 6350 6340 6330 potência dissipada (W) 6320 6310 6300 potência dissipada (W) 6290 6280 6270 6260 6250 6240 6230 6220 6210 6200 gerações 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 Figura 21 – Potência X 200 gerações, crossover:80% e mutação:1%, com elitismo 97 6380 6370 população:20 crossover:95% mutação:2% 6360 6350 6340 6330 potência dissipada (W) 6320 6310 6300 potência dissipada (W) 6290 6280 6270 6260 6250 6240 6230 6220 6210 gerações 6200 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 Figura 22 – Potência X 200 gerações, crossover:95% e mutação:2%, com elitismo Pelas três figuras anteriores, percebe-se que a função objetivo convergiu nos três casos e o valor dela não oscilou em momento algum durante o cálculo. Nota-se que na fig.22 a função objetivo convergiu com maior rapidez e a potência dissipada final teve o menor valor das três figuras, sendo 6203,495W para as taxas de crossover e mutação utilizadas. A fig.20 apresenta o maior valor de potência dissipada final obtida, sendo de 6204,866W. A fig.21 mostra o valor de 6204,081W para a potência dissipada final obtida. Pelos resultados obtidos, pode-se concluir que o ótimo global deve ser um valor entre 6203W e 6204W. Embora se tenha alcançado a convergência da função objetivo nos três casos representados nas figuras onde se utilizou cem gerações durante o cálculo, decidiu-se fazer os cálculos usando duzentas gerações também, pois cem gerações é um número baixo quando se quer otimizar uma função objetivo utilizando AG. Outro motivo de se fazer os cálculos utilizando duzentas gerações foi verificar o comportamento da função objetivo e como se pôde observar, a função objetivo apresenta melhores valores do que quando se utilizou cem gerações. 98 Pode-se observar que o melhor valor obtido para a função objetivo,quando são analisadas todas as figuras anteriores, foi o valor da fig.22, que foi de 6203,495W. Este valor foi obtido quando se utilizou duzentas (200) gerações com taxa de crossover de 95%, taxa de mutação de 2% e elitismo. Outra observação importante é que esta mesma rede foi calculada utilizando a segunda opção de cálculo. Isto foi feito para se obter o valor da potência dissipada final na rede sem a presença de válvulas, sendo este igual a 6202,545W. Este valor é bem próximo ao valor obtido na fig.22, ou seja, 6203,495W. Isto significa, que quando esta rede foi calculada utilizando a terceira opção de cálculo, o AG obteve um arranjo de abertura de válvulas que corresponde à uma potência dissipada quase igual à potência dissipada na rede quando não se utilizam válvulas. Vale observar que a potência dissipada final na rede sem a presença de válvulas, não necessariamente é a potência mínima dissipada pela rede. Tudo depende do arranjo de “boosters” e válvulas utilizado para o cálculo do regime extensivo. Outra observação é que quando o elitismo foi utilizado, a função objetivo apresentou o maior valor na primeira geração. Após isto, o valor da função objetivo sempre diminuiu até alcançar a convergência, independente de se utilizar cem (100) ou duzentas (200) gerações para os cálculos. Quando o elitismo não foi utilizado, a função objetivo não apresentou o maior valor na primeira geração. A função objetivo atingiu valores consideravelmente maiores nas gerações posteriores, independente de se utilizar cem (100) ou duzentas (200) gerações para os cálculos. Isto ocorreu devido às oscilações dos valores da função objetivo durante os cálculos, como já comentado. 4.6 Rede 2 A seguir, utilizou-se a rede de distribuição de água da cidade de Campo BomRS (Albuquerque, 1980) esquematizada a seguir para fazer testes adicionais com o modelo híbrido. A rede possui dois “boosters” instalados no tubo 18 e 36 e duas válvulas gaveta nos tubos 2 e 36. As válvulas foram instaladas nestes tubos pois os nós 3, 22 e 23 podem apresentar problemas de sobrepressão durante os cálculos. Os 99 “boosters” foram instalados nestes tubos pois os nós 19, 20, 21, 28 e 33 podem apresentar problemas de subpressão durante os cálculos. Foi utilizada uma população de dez (10) indivíduos, que foi testada para cem (100) e duzentas (200) gerações. Para cada um dos dois grupos de gerações, variouse a porcentagem de crossover em 60%, 80% e 95% e a porcentagem de mutação em 0.5%, 1% e 2% respectivamente, resultando em seis gráficos. Foi utilizado um fator de escala de 1.5 e o elitismo não foi aplicado Os gráficos estão representados a seguir. É necessário observar que a rede continuou sendo calculada para 5 períodos e que a rugosidade absoluta para todos os tubos é 0,1mm (cimento amianto). Figura 23 – Esquema da rede de distribuição de Campo Bom-RS 100 Tabela 3 – Dados da rede da cidade de Campo Bom-RS regime permanente (Albuquerque, 1980) 1 Demanda (l/s) -272,50 Cota do nó (m) 15 1 Comprimento (m) 1 Diâmetro (m) 0,5 2 27,55 15 2 220 0,5 3 3,03 10 3 280 0,5 4 4,83 20 4 420 0,4 5 2,48 18 5 140 0,35 6 5,87 25 6 280 0,35 7 7,67 35 7 450 0,35 8 38,05 35 8 190 0,3 9 - 25 9 450 0,15 10 8,52 20 10 300 0,1 11 - 15 11 400 0,1 12 4,52 15 12 490 0,4 13 - 15 13 360 0,4 14 7,25 20 14 830 0,4 15 5,46 20 15 550 0,4 16 10,62 25 16 540 0,4 17 9,61 25 17 420 0,35 18 45,50 34 18 180 0,35 19 6,12 27 19 10 0,3 20 - 25 20 400 0,1 21 8,51 25 21 280 0,1 22 13,02 25 22 280 0,1 23 - 25 23 510 0,1 24 10,24 30 24 90 0,1 25 9,00 27 25 180 0,1 26 - 30 26 670 0,1 27 - 34 27 200 0,1 28 2,19 35 28 200 0,1 Nó Trecho 101 Tabela 3 – Dados da rede da cidade de Campo Bom-RS regime permanente (Albuquerque, 1980) (continuação) 29 - 30 29 490 0,1 30 - 15 30 430 0,1 31 22,66 15 31 1430 0,2 32 10,24 20 32 320 0,4 33 9,56 20 33 90 0,4 34 - 17 34 110 0,4 35 420 0,4 36 360 0,4 37 290 0,1 38 230 0,1 39 140 0,1 102 Tabela 4 – Demandas usadas no cálculo do regime extensivo em Campo Bom-RS Nó 1 Demanda 1 (l/s) -272,50 Demanda 2 (l/s) -272,50 Demanda 3 (l/s) -272,50 Demanda 4 (l/s) -272,50 Demanda 5 (l/s) -272,50 2 27,55 27,55 28,87 27,55 21,58 3 3,03 3,03 -9,53 3,03 13,45 4 4,83 4,83 -21,83 4,83 -4,83 5 2,48 2,48 15,48 2,48 2,48 6 5,87 13,70 5,87 5,87 9,58 7 7,67 9,67 9,67 7,67 6,34 8 38,05 48,05 38,05 38,05 27,33 10 8,52 8,52 8,52 8,52 3,52 12 4,52 4,52 4,52 4,52 4,52 14 7,25 27,25 -27,25 7,25 1,05 15 5,46 5,46 -18,46 5,46 5,46 16 10,62 20,62 14,62 10,62 10,62 17 9,61 7,09 19,10 9,61 2,34 18 45,50 20,00 57,50 45,50 39,50 19 6,12 15,72 6,12 6,12 7,63 21 8,51 13,51 8,51 8,51 8,51 22 12,02 20,34 20,02 13,02 13,02 24 10,24 7,24 10,24 10,24 10,24 25 9,00 9,00 9,00 9,00 5,61 28 2,19 18,87 21,42 2,19 -2,19 31 22,66 22,66 38,66 22,66 22,66 32 10,24 -11,24 -13,40 10,24 10,24 33 9,56 9,56 41,56 9,56 10,56 103 população:10 crossover:60% mutação:0.5% 83450 83350 83250 83150 83050 potência dissipada (W) 82950 82850 82750 82650 potência dissipada (W) 82550 82450 82350 82250 82150 82050 81950 81850 81750 81650 gerações 0 10 20 30 40 50 60 70 80 90 100 Figura 24 – Potência X 100 gerações, crossover:60% e mutação:0.5%, sem elitismo população:10 crossover:80% mutação:1% 83650 83550 83450 83350 83250 83150 potência dissipada (W) 83050 82950 82850 82750 potência dissipada (W) 82650 82550 82450 82350 82250 82150 82050 81950 81850 81750 81650 gerações 0 10 20 30 40 50 60 70 80 90 100 Figura 25 – Potência X 100 gerações, crossover:80% e mutação:1%, sem elitismo 104 população:10 crossover:95% mutação:2% 83550 83450 83350 83250 83150 83050 potência dissipada (W) 82950 82850 82750 82650 potência dissipada (W) 82550 82450 82350 82250 82150 82050 81950 81850 81750 81650 gerações 0 10 20 30 40 50 60 70 80 90 100 Figura 26 – Potência X 100 gerações, crossover:95% e mutação:2%, sem elitismo Pelas três figuras anteriores, percebe-se que a função objetivo tende a convergir nos três casos, mas percebe-se também, que o valor dela oscila durante todo o cálculo, nunca chegando a um valor fixo para o número de gerações utilizadas. Nota-se que na fig.25 a função objetivo tende a convergir com maior rapidez e a potência dissipada final foi de 81681,405W para as taxas de crossover e mutação utilizadas. A fig. 26 apresentou o menor valor de potência dissipada final, sendo de 81678,547W para as taxas de crossover e mutação utilizadas. Não se sabe se este valor é o ótimo global devido às oscilações dos valores da função objetivo. A fig.24 apresentou o maior valor de potência dissipada final, sendo de 81775,749W para as taxas de crossover e mutação utilizadas. 105 82700 população:10 crossover:60% mutação:0.5% 82650 82600 82550 82500 82450 82400 potencia dissipada (W) 82350 82300 82250 82200 potencia dissipada (W) 82150 82100 82050 82000 81950 81900 81850 81800 81750 81700 81650 gerações 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 Figura 27 – Potência X 200 gerações, crossover:60% e mutação:0.5%, sem elitismo 83150 população:10 crossover:80% mutação:1% 83050 82950 82850 82750 potência dissipada (W) 82650 82550 82450 potência dissipada (W) 82350 82250 82150 82050 81950 81850 81750 81650 gerações 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 Figura 28 – Potência X 200 gerações, crossover:80% e mutação:1%, sem elitismo potência dissipada (W) 106 84550 84450 84350 84250 84150 84050 83950 83850 83750 83650 83550 83450 83350 83250 83150 83050 82950 82850 82750 82650 82550 82450 82350 82250 82150 82050 81950 81850 81750 81650 população:10 crossover:95% mutação:2% potência dissipada (W) gerações 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 Figura 29 – Potência X 200 gerações, crossover:95% e mutação:2%, sem elitismo Pelas três figuras anteriores, percebe-se que a função objetivo tende a convergir nos três casos, mas percebe-se também, que o valor dela oscila durante todo o cálculo, nunca chegando a um valor fixo para o número de gerações utilizadas. Nota-se que na fig.27 a função objetivo tende a convergir com maior rapidez e a potência dissipada final teve o menor valor das três figuras, sendo de 81667,981W para as taxas de crossover e mutação utilizadas. Não se sabe se este valor é o ótimo global devido às oscilações dos valores da função objetivo. A fig.29 apresentou o maior valor de potência dissipada final, sendo de 81690,574W para as taxas de crossover e mutação utilizadas. Decidiu-se fazer os cálculos usando duzentas gerações, para ver se a função objetivo não iria oscilar tanto quanto quando se usou cem gerações, o que não aconteceu. Além do mais, cem gerações é um número baixo quando se quer otimizar uma função objetivo utilizando AG para um problema de rede. A seguir, os cálculos foram refeitos aplicando o elitismo. Os gráficos estão representados a seguir. 107 população:10 crossover:60% mutação:0.5% 82050 82040 82030 82020 potência dissipada (W) 82010 82000 81990 81980 potência dissipada (W) 81970 81960 81950 81940 81930 81920 81910 81900 gerações 0 10 20 30 40 50 60 70 80 90 100 Figura 30 – Potência X 100 gerações, crossover:60% e mutação:0.5%, com elitismo 82050 população:10 crossover:80% mutação:1% 82030 82010 81990 81970 81950 potência dissipada (W) 81930 81910 81890 81870 81850 potência dissipada (W) 81830 81810 81790 81770 81750 81730 81710 81690 81670 81650 gerações 0 10 20 30 40 50 60 70 80 90 100 Figura 31 – Potência X 100 gerações, crossover:80% e mutação:1%, com elitismo 108 82050 população:10 crossover:95% mutação:2% 82030 82010 81990 81970 81950 potência dissipada (W) 81930 81910 81890 81870 81850 potência dissipada (W) 81830 81810 81790 81770 81750 81730 81710 81690 81670 81650 gerações 0 10 20 30 40 50 60 70 80 90 100 Figura 32 – Potência X 100 gerações, crossover:95% e mutação:2%, com elitismo Pelas três figuras anteriores, percebe-se que a função objetivo convergiu nos três casos e o valor dela não oscilou em momento algum durante o cálculo. Nota-se que na fig.32 a função objetivo convergiu com maior rapidez e a potência dissipada final teve o menor valor das três figuras, sendo 81664,210W para as taxas de crossover e mutação utilizadas. A fig.30 obteve o maior valor de potência dissipada final, sendo de 81904,656W. A fig.31 obteve o valor de 81664,574W para a potência dissipada final. Em termos práticos, as diferenças entre os valores das potências dissipadas finais na fig.31 (81664,574) e na fig. 32 (81664,210) é irrelevante. 109 população:10 crossover:60% mutação:0.5% 82050 82030 82010 81990 81970 81950 potência dissipada (W) 81930 81910 81890 81870 81850 potência dissipada (W) 81830 81810 81790 81770 81750 81730 81710 81690 81670 81650 gerações 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 Figura 33 – Potência X 200 gerações, crossover:60% e mutação:0.5%, com elitismo 82050 população:10 crossover:80% mutação:1% 82030 82010 81990 81970 81950 potência dissipada (W) 81930 81910 81890 81870 81850 potência dissipada (W) 81830 81810 81790 81770 81750 81730 81710 81690 81670 81650 gerações 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 Figura 34 – Potência X 200 gerações, crossover:80% e mutação:1%, com elitismo 110 82050 população:10 crossover:95% mutação:2% 82030 82010 81990 81970 81950 potência dissipada (W) 81930 81910 81890 81870 81850 potência dissipada (W) 81830 81810 81790 81770 81750 81730 81710 81690 81670 81650 gerações 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160 170 180 190 200 Figura 35 – Potência X 200 gerações, crossover:95% e mutação:2%, com elitismo Pelas três figuras anteriores, percebe-se que a função objetivo convergiu nos três casos e o valor dela não oscilou em momento algum durante o cálculo. Nota-se que na fig.35 a função objetivo convergiu com maior rapidez e a potência dissipada final teve o menor valor das três figuras, sendo 81660,832W para as taxas de crossover e mutação utilizadas. A fig.34 obteve o maior valor de potência dissipada final, sendo de 81678,520W. A fig.33 obteve o valor de 81669,049W para a potência dissipada final. Pelos resultados obtidos, pode-se concluir que o ótimo global deve ser um valor entre 81660W e 81661W. Embora se tenha alcançado a convergência da função objetivo nas três figuras onde se utilizou cem gerações durante o cálculo, decidiu-se fazer os cálculos usando duzentas gerações também, pois cem gerações é um número baixo quando se quer otimizar uma função objetivo utilizando AG. Outro motivo de se fazer os cálculos utilizando duzentas gerações foi verificar o comportamento da função objetivo e como se pôde observar, a função objetivo obteve melhores valores do que quando se utilizou cem gerações. 111 Pode-se observar que o melhor valor obtido para a função objetivo em relação a todas as figuras anteriores, foi o valor da fig.35, que foi de 81660,832W. Este valor foi obtido quando se utilizou duzentas (200) gerações com taxa de crossover de 95%, taxa de mutação de 2% e elitismo. A seguir, mostra-se a tabela 5 com os valores dos coeficientes de perda de carga (kv) das válvulas instaladas na rede, que proporcionaram o valor obtido para a função objetivo na fig. 35 (81660,832W), o melhor de todos. Tabela 5 – Valores de kv para o melhor valor da função objetivo obtido período 1 período 2 período 3 período 4 período 5 válvula 1 91.6774 0.0000 6.3226 0.0000 47.4194 válvula 2 85.3548 94.8387 94.8387 12.6452 0.0000 Outra observação importante é que esta mesma rede foi calculada utilizando a segunda opção de cálculo. Isto foi feito para se obter o valor da potência dissipada final na rede sem a presença de válvulas, sendo este igual a 81766,137W. Este valor é maior que o valor obtido na fig.35, ou seja, 81660,832W. Isto ocorreu porque pelo arranjo de “boosters” e válvulas utilizado na rede para o cálculo do regime extensivo, o AG obteve um conjunto de abertura de válvulas que obteve uma potência dissipada menor que a potência dissipada na rede quando não se utiliza válvulas. Outra observação é que quando o elitismo foi utilizado, a função objetivo teve o maior valor na primeira geração. Após isto, o valor da função objetivo sempre diminuiu até alcançar a convergência, independente de se utilizar cem (100) ou duzentas (200) gerações para os cálculos. Quando o elitismo não foi utilizado, a função objetivo não teve o maior valor na primeira geração. A função objetivo atingiu valores consideravelmente maiores nas gerações posteriores, independente de se utilizar cem (100) ou duzentas (200) gerações para os cálculos. Isto ocorreu devido às oscilações dos valores da função objetivo durante os cálculos, como já comentado. 112 5 Discussão Como já foi dito, o modelo híbrido desenvolvido fornece três opções de cálculo. A seguir, cada opção de cálculo será analisada separadamente. 5.1 Primeira opção de cálculo A primeira opção de cálculo serve para se projetar a rede ou para verificar como seria o funcionamento ideal da rede, caso esta já exista. Como já foi dito, o programa calcula o regime permanente da rede como se houvesse apenas tubos e vazões de entrada e saída nos nós, podendo ou não haver reservatório(s) com nível(eis) constante(s). 5.1.1 Principais dificuldades encontradas na implementação do método Durante a elaboração do programa para o cálculo do regime permanente, foram enfrentadas várias dificuldades. O método utilizado foi baseada no artigo de Nahavandi, Catanzaro (1973). Neste artigo, os autores não entraram em detalhes a respeito de vários aspectos, como por exemplo: a) Os autores não mencionaram o fato da matriz de conexão ter um tubo fictício e não mostraram um esquema da matriz de conexão. Eles apenas explicaram como a matriz de conexão é montada e colocaram um esquema confuso da rede que eles utilizaram como exemplo. b) Os autores também não explicaram o procedimento a ser tomado quando houver um reservatório conectado a um trecho com extremidade livre, nem quando houver um reservatório ligado a outro reservatório por vários trechos em linha. Apesar de estes exemplos citados serem simples, o método apresentada não consegue resolvêlos. 113 5.2 Segunda opção de cálculo A segunda opção de cálculo permite calcular o regime permanente junto com o regime extensivo considerando-se a variação dos níveis d‟água dos reservatórios presentes na rede (caso existam) e podendo-se considerar ou não a presença de “boosters” na rede sem se considerar as válvulas. A segunda opção fornece ao usuário o valor da potência dissipada na rede como um todo para os períodos calculados (1 a 24) do regime extensivo. Este valor de potência dissipada serve como base de comparação para o usuário quando este for utilizar a terceira opção de cálculo. 5.2.1 Principais dificuldades encontradas na implementação do método Ainda com referência ao artigo de Nahavandi, Catanzaro (1973), os autores não entraram em detalhes a respeito dos seguintes aspectos: a) Os autores não explicaram quais os procedimentos que devem ser tomados e como é a entrada de dados quando houver válvulas, reservatórios ou “boosters” na rede. Tudo precisou ser desenvolvido. b) Os autores dizem que o método pode ser utilizado para se calcular as vazões nos tubos e as pressões nos nós para o regime transitório, mas os autores também não entraram em detalhes a respeito dos procedimentos a serem utilizados pelo regime transitório. Na verdade, eles falaram muito pouco a respeito do cálculo transitório. Além disto, os autores não falaram a respeito do regime extensivo. c) A princípio, tentou-se aplicar válvulas, boosters e variações das vazões de entrada/saída durante o cálculo do regime permanente, mas depois de várias tentativas, chegou-se à conclusão de que só é possível fazer isto no regime transitório e/ou no regime extensivo, pois como já foi dito, o método utilizado não considera a variação do nível d‟água dos reservatórios durante o cálculo do regime permanente. Isto resultou em problemas, tais como: 114 c.1) Quando, por exemplo, se varia a vazão de entrada em um nó que contém um reservatório, e a equação de continuidade global da rede não é mais satisfeita, o nível do reservatório permanece constante durante todo o cálculo. c.2) Quando se coloca uma válvula na saída de um reservatório, mesmo considerando a válvula completamente fechada, no final do cálculo, a vazão que sai do reservatório é a mesma que sairia caso a válvula estivesse totalmente aberta e o nível deste não varia. O método simplesmente ignora o fato da válvula estar fechada. c.3) Se um booster é colocado na saída de um reservatório, mesmo quando a vazão que o booster bombeia é maior ou menor do que a vazão que abastece o reservatório, a lâmina d‟água no reservatório permanece constante. 5.3 Terceira opção de cálculo A terceira opção de cálculo permite calcular a segunda opção acrescida dos efeitos de válvulas instaladas na rede onde se procura otimizar as operações da rede pela utilização do AG. Antes do usuário utilizar a terceira opção, sugere-se que seja calculado o regime permanente e o extensivo utilizando a segunda opção para se avaliar a situação da rede. A terceira opção de cálculo pode ser utilizada de duas formas: a) Se a rede estiver sendo projetada, após o usuário obter os resultados através da segunda opção, ele poderá avaliar os reservatórios e os nós que estão com problema de pressão (acima ou abaixo do permitido) e assim decidir em quais tubos poderão ser instaladas válvulas e/ou “boosters”. Caso seja necessário instalar apenas “boosters”, a terceira opção de cálculo não será necessária, basta usar a segunda. b) Se a rede já existir e houver válvulas instaladas, o usuário calcula o regime permanente e o extensivo através da segunda opção sem considerar as válvulas 115 (como se na realidade elas estivessem totalmente abertas) e após isto, o usuário identifica os pontos da rede que estão com problema (se existirem) e propõe mudanças como permitir que a variação do(s) nível(eis) do(s) reservatório(s) seja maior que a permitida na atualidade, instalar mais válvulas em outros tubos, retirar válvulas já instaladas em tubos, mudar alguma válvula de um tubo para outro, instalar e/ou retirar “boosters”, etc. Após estas mudanças, o usuário reavalia a rede novamente e decide qual opção de cálculo será utilizada. Deve-se esclarecer que a terceira opção de cálculo (modelo híbrido) deverá ser utilizada em redes de abastecimento que apresentem problemas operacionais e que precisem ser resolvidos com a instalação de válvulas ou que tenham válvulas instaladas. Se a rede não apresentar problemas, não será necessário utilizar a otimização proposta neste trabalho. Outro esclarecimento é que, a princípio, apenas um tipo de válvula poderá ser utilizado na rede (ou gaveta, ou borboleta1, etc) devido a problemas internos do programa. Futuramente pretende-se expandir a capacidade do programa para vários tipos de válvulas poderem ser utilizadas na rede. 5.4 Modificações feitas no método No método original de Nahavandi, Catanzaro (1973), o usuário do programa de computador desenvolvido neste projeto tinha que montar a matriz de conexão no arquivo de entrada de dados. Descobriu-se uma maneira do próprio programa de computador montar a matriz de conexão. Isto facilitou muito a entrada de dados do programa. Por exemplo, para uma rede com duzentos tubos e cento e cinqüenta nós, seria necessário digitar duzentas linhas com cento e cinqüenta colunas cada uma, ou seja, o usuário teria que digitar trinta mil números. Agora, o programa de computador cria esta matriz em poucos segundos. Outra modificação feita é que o usuário não precisa mais entrar com o intervalo de tempo para calcular os valores de (já explicados antes). Quando o usuário entrava com o intervalo de tempo, muitas vezes este valor proposto não 1 Esta válvula deve ser operada com cuidado p/ se evitar a ruptura da tubulação devido ao transitório 116 obedecia a condição de Courant e por causa disto, o programa apresentava erros durante os cálculos e não terminava de calcular a rede. Agora, o programa de computador calcula o intervalo de tempo obedecendo a condição de Courant e não apresenta mais problemas de cálculo por causa do valor do intervalo de tempo. Desenvolveu-se também uma maneira de se calcular as pressões nos nós da rede, de modo que estas fiquem entre os limites mínimo e máximo admitidos por norma no caso de se estar projetando uma rede. Caso a rede já exista, é possível verificar se estes limites estão sendo obedecidos. Para isto, o programa de computador segue o seguinte procedimento: a) Entra-se com valores das pressões máxima e mínima admissíveis na rede no arquivo de entrada. b) O programa de computador calcula a rede como se houvesse apenas tubos e vazões de entrada e saída nos nós. c) Depois de calculada a rede, o programa de computador verifica qual o nó que tem o maior valor de pressão. Caso a pressão deste nó seja negativa, o programa pega o valor da pressão máxima admissível na rede e a soma ao módulo do valor da pressão do nó. Caso contrário, o programa pega o valor da pressão máxima admissível na rede e subtrai dela o valor da pressão do nó. Após isto, o programa pega este valor calculado e o soma a todos os nós da rede. Este procedimento garante que a pressão máxima admissível na rede seja respeitada, mas não garante que a pressão mínima será respeitada. Para isto, cabe ao usuário analisar o arquivo de saída. O usuário verifica as pressões em todos os nós da rede. Caso haja algum nó que tenha uma pressão menor que a admissível por norma, o usuário poderá executar dois procedimentos: a) Se a rede estiver sendo projetada, o usuário poderá modificar alguns dados do arquivo de entrada tais como a rugosidade dos tubos, o diâmetro ou o comprimento. 117 b) Se a rede já existir, o usuário terá condições de dizer aos operadores da rede onde estão ocorrendo os problemas e propor soluções como instalação de boosters, troca de tubos, etc. O procedimento descrito anteriormente serve também para se calcular ou verificar as cotas piezométricas dos reservatórios: a) Se a rede estiver sendo projetada, após o programa calculá-la, o usuário verifica o arquivo de saída e espera-se que ele escolha o nó de maior cota para se colocar o reservatório pulmão, atribuindo a este a correspondente pressão neste nó, calculada pelo programa. Se houver mais de um reservatório na rede, escolhe-se previamente os nós onde estes reservatórios estarão localizados e atribui-se a eles as correspondentes pressões nestes nós, calculadas pelo programa. b) Se a rede já existir, após o programa calculá-la, o usuário verifica o arquivo de saída. Caso as cotas piezométricas dos reservatórios, calculadas pelo programa, não coincidam com as cotas existentes, cabe ao usuário analisar as possíveis causas para isto estar acontecendo e sugerir as possíveis modificações viáveis. A programação e a entrada de dados, para contemplar a existência de válvulas, reservatórios ou “boosters” na rede, foi desenvolvida pelo autor. Toda a formulação matemática para o cálculo do regime transitório e do regime extensivo também foi desenvolvida pelo autor. Na programação do regime transitório e do regime extensivo, a variação das vazões de entrada/saída nos nós foi considerada primeiro. Para se calcular a variação do nível d‟água nos reservatórios, considerou-se que esta seria igual à diferença entre a pressão no nó do reservatório do instante de cálculo atual e a pressão no nó do reservatório do instante de cálculo anterior multiplicada pela área da base do reservatório e dividida pelo intervalo de tempo (definido pela condição de Courant). Esta maneira de calcular a variação do nível d‟água do reservatório não funcionou, pois os resultados forneciam valores cada vez maiores a cada intervalo de tempo que acabavam por exceder a memória de cálculo do computador. Após várias tentativas 118 frustradas, resolveu-se tentar calcular a variação do nível d‟água do reservatório utilizando apenas a equação da continuidade como já mostrado anteriormente. Esta nova maneira para se calcular a variação do nível d‟água do reservatório foi testada e funcionou a contento. 119 6 Conclusões O objetivo da pesquisa foi desenvolver um modelo híbrido, que após calcular as cargas e as vazões para o regime permanente e para o regime extensivo, utiliza um algoritmo genético para otimizar o controle operacional de redes hidráulicas. A partir dos resultados alcançados com o programa de computador desenvolvido, chegou-se às seguintes conclusões: Foi ampliada a aplicabilidade do método criado por Nahavandi, Catanzaro (1973), pois foi desenvolvido os métodos para se calcular os períodos extensivo e transitório. Foi desenvolvida a técnica para se calcular a rede quando houver válvulas, reservatórios ou boosters presentes e para se calcular a variação do nível d‟água nos reservatórios. A entrada de dados foi facilitada, pois no artigo de Nahavandi, Catanzaro (1973), o usuário tinha que montar a matriz de conexão no arquivo de entrada de dados e agora o próprio programa de computador monta a matriz de conexão. Além disto, o programa calcula o intervalo de tempo obedecendo a condição de Courant e não apresenta mais problemas de cálculo por causa do valor do intervalo de tempo. Foi desenvolvida uma maneira de se calcular as pressões nos nós da rede, de modo que estas fiquem entre os limites mínimo e máximo admitidos por norma. A parte do modelo híbrido que se refere ao cálculo hidráulico está funcionando a contento, pois os valores obtidos pelo modelo para as duas redes utilizadas como exemplo neste projeto estão próximos dos valores originais obtidos da literatura pesquisada. Concluiu-se que a potência dissipada final na rede sem a presença de válvulas, não necessariamente é a potência mínima dissipada pela rede, como se 120 pensou a princípio. Tudo depende do arranjo de “boosters” e válvulas utilizado para o cálculo do regime extensivo. Para as duas redes calculadas neste projeto, o menor valor de potência dissipada foi obtido quando se utilizou duzentas (200) gerações com taxa de crossover de 95%, taxa de mutação de 2% e elitismo. Pelos resultados obtidos, conclui-se que o elitismo foi necessário para conseguir uma convergência segura do valor da função objetivo, pois quando não se usou o elitismo, o valor da função objetivo tendeu a convergir, mas oscilou durante todo o cálculo, nunca chegando a um valor fixo. A otimização proposta neste trabalho serve para ser utilizada em redes de abastecimento que apresentem problemas operacionais e que precisem ser resolvidos com a instalação de válvulas ou que tenham válvulas instaladas. A parte do modelo híbrido que se refere ao algoritmo genético está funcionando a contento, pois os valores da função objetivo obtidos pelo modelo convergiram em todos os cálculos nos quais o elitismo foi utilizado. O modelo computacional hidrodinâmico desenvolvido neste projeto serve para três propósitos: dimensionar uma rede que estiver sendo projetada, verificar o funcionamento de uma rede existente diagnosticando os problemas que estão ocorrendo e otimizar o funcionamento de uma rede, quando consorciado com o algoritmo genético. 6.1 Recomendações Recomenda-se que se façam testes adicionais com o modelo híbrido desenvolvido, tanto na parte de cálculo hidráulico (calcular outras redes com problemas diferentes) como na parte de algoritmo genético (calcular as redes utilizadas como exemplo neste projeto com maior número de gerações, utilizar outras 121 técnicas de recombinação e seleção e utilizar um algoritmo genético que trabalhe com números reais ao invés de números binários para se comparar os resultados obtidos). Recomenda-se expandir a capacidade do programa para que vários tipos de válvulas possam ser utilizadas na rede. Recomenda-se que se estude um método para tratar as matrizes utilizadas pelo modelo desenvolvido, pois o tempo de processamento aumentou significativamente quando se calculou a segunda rede utilizada como exemplo neste projeto. Além do mais, os métodos existentes não puderam ser aplicados nas matrizes que compõem a parte de cálculo hidráulico do modelo híbrido desenvolvido. 122 Anexo 1 A.1 Desenvolvimento matemático para o regime extensivo O método baseia-se em três equações escritas em forma matricial. A eq.(3) relaciona a diferença de carga piezométrica de um trecho com as cargas piezométricas nos nós extremos do referido trecho: P P C g g (3) A eq.(31) do método é a da continuidade escrita em forma matricial para os nós: C T Q Q Q Q es e s (31) Pela eq.(15), já mostrada anteriormente, nota-se que: HA Q Q e s t (15) A eq.(5) é a da quantidade de movimento em forma de diferenças finitas (matricial): D 2 4 v v0 L t D 2 D 2 Z D 2 D 2 P g L gH v Fav gH 4 4 4 4 L (5) A força de atrito viscoso Fav é dada matricialmente por: ' 0 0 8fL Q Q Fav g 2 5 D g D2 4 (6) 123 Pela substituição de{Fav}, dado pela eq.(6), na eq.(5) e levando-se em conta que v = Q/(D2/4), a eq.(5) transforma-se em: Q Q0 8fL'Q0 Q0 D2 g P Z H H v t 2D5g 4 L g (7) O fator de atrito f pode ser calculado pela fórmula de Swamee (matricial): 1 16 8 8 6 f 64 9,5ln K 5,062,9 2500 3,71D R R R (8) Resolve-se a eq.(7) para Q, obtendo-se: Q Q0 gP Z H Hv Pc (9) onde: D2 gt 4L Pc (10) 8fL'Q0 Q0 2D5g (11) Substituindo-se a matriz coluna {P/(g)} da eq.(3) na eq.(9) e substituindose o resultado na eq.(31), chega-se a: C T Q 0 C T * * C P C T Z H H P Q Q Q (32) v c es e s g 124 Resolvendo-se a eq.(32) para{P/(g)}, chega-se a: P 0 1 1 T 1 M Qe Qs M C Z H Hv Pc Q M Qes g (33) onde M é uma matriz quadrada, definida como: M CT * * C (14) Na eq.(15), multiplica-se Qe Qs por t e substitui-se HA na eq.(33) obtendo-se a eq.(16), já mostrada anteriormente: P 0 1 1 T 1 M HA M C Z H Hv Pc Q M Qes g (16) A solução numérica do problema pode ser obtida pela resolução das eqs.(16), (3) e (9) em um computador digital. 125 A.2 Desenvolvimento matemático para o regime transitório O método baseia-se em três equações escritas em forma matricial. A eq.(20) relaciona a diferença de carga piezométrica de um trecho com as cargas piezométricas nos nós extremos do referido trecho: * * P P C g g (20) A eq.(34) do método é a da continuidade escrita em forma matricial para os nós: C Q Q * T es * Qe * Qs * (34) A variação da lâmina d‟água é calculada pela equação da continuidade: H* A Q * Q * e s t (35) A eq.(36) é a da quantidade de movimento em forma de diferenças finitas (matricial): D2 v * v 0 2 2 2 2 P* D g D L Z gH * D gH * D F L v av 4 4 L 4 4 4 t (36) A força de atrito viscoso Fav é dada matricialmente por: ' 0 0 8fL Q Q Fav g 2 5 D g D2 4 (6) 126 Pela substituição de{Fav}, dado pela eq.(6), na eq.(36) e levando-se em conta que v* = Q*/(D2/4), a eq.(36) transforma-se em: Q* Q0 8fL'Q0 Q0 D2 g P * * * Z H H v t 2D5g 4 L g (37) O fator de atrito f pode ser calculado pela fórmula de Swamee (matricial): 1 16 8 8 6 f 64 9,5ln K 5,062,9 2500 3,71D R R R (8) Resolve-se a eq.(37) para Q*, obtendo-se a eq.(21), : Q* Q0 gP * Z H* Hv* Pc (21) onde: D2 gt 4L Pc (10) 8fL'Q0 Q0 (11) 2D5g Substituindo-se a matriz coluna {P/(g)}* da eq.(20) na eq.(21) e substituindo-se o resultado na eq.(34), chega-se a: * CT Q0 CT * * C P CT Z H* H * P Q * Q * Q * v c es e s g (38) 127 Resolvendo-se a eq.(38) para{P/(g)}*, chega-se a: * P * 0 1 * * 1 T * 1 * M Qe Qs M C Z H Hv Pc Q M Qes (39) g onde M é uma matriz quadrada, definida como: M CT * * C (14) Na eq.(35), multiplica-se Qe * Qs* por t e substitui-se H*A na eq.(39) obtendo-se a eq.(40): * P * 0 1 * 1 T * 1 * M H A M C Z H Hv Pc Q M Qes g (40) Após os coeficientes Ces terem sidos calculados através da eq.(17), calculase Qes * através da eq.(18) e substitui-se na eq.(40), obtendo-se a eq.(19), todas estas equações já foram definidas anteriormente: * P Pes * 0 1 * 1 T * 1 M H A M C Z H Hv Pc Q M Ces (19) g g A solução numérica do problema pode ser obtida pela resolução das eqs.(19), (20) e (21) em um computador digital. 128 A.3 Desenvolvimento matemático para o cálculo da função de penalidade Figura 36 – Função de penalidade X valor da carga piezométrica em um nó qualquer Decidiu-se que Hp med será igual a: Hp med Hp max Hp min 2 (41) Pela fig.36, nota-se quando a carga piezométrica no nó tem um valor entre Hp max e Hp min , o valor da função de penalidade (fp) tem valor igual a 1 e é definido pela eq.(23), já definida anteriormente: f p 1 se Hpmin Hp Hpmáx (23) Pela fig.36, nota-se que quando a carga piezométrica no nó tem um valor menor que Hp min , a função de penalidade (fp) tem valor maior que 1 e a seguinte relação pode ser descrita: 129 Hp med fp 1 Hp min Hp med Hp (42) Substituindo-se o valor de Hp med da eq.(41) na eq.(42) e resolvendo-se a eq.(42) para fp, chega-se a eq.(24), já definida anteriormente: fp 2Hp Hpmáx Hpmin Hpmáx Hpmin se Hp Hpmin (24) Pela fig.36, nota-se que quando a carga piezométrica no nó tem um valor maior que Hp max , a função de penalidade (fp) tem valor maior que 1 e a seguinte relação pode ser descrita: Hp max fp 1 Hp med Hp Hp med (43) Substituindo-se o valor de Hp med da eq.(41) na eq.(43) e resolvendo-se a eq.(43) para fp, chega-se a eq.(25), já definida anteriormente: fp 2Hp Hpmáx Hpmin Hpmáx Hpmin se Hp Hpmáx (25) 130 Lista de referências ALBUQUERQUE, J.A.L. Dimensionamento Automático de Redes de Abastecimento de Água. 1980. 121p. Dissertação (Mestrado) – Instituto de Pesquisas Hidráulicas, Universidade Federal do Rio Grande do Sul. Porto Alegre, 1980. COLEY, D.A. An Introdution to Genetic Algorithms for Scientists and Engineers. Singapore: World Scientific Publishing Co. Pte. Ltd, 1999. DANDY, G.C.; SIMPSON, A.R.; MURPHY, L.J. An Improved Genetic Algorithm for Pipe Network Optimization. Journal of Water Resources Planning and Management-ASCE, v.32, n.2, p.449-458, Feb. 1996. EPP, R.; FOWLER, A.G. Efficient Code for Steady-State Flows in Networks. Journal of the Hydrauics Division-ASCE, v.96, n.HY1. p. 43–56, Jan. 1970. FERNANDEZ, M.F.; ARAUJO, R.; ITO, A. E. Manual de Hidráulica Azevedo Netto. 8a Ed. atualizada. São Paulo: Editora Edgard Blücher LTDA, 2002. HAUPT, R.L.; HAUPT, S.E. Practical Genetic Algorithms. New York: Ed. WileyInterscience, Inc, c1998. JOWITT, P.W.; XU, C. Optimal Valve Control in Water-Distribution Networks. Journal of Water Resources Planning and Management-ASCE, v.116, n.4, p. 455-472, Jul-Aug. 1990. LUVIZOTTO JUNIOR, E. Algoritmos Genéticos para Otimização. Notas de Aula. Faculdade de Engenharia Civil. Departamento de Recursos Hídricos-Unicamp. MORSHED, J.; KALUARACHCHI, J.J. Enhancements to genetic algorithm for optimal ground-water management. Journal of Hydrologic Engineering-ASCE, v.5, n.1, p.67-73, 2000. 131 NAHAVANDI, A.N., CATANZARO, G.V. Matrix Method for Analysis of Hydraulic Networks. Journal of the Hydraulics Division-ASCE, v.99, n.HY1, p.47–63, Jan. 1973. ORMSBEE, L.E.; WOOD, D.J. Hydraulic Design Algorithms for Pipe Networks. Journal of Hydraulic Engineering-ASCE, v.112, n.12, p.1195–1207, Dec. 1986. PERERA, B.J.C.; CODNER, G.P. Reservoir Targets for Urban Water Supply Systems. Journal of Water Resources Planning and Management-ASCE, v.122, n.4, p.270-279, 1996. PORTO, R.L. et al. Técnicas Quantitativas para o Gerenciamento de Recursos Hídricos. 1a Ed. Porto Alegre: Editora da Universidade/UFRGS, 1997. PORTO, R.M. HIDRÁULICA BÁSICA. 2a Ed. São Carlos: EESC-USP, 2001. REIS, L.F.R.; PORTO, R.M.; CHAUDHRY, F.H. Optimal Location of Control Valves in Pipe Networks by Genetic Algorithms. Journal of Water Resources Planning and Management-ASCE, v.123, n.6, p.317-326, Nov-Dec. 1997. REISDORPH, K. Aprenda em 21 dias Delphi 4. Rio de Janeiro: Ed. Campus Ltda, 1999. RIBEIRO, L.C.L.J. Modelo híbrido para o estabelecimento de rotações ótimas de bombas de rotação variável. 2002. 117p. Dissertação (Mestrado) - Faculdade de Engenharia Civil, Universidade Estadual de Campinas. Campinas, 2002. SAVIC, D.A.; WALTERS, G.A. Genetic Algorithms for Least-Cost Design of Water Distribution Networks. Journal of Water Resources Planning and ManagementASCE, v.123, n.2, p.67-77, Mar-Apr. 1997. 132 SIMPSON, A.R.; DANDY, G.C.; MURPHY, L.J. Genetic algorithms compared to other techniques for pipe optimization, Journal of Water Resources Planning and Management-ASCE, v.120, n.4, p.423-443. 1994. WARDLAW, R.; SHARIF, M. Evaluation of Genetic Algorithms for Optimal Reservoir System Operation. Journal of Water Resources Planning and Management-ASCE, v.125, n.1, p.25-33, 1999. WOOD, D.J.; CHARLES, C.O.A. Hydraulic Network Analysis Using Linear Theory. Journal of the Hydraulics Division-ASCE, v.98, n.HY7, p.1157–1170, Jul. 1972. WOOD, D.J.; RAYES, A.G. Reliability of Algorithms for Pipe Network Analysis. Journal of the Hydraulics Division-ASCE, v.107, n.HY10, p.1145- 1161, Oct. 1981.