











Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Os melhores documentos à venda: Trabalhos de alunos formados
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Comunidade
Peça ajuda à comunidade e tire suas dúvidas relacionadas ao estudo
Descubra as melhores universidades em seu país de acordo com os usuários da Docsity
Guias grátis
Baixe gratuitamente nossos guias de estudo, métodos para diminuir a ansiedade, dicas de TCC preparadas pelos professores da Docsity
Este relatório descreve o procedimento utilizado para a modelagem de um programa para solução de problemas de fluxo de carga utilizando os métodos de Gauss e Gauss-Seidel através da interface do software Octave.
Tipologia: Manuais, Projetos, Pesquisas
1 / 19
Esta página não é visível na pré-visualização
Não perca as partes importantes!
Silas Bispo de Sousa FLUXO DE POTÊNCIA Modelagem computacional através dos métodos de Gauss e Gauss-Seidel Palmas - TO 2019
Silas Bispo de Sousa FLUXO DE POTÊNCIA Modelagem computacional através dos métodos de Gauss e Gauss-Seidel Trabalho submetido à disciplina de Sinais e Sistemas, 7 º período, do curso de Engenharia Elétrica do Instituto Federal do Tocantins, como requisito parcial para aprovação. Prof. Dr. Augusto Cesar dos Santos C. F. Vieira. Palmas - TO 2019
Resumo Este relatório descreve o procedimento utilizado para a modelagem de um programa para solução de problemas de fluxo de carga utilizando os métodos de Gauss e Gauss-Seidel através da interface do software Octave. 1 INTRODUÇÃO Com o desenvolvimento crescente do setor elétrico e o aumento de sua complexidade junto à ânsia por inovações e aperfeiçoamentos das tecnologias ligadas às atividades de operação e planejamento dos sistemas de energia elétrica (MANZONI, 2005, p. 1), torna-se mais do que necessário o estudo de técnicas que possam otimizar tais processos. No cenário atual, novas tecnologias computacionais estão permitindo o desenvolvimento exponencial dessas técnicas através do aproveitamento da grande capacidade e velocidade com que os computadores atuais efetuam rotinas de cálculos complexos. Desta maneira, é de grande importância que o profissional ligado a área de análise de sistemas elétricos se habituem com o desenvolvimento dessas tecnologias. Dentre os diversos campos de estudo na análise de sistema de potência, está o estudo de fluxo de potência, ou fluxo de carga, que leva em consideração o sistema elétrico em regime permanente e simétrico. Tal estudo permite analisar as características de funcionamento global do sistema. “O objetivo é determinar as tensões e potências em todos os barramentos de um sistema elétrico” (ALMEIDA, 20 17, p. 111 ). Na modelagem de sistemas do mundo real, os problemas não são lineares e, devido às suas complexidades, suas soluções são obtidas através de métodos numéricos como o de Gauss ou Newton-Raphson. A aplicação desses métodos, permite que a solução seja obtida através de uma rotina de cálculos iterativos simples utilizando valores de iterações anteriores que se repetem até que o erro entre os valores obtidos entre as iterações seja menor que um erro previamente especificado. Dentre os diversos métodos disponíveis, embora não seja o mais utilizado devido ao consumo de tempo, o método de Gauss é um dos mais didáticos e simples. Através dele é possível entender de maneira simples como os métodos interativos funcionam. Ainda, de maneira semelhante, existe o método de Gauss-Seidel, que explora a simplicidade do método de Gauss, mas tem uma convergência mais rápida. Neste relatório, são apresentadas duas modelagens para a solução de fluxo de carga, onde, um algoritmo é baseado no método de Gauss e o outro no de Gauss-Seidel. Os dois programas foram escritos utilizando o software Octave como interface e serão apresentados juntamente aos seus códigos-fonte. Ao final, os dois métodos serão comparados utilizando, ainda, os resultados obtidos através do software power world.
Antes de partir para a solução do sistema, é necessário conhecer alguns dados chave como as impedâncias das linhas de transmissão e características dos nós. Os sistemas elétricos de potência são, geralmente, apresentados num diagrama unifilar com diversas barras (nós). Tais barras são onde acontecem ligações importantes no mundo real (Geradores, transformadores, motores etc.). Essas barras são classificadas em três tipos baseado nas informações que, inicialmente, se conhece delas, sendo esses (ALMEIDA, 2017, p. 111):
Uma vez que o erro calculado seja menor do que o erro máximo especificado, interrompe-se as iterações e o sistema está resolvido. Baseando-se nessas considerações, o programa abaixo foi escrito para resolver o sistema apresentado através do método de Gauss usando como entrada as tabelas 1 e 2. A interface utilizada foi o software Octave. O programa foi dividido em duas partes: a primeira faz a leitura de dados através de tabelas em arquivo de texto (.txt) e produz a matriz admitância (Ybus), e a segunda parte soluciona o sistema através do método de Gauss considerando um erro máximo de 10-^5. 2.1.1 Primeria Parte: Coleta de dados
Os caracteres e símbolos escritos após ‘#’ e ‘%’ são comentários e não são lidos na execução do programa. A linha 1 utiliza o comando clear para limpar a área de trabalho do Octave e a linha 2 limpa a janela de comando através do comando clc. As linhas 4 e 5 limpam a memória do programa e coletam os dados das tabelas nos arquivos “dados_barra.txt” e dados_linha.txt” conforme a Tabela 1 e a Tabela 2, respectivamente. Esses valores são guardados nas matrizes ‘dadosbar’ e ‘dadoslin’. A linha 6 cria uma variável chamada ‘bar’ para salvar o número de barras do sistema. Esse comando vai levar em consideração o maior número da coluna onde estão o número das barras na tabela de dados de barra. Por exemplo, se o maior número for o da barra nº 18, então a variável bar recebe o número 1 8. A linha 8 define a potência base como 10 0 MVA. As linhas 11-19 criam as matrizes de dados de dimensão nx1 onde n é o número de barras. Cada uma dessas matrizes receberá os valores de uma das colunas da tabela de dados de barra. Na linha 21 a matriz ‘Num’ é preenchida com a coluna onde estão os números das barras na ordem da tabela de dados de barra. Os valores dos números das barras serão usados para organizar o preenchimento das outras matrizes em ordem crescente. Nas linhas 26- 69 , laços for são utilizados para preencher as matrizes de dados. O laço permite que todas as linhas da matriz ‘dadosbar’ da coluna referente ao dado preenchido, de acordo com a Tabela 1, sejam lidos e preenchidos na ordem crescente relacionando ao número da barra salvo na mesma linha da matriz ‘Num’. Desta maneira, mesmo que os dados da barra 2 estejam salvos na linha 3 da matriz de entrada, seus dados serão colocados na linha 2 das matrizes de dados pois sua posição nessas matrizes será o número do valor da matriz ‘Num’ na mesma posição. As linhas 45, 51, 57, 63 e 69 converte os valores de potência da entrada para p.u. utilizando o valor da potência base. As linhas 72 - 79 utiliza laços for para converter os valores dos módulos da tensão e da potência aparente para valores complexos utilizando a relação de números complexos. A tensão é convertida a partir do módulo e ângulo dados na tabela de entrada. A potência aparente é calculada utilizando a soma dos valores das potências ativas e reativas dadas na entrada, considerando potências geradas como positivas e potências de carga como negativas. As linhas 82 - 87 cria matrizes de dados de linha de maneira semelhante a feita com os dados de barra. Da mesma maneira, as linhas 90 - 121 preenchem as matrizes com os dados de linha de maneira semelhante às matrizes com os dados de barra. Há uma matriz para cada coluna e um laço for é utilizado para executar uma rotina que leia todas as linhas. A partir da linha 12 2 , a montagem da matriz admitância (Ybus) é feita.
Primeiramente, criamos uma matriz de impedâncias, onde seus valores são preenchidos conforme os números das barras, onde, a linha é o número da barra de origem e a coluna é o número da barra destino. Essa matriz é chamada de ‘Zprim’. Após a criação da matriz de impedâncias, uma matriz contendo os valores inversos dos elementos dessa matriz é criada. Essa matriz se chama ‘Yprim’. Finalmente, a matriz ‘Ybus’ é criada a partir de ‘Yprim’ onde os elementos de ‘Ybus’ fora da diagonal principal recebem os valores dos elementos de ‘Yprim’ negativos e os elementos da diagonal principal de ‘Ybus’ recebem a soma de todos os elementos da linha relacionada da matriz ‘Yprim’. As linhas 125 - 1 31 criam a matriz ‘Zprim’ utilizando dois laços for, um para as linhas e outro, dentro para as colunas. Para cada ciclo do laço das linhas, o laço da coluna vai varrer os valores das colunas da tabela de dados de linha. Os valores serão a soma das resistências somadas as reatâncias e suas posições serão associadas à barra de origem na linha e à barra de destino na coluna. Um laço if garante que os valores de posições simétricas sejam preenchidos considerando um valor de linha diferente de um valor de coluna. As linhas 133- 143 criam a matriz ‘Yprim’ simplesmente preenchendo com o elemento na mesma posição da matriz ‘Zprim’ invertido através da função inv. Para isso é utilizado um laço for dentro de um laço if para impedir que haja divisão por zero. Se o valor na matriz ‘Zprim’ for zero, então o elemento na mesma posição da matriz ‘Yprim’ recebe zero. As linhas 147 - 162 criam a matriz ‘Ybus’ utilizando dois laços for, o primeiro para a linha e o segundo, dentro, para a coluna. Dentro dos laços for, um laço if vai atribuir a soma dos valores da linha da matriz ‘Yprim’ relacionada se o valor da linha for igual ao valor da coluna ou o valor negativo do elemento da matriz ‘Yprim’ relacionado se forem diferentes. Para efetuar a soma, um laço for auxiliado da função += foi utilizado. As linhas 164 e 165 informam o sucesso da coleta de dados, caso o programa tenha sido executado corretamente. 2.1.2 Segunda parte: aplicando o método de Gauss
O laço for nas linhas 64-68 atualiza os valores das matrizes ‘P’ e ‘Q’ a partir dos valores finais da matriz ‘S’, onde, ‘P’ é a parte real de ‘S’ e ‘Q’ é a parte imaginária de ‘S’. As linhas 69 - 75 exibem o resultado.
2. 2 Método de Gauss-Seidel O método de Gauss-Seidel é muito semelhante ao método de Gauss. A ideia nesse método é utilizar os valores das barras já calculados para calcular os valores das barras a calcular a cada iteração. Isso agiliza o processo de convergência. A equação para este método é apresentada abaixo: (Equação 3) A equação é, praticamente, a mesma que no método de Gauss. A diferença é que a soma foi dividida em duas partes. A primeira soma considera os valores da iteração atual, valores das barras já calculados. A segunda considera os valores da iteração anterior, as barras que ainda não foram calculados. Isso acontece a cada iteração. Assim, quando se calcular a tensão na barra 3, utiliza-se os valores da iteração atual das barras 1 e 2 e os valores anteriores para as barras 3 ou posteriores. A modelagem feita para o método de Gauss-Seidel foi a mesma anterior com a adição desse detalhe na linhas de soma. Assim, não é necessário a apresentação da primeira parte que contem apenas a coleta dos dados. E, na segunda parte, apenas as modificações serão comentadadas. 2.2.1 Segunda parte: aplicando as modificações de Gauss-Seidel 1. printf ('\t\t## MÉTODO DE GAUSS-SEIDEL ##\n\n'); 2. # Determiar erro mínimo 3. erromin = 1e-10; 4. # Método Gauss-Seidel 5. u = 0; 6. h = 0; 7. e = 0; 8. erro = 1; 9. Vn(bar,1) = 0; 10. while (erro > erromin) 11. u++; 12. for (k = 1:bar)
Figura 2: Resultados para o método de Gauss. Figura 3 : Resultados para o método de Gauss-Seidel. Observando-se os resultados obtidos através dos dois métodos, nota-se a grande diferença quanto ao número de iterações. Enquanto que no método de Gauss-Seidel só foram necessárias cinco iterações, no método de Gauss foram necessárias 3 4 iterações (7 vezes mais iterações!), atestando- se, dessa maneira, que o método de Gauss é muito mais lento. Ainda assim, os dois métodos convergiram para os mesmos valores com erros substancialmente pequenos, ainda que no método de Gauss-Seidel o erro foi 10 vezes menor, na ordem de 10-^7.
FLUXO DE POTÊNCIA. In: ALMEIDA, Alvaro A. W. NOTAS DE AULA EM SISTEMAS ELÉTRICOS DE POTÊNCIA. Paraná: UTFPR, 2017. cap. 7, p. 111-136. MANZONI, Alessandro. Desenvolvimento de dm Sistema Computacional Orientado a Objetos para Sistemas Elétricos de Potência: Aplicação a Simulação Rápida e Análise da Estabilidade de Tensão. Orientador: Djalma M. Falcão. 2005. 190 p. Tese (Doutorado) - Curso de Pós-Graduação em Engenharia Elétrica, UFRJ, Rio de Janeiro, 2005. Disponível em: http://pee.ufrj.br/teses/textocompleto/2005033151.pdf. Acesso em: 31 out. 2019.