Utilização de algoritmos genéticos para sintonia de controladores PID

algoritmos genéticos Desempenho de algoritmos genéticos
Este post faz parte da série Algoritmos genéticos com controladores PID. Leia também os outros posts da série:

Qual é o objetivo deste artigo?

 

Nos últimos anos é inegável que a tecnologia, de um modo geral, deu um salto no tempo, evoluindo de maneira assustadora em uma vasta gama de setores. Desta maneira, pode-se perceber nos dias atuais que os elementos existentes no campo dos sistemas de controle automático estão cada vez mais interligados com uma grande quantidade de recursos computacionais. Sendo assim, entre os recursos citados, destaca-se o fato de alguns algoritmos serem utilizados na implementação dos mais diversos tipos de estratégias de controle, principalmente na indústria, nos setores de controle de qualidade, produção, montagem, entre outros.

 

Em meio aos diversos tipos de controladores existentes, sem dúvidas, o controlador PID é o mais utilizado em ambientes industriais. Em virtude principalmente da sua simplicidade e da possibilidade de proporcionar resultados bastante satisfatórios em uma grande variedade de processos inerentes ao meio industrial, motivo portanto da sua grande aceitação. Entretanto, obviamente, existem algumas questões importantes na utilização destes controladores citados na indústria, onde a mais importante é indiscutivelmente a determinação adequada de seus parâmetros, ou em outras palavras, a sintonia do controlador para que o sistema responda de forma adequada.

 

Muitas vezes, a sintonia destes controladores é realizada de forma manual através da experiência dos operadores de determinado processo, com o auxílio de gráficos de reposta do sistema, o que por sua vez pode acarretar uma certa demora até que este esteja parametrizado de maneira conveniente. Neste sentido, é válido afirmar que recursos computacionais dotados de alto poder de processamento podem simplificar e agilizar esta tarefa, de modo que entre estes encontram-se os Algoritmos Genéticos.

 

Finalmente, deve-se informar o leitor que este artigo vem destacar a utilização dos Algoritmos Genéticos como método de otimização na realização da sintonia de controladores PID, visando a obtenção de valores adequados para os parâmetros característicos inerentes ao funcionamento do mesmo.

 

 

O controlador PID

 

O Controlador Proporcional Integral Derivativo, ou simplesmente controlador PID, consiste em um elemento muito importante dentro do âmbito dos sistemas de controle de processos, cujo principal objetivo é permitir que o sistema responda de maneira adequada a um determinado estímulo em sua entrada, de acordo com as especificações do processo.  

 

Este tipo de controlador combina três tipos diferentes de ações (proporcional, integral e derivativa) que, em conjunto, contribuem para dar forma à resposta do sistema e assim satisfazer as condições desejadas de operação do mesmo (neste momento, o princípio de funcionamento deste controlador não será explicado com detalhes em virtude da existência de uma série de artigos do EMBARCADOS responsável por este propósito).

 

Sistema de controle em malha fechada.
Figura 1 - Sistema de controle em malha fechada.

 

Observe na figura 1 que o controlador PID atua diretamente sobre o erro e gera um sinal, denominado ação de controle, que por sua vez, é aplicado no sistema propriamente. O sistema em malha fechada da figura está representado no domínio da frequência, portanto, as ações proporcional, integral e derivativa são dadas pelos termos Kp, Ki/s e Kds multiplicadas pelo erro E(s), respectivamente.

 

 

Os Algoritmos Genéticos

 

Em poucas palavras, o Algoritmo Genético consiste em uma técnica de otimização inspirada em conceitos existentes no campo da biologia, mais especificamente, na teoria da evolução, proposta por Charles Darwin, onde as melhores soluções para um determinado problema possuem maior capacidade para sobreviverem e estas consequentemente tornam-se o ponto de partida para a busca de soluções ainda melhores.

 

Como dito anteriormente, nos dias atuais os Algoritmos Genéticos têm sido aplicados não só na indústria, mas em diversos setores da Engenharia Elétrica, dentre os quais é importante destacar os progressos obtidos com a utilização dos mesmos nas áreas de robótica, de geração distribuída de energia elétrica, projetos de circuitos integrados, entre outras.

 

 Mas como funcionam os Algoritmos Genéticos?

 

Neste momento, já é de conhecimento do leitor que os algoritmos genéticos são utilizados visando possibilitar a busca de uma melhor solução para um determinado problema. Sendo assim, o primeiro passo para realizar a busca das melhores soluções do problema em questão é estabelecer uma população de indivíduos inicial, ou seja, um conjunto composto por possíveis soluções. Geralmente, esta população é gerada aleatoriamente e o seu tamanho depende do número de indivíduos intrínsecos à mesma.

 

Em seguida, deve-se estabelecer a chamada função de avaliação (também conhecida na literatura como função fitness), utilizada para avaliar a qualidade de um indivíduo como uma solução do problema que está sendo analisado. Em outras palavras, esta função constitui a ponte entre o Algoritmo Genético e o problema, testando uma possível solução contida na população e determinando o quão efetiva esta em relação à convergência para um resultado cada vez melhor. 

 

E a seleção dos melhores indivíduos, como é feita?

 

O método de seleção das melhores soluções em um determinado instante consiste em simular o mecanismo de seleção existente entre as espécies, onde os melhores genitores (as melhores soluções), isto é, os mais aptos, são capazes de gerar mais descendentes, cuja tendência de adaptação destes no meio em que vivem seja cada vez maior. Desta maneira, o algoritmo tem como princípio privilegiar os indivíduos, ou seja, as melhores soluções (cujo critério adotado para a determinação desta classificação foi a função de avaliação), para que estas contribuam com uma parcela maior da próxima geração de novas soluções. Além disso existe também o conceito de elitismo, que consiste na escolha dos melhores indivíduos contidos na população corrente, para integrarem a nova população.

 

Duas principais operações definem como serão gerados novos indivíduos, estas são os cruzamentos e as mutações. Como o nome já diz, o cruzamento resulta na criação de novos indivíduos a partir dos genitores, selecionados anteriormente. Uma informação importante para o leitor refere-se à chamada probabilidade de cruzamento que estabelece com que frequência os cruzamentos são realizados. Sendo assim, obviamente pode-se notar que com um alto valor deste parâmetro, novos indivíduos serão inseridos na população de maneira mais rápida, no entanto, é provável que boas soluções possam ser perdidas e em contrapartida, no caso do mesmo ser muito baixo, o algoritmo pode necessitar de muitas iterações até que convirja para um melhor valor dentre os já computados.

 

Por outro lado, na mutação, a informação contida no gene de um indivíduo sorteado é alterada de maneira aleatória. Em outras palavras, uma parte de uma determinada possível solução é modificada aleatoriamente, no entanto, isto ocorre com uma determinada probabilidade, também conhecida como probabilidade de mutação. Assim como a probabilidade de cruzamento citada, esta causa forte influência na busca por melhores soluções, de modo que uma probabilidade de mutação baixa é benéfica e previne que as soluções fiquem eventualmente estagnadas em um dado valor. Porém, caso esta probabilidade seja muito alta, a busca pode se tornar bastante aleatória.

 

 

Determinando os parâmetros do controlador PID

 

Nesta aplicação, os indivíduos, ou seja, as unidades que fazem parte do conjunto de possíveis soluções deste processo, expressam os três parâmetros de sintonia do controlador PID, onde estes são: o ganho proporcional (Kp), o ganho integral (Ki) e o ganho derivativo (Kd).

 

Sistema em malha fechada com a utilização de Algoritmos Genéticos.
Figura 2 - Sistema em malha fechada com a utilização de Algoritmos Genéticos.

 

O primeiro passo na resolução deste tipo de problema é definir qual será a função fitness, ou função de avaliação utilizada para que as avaliações das possíveis soluções sejam realizadas. Ou seja, qual é a condição que um determinado conjunto de Kp, Ki e Kd deve satisfazer a cada iteração, para que a resposta do sistema seja cada vez mais semelhante à referência.

 

Nas aplicações deste tipo de problema existem alguns índices de desempenho bastante usuais e que basicamente atuam sobre o erro do sistema, isto é, a diferença entre os valores de referência e de saída. Sendo assim, pode-se utilizar como estratégia para a determinação dos parâmetros do controlador a premissa de que, se a cada instante o desvio entre estas duas variáveis for diminuindo, as curvas dos sinais de saída e de referência serão cada vez mais próximas. Alguns destes são:

  • ISE - Integral do quadrado do erro;
  • IAE - Integral do valor absoluto do erro;
  • ITAE - Integral do tempo multiplicado pelo valor absoluto do erro;
  • ITSE - Integral do tempo multiplicado pelo quadrado do erro.

 

Neste artigo, o índice ITAE foi utilizado para exemplificar a aplicação do Algoritmo Genético na sintonia de um determinado controlador PID, este índice é dado por:

 

CONT147

 

Mas como utilizar este índice de desempenho no problema em questão?

 

O índice de desempenho citado anteriormente atuará como a função de avaliação, de modo que os valores desejados para Kp, Ki e Kd são aqueles que, a cada iteração do algoritmo, conduzirão valores de ITAEs cada vez menores. Em outras palavras, imagine que o sistema da figura 2 seja excitado com um degrau na sua entrada, logo, este mesmo sistema apresentara em sua saída uma curva cujo formato depende, neste caso, da estrutura do controlador. No entanto, note que vários pontos desta curva irão diferir do sinal de entrada, caracterizando, portanto, erros pontuais ao longo de todo o tempo, até que o sistema seja estabilizado. Desta maneira, estes erros pontuais são somados e ponderados pelo tempo, então pode-se dizer que a cada resposta do sistema haverá uma espécie de erro acumulado e representado pelo ITAE, que por sua vez, deve ser minimizado. 

 

 

Implementação do Algoritmo Genético

 

O recurso computacional utilizado para efetuar a implementação do Algoritmo Genético foi o MATLAB, por meio de dois elementos intrínsecos ao mesmo, onde um deles é o toolbox de otimização gatool e o outro é o simulink. 

 

Antes de prosseguir, deve-se ter em mente qual será o sistema a ser controlado, portanto, este pode ser representado pela seguinte função de transferência:

 

CONT148

 

Sendo assim, é necessário que o leitor consiga montar a malha de controle deste sistema no simulink conforme ilustrado pela figura abaixo. Observe que, para implementar a utilização dos Algoritmos Genéticos, é necessário que uma das saídas do sistema esteja contemplando o índice ITAE, no caso, esta é representada por Out1.

 

Sistema elaborado no simulink.
Figura 3 - Sistema elaborado no simulink.

 

O próximo passo que deve ser realizado é a criação da função fitness, no entanto, é necessário ter em mente que para o gatool, esta é definida como a "função que deve ser minimizada". Sendo assim, pode-se implementar a mesma de maneira semelhante à mostrada pelo script abaixo.

 

Script elaborado no MATLAB.
Figura 4 - Script elaborado no MATLAB.

 

De maneira bastante resumida, este script tem a capacidade de alterar os parâmetros (por meio da função set_param) P, I e D (é assim que o simulink denomina os parâmetros Kp, Ki e Kd) do controlador PID existente no modelo criado (o nome deste modelo é Genetico). Repare que na declaração da função existe uma variável x, passada como argumento, onde esta corresponde a um vetor em que x(1) representa Kp, x(2) representa Ki e x(3) representa Kd. 

 

Além disso, a função sim é responsável por simular o modelo e a variável erro (variável analisada pelo gatool para ser minimizada) recebe o último valor da primeira coluna da variável yout. Esta foi criada automaticamente pelo simulink e contém em sua primeira coluna os valores da saída Out1, durante todo o tempo de simulação. Logo, o último valor da mesma corresponde à integral completa ao longo do processo.

 

Por fim, basta que o leitor digite gatool na linha de comando do MATLAB para que a interface gráfica para a implementação do método de otimização via Algoritmo Genético seja aberta e assim informar à mesma qual é a função fitness e o número de variáveis do problema e simular através do botão start.

 

Utilização do GATOOL.
Figura 5 - Utilização do GATOOL.

 

Note que existe uma série de opções para que o leitor faça a utilização desta ferramenta de acordo com à própria vontade. No entanto, este geralmente é um assunto recorrente em projetos de graduação, dissertações de mestrado e outros trabalhos tido como de conhecimento avançado. Portanto, é um tema que exige a atenção do leitor e ainda uma certa base de conhecimento voltado para estatística, de modo que pretende-se apenas dar uma introdução ao assunto e estimular o leitor que procure aprender mais sobre o mesmo. Por este motivo não serão abordados detalhes à cerca das opções existentes para preenchimento dos outros parâmetros, pois temos a intenção de publicar um outro artigo específico sobre isso.

 

 

Resultado 

 

Após a realização destes procedimentos, foram obtidos os seguintes valores para os ganhos do controlador PID:

  • Kp = 36.273
  • Ki = 0.356
  • Kd = 37.209

 

Pode-se perceber na figura abaixo que, de fato, a sintonia do controlador PID via Algoritmos Genéticos forneceu uma resposta bastante próxima da referência (um degrau unitário) para o sistema em malha fechada.

 

Resposta do sistema controlado.
Figura 6 - Resposta do sistema controlado.

 

Esperamos que você tenha gostado deste conteúdo, sinta-se à vontade para nos dar sugestões, críticas ou elogios e lembre-se que este material é apenas um meio para apresentar ao leitor o quão poderosa esta ferramenta pode ser na resolução de problemas como o proposto neste artigo. Portanto, não deixe de estudar!

Outros artigos da série

Índices de desempenho de algoritmos genéticos para sintonia de controladores PID >>
Este post faz da série Algoritmos genéticos com controladores PID. Leia também os outros posts da série:
NEWSLETTER

Receba os melhores conteúdos sobre sistemas eletrônicos embarcados, dicas, tutoriais e promoções.

Obrigado! Sua inscrição foi um sucesso.

Ops, algo deu errado. Por favor tente novamente.

Licença Creative Commons Esta obra está licenciada com uma Licença Creative Commons Atribuição-CompartilhaIgual 4.0 Internacional.

Daniel Madeira
Sou engenheiro eletricista graduado com ênfase em Controle e Automação pela Universidade Federal do Espírito Santo - UFES e Técnico em Eletrotécnica pelo Instituto Federal do Espírito Santo - IFES. Me interesso por todas as vertentes existentes dentro da Engenharia Elétrica, no entanto, as áreas relacionadas à automação e instrumentação industrial possuem um significado especial para mim, assim como a Engenharia de Manutenção que na minha opinião é um setor fascinante.

14
Deixe um comentário

avatar
 
5 Comment threads
9 Thread replies
1 Followers
 
Most reacted comment
Hottest comment thread
8 Comment authors
RobertpriscyllaWillians Pereira DutraSérgio MazucatoHumberto Trindade da Silva Recent comment authors
  Notificações  
recentes antigos mais votados
Notificar
Robert
Visitante
Robert

Os valores de ganhos que vc encontrou, foram mostrados no Command Window ou na tela do próprio Gatool?

Willians Pereira Dutra
Visitante
Willians Pereira Dutra

Parabéns! Adorei a idéia!

Daniel Madeira
Visitante
Daniel Madeira

Muito obrigado Willians! Mostre para nós quando tiver algum resultado!

Humberto Trindade da Silva
Visitante
Humberto Trindade

Muito bom seu artigo Daniel, parabéns!
Você poderia citar algumas referências sobre algoritmos genéticos?

Sérgio Mazucato
Visitante
Sergio Mazucato

Oi Humberto, tudo bem?

Tenho algumas publicações nessa área, se quiser saber um pouco mais procure por Mazucato na IEEE Xplore digital library ou na Elsevier. Um dos papers bem relacionado ao assunto é DOI: 10.1109/IECON.2013.6699462.

Se não estiver em ambiente acadêmico você não vai conseguir fazer o download a não ser que pague, e é um pouco caro. Nesse caso, por favor me responda com seu email que enviarei os artigos.

Abs,
Sérgio

Humberto Trindade da Silva
Visitante
Humberto Trindade

Olá Sergio,

Agradeço pela indicação. Embora eu consiga obter os artigos na universidade, ficarei agradecido se puder me enviar. Email: [email protected].

Abraço,

Daniel Madeira
Visitante
Daniel Madeira

Boa tarde Sérgio, tudo jóia?
Gostaria de saber se você poderia me enviar os seus materiais também. Estou bastante interessado em aprender mais sobre este assunto

Desde já agradeço,
meu email é: [email protected]

Grande abraço!

priscylla
Visitante
priscylla

Olá Sérgio, interesso-me por Algoritmos Genéticos também! Você poderia me enviar seus artigos? [email protected]l.com
Muito obrigada!

Edinei Legaspe
Visitante
Edinei Legaspe

Excelente artigo... parabéns

Daniel Madeira
Visitante
Daniel Madeira

Muito obrigado Edinei, espero que tenha contribuído de alguma forma!

Edinei Legaspe
Visitante
Edinei Legaspe

Sou professor universitário... e engenheiro de campo tb.
pensei em reproduzir o que vc fez...

Vi q vc usou uma planta do tipo 1. E por isso escolheu o itae

Se for fazer isso numa planta real com uma constante de tempo de aproximadamente 20ms de tau. (Tipo 1).

Quanto tempo acha q vai demorar para sintonizar?

Daniel Madeira
Visitante
Daniel Madeira

Boa tarde Edinei!
Na verdade, a escolha pelo ITAE foi simplesmente para exemplificar uma possível aplicação, não fui criterioso neste quesito, apenas escolhi.

Quanto à sintonia, eu não tenho experiência em como fazer isto em uma planta real, mas acredito que caso você tenha um modelo da planta, o processo de sintonia do controlador neste modelo (pelo MATLAB) não seria demorado, acho que cerca de alguns minutos seria um bom chute.

Ulysses Fonseca
Visitante
Ulysses Fonseca

Excelente artigo Daniel Madeira.

Daniel Madeira
Visitante
Daniel Madeira

Obrigado Ulysses, fico feliz em saber que gostou!