Usando algoritmo genético para ajustar controladores

9

Eu li alguns artigos para controlar sistemas não lineares (por exemplo, pêndulo não linear). Existem várias abordagens para direcionar sistemas não lineares. Os mais comuns são controladores de linearização de feedback , backstepping e modo deslizante .

No meu caso, eu fiz as partes teóricas e práticas de controle do modelo não linear de um pêndulo simples, além de outros problemas de manipuladores em C ++. Para o pêndulo, utilizei um controlador de backstepping para resolver a tarefa de rastreamento do deslocamento e velocidade angulares. Os resultados são

θ¨+(k/m)θ˙+(g/eu)pecadoθ=você

onde e .m=0,5,k=0,0001,eu=.2g=9,81

Gráfico 1

Gráfico 2

Os resultados são bons. No entanto, o ajuste do controlador é demorado. A maioria dos artigos utiliza algoritmos genéticos para ajustar seus controladores, como PD, PID e controladores de backstepping. Eu sou ignorante neste campo e espero que alguém lance alguma luz sobre esse conceito, preferível se houver uma amostra do MATLAB para pelo menos controlar um pêndulo simples.

Até agora, projetei uma GUI simples em C ++ / Qt para ajustar o controlador manualmente. Na figura abaixo, a resposta do controlador para a função step.

Captura de tela da GUI do aplicativo de ajuste do controlador

CroCo
fonte

Respostas:

1

O uso de métodos evolutivos (GA é um deles) para o ajuste de parâmetros é realmente um método comum [1] no domínio de controle. Especialmente para sistemas não lineares, as soluções analíticas para parâmetros ideais podem ser difíceis de encontrar. Os métodos evolutivos são uma maneira de realizar com eficiência uma busca por parâmetros quase ideais.

Um método universal de muito sucesso e amplamente utilizado é o CMA-ES . Há um grande número de implementações por aí, inclusive para o MATLAB. Eu sei que o balanceamento de pólos em suas várias formas é frequentemente usado como referência.

A aplicação do algoritmo geralmente não é tão difícil. Classificar o desempenho do seu resultado - isso é chamado de função de condicionamento físico no EA - geralmente é a parte mais envolvida.

[1] PJ Fleming, RC Purshouse, Algoritmos evolutivos em engenharia de sistemas de controle: uma pesquisa, Control Engineering Practice, Volume 10, Edição 11, novembro de 2002, páginas 1223-1241, ISSN 0967-0661, http: //dx.doi. org / 10.1016 / S0967-0661 (02) 00081-3 .

Jakob
fonte
Você encontrou algum bom livro que você acha que vale a pena ler sobre o GA?
CroCo 24/03
8

Os algoritmos genéticos são uma técnica de aprendizado de máquina para remover a necessidade de um usuário "ajustar" um sistema e, em vez disso, permitir que um computador descubra como ajustá-lo. Os benefícios dessa abordagem são que ela libera tempo para os pesquisadores / usuários e, muitas vezes, pode levar a um sistema que é melhor ajustado do que aquilo que o pesquisador / usuário poderia conseguir.

A ideia geral de usar um algoritmo genético seguiria algum fluxo de controle básico, como segue:

Create_X_Number_Of_Random_Controllers()
while (Not_Yet_Satisfied_With_tuning)
    Score_Each_Controller_Based_On_Performance()
    Remove_Lowest_Performing_Controllers()
    Create_New_Controllers_By_Mixing_Best_Performers()
    Add_Slight_Randomness_For_Evolution()
Display_Top_Performer()

O melhor exemplo que posso mostrar com facilidade desse princípio na prática é esse 'jogo' que usa a evolução genética para projetar veículos capazes de dirigir ao longo de um curso. A mesma idéia se aplica a qualquer sistema que você deseja ajustar sem precisar realizá-lo. Exemplo: http://rednuht.org/genetic_cars_2/

beeedy
fonte
Se é isso o que a @CroCo quis dizer com o uso de um algoritmo genético, o método de ajuste da Ziegler Nichols seria um ótimo candidato para a implementação, porque é bem processual.
21416 SteveOf:
Não consigo ver o que mais a @CroCo significaria, mas o problema com Ziegler Nichols é que ainda é necessário ajustar um dos componentes onde, como em um item genético, você pode alterar qualquer aspecto do sistema e ele 'evoluirá' combinar sem o desenvolvedor ter que fazer nenhum trabalho bruto
beeedy 15/02
11
Essa resposta ainda permanece como o processo geral para conseguir isso. Os algoritmos genéticos são uma área de estudo inteira e muito complexa, no entanto, para realmente explicar em uma resposta curta, eu recomendo a leitura deles, no entanto, se você estiver interessado em usá-los para ajustar seus modelos!
beeedy
2
Estou imaginando um algoritmo genético mal delimitado que, com muita facilidade, encaixa a corda durante o ajuste excessivo.
Ramrod 16/02
11
como o octopus mencionou, isso é difícil de obter com equipamentos físicos reais, a menos que você esteja disposto a permitir um longo período de tempo para permitir que o computador controle fisicamente o dispositivo que você está tentando ajustar, mesmo assim você precisa de algum programa 'guardião' que monitore e pontua cada controlador com base no desempenho e verifica se não vai danificar a máquina. Tudo isso é uma tarefa relativamente complexa que exigirá muita leitura de algoritmos genéticos para implementar; essa não é uma tarefa pequena.
beeedy
2

Estou confuso com o que você está chamando de algoritmo genético. Os controladores PD, PID etc. não são métodos heurísticos nem estocásticos, e não são baseados em algoritmos evolutivos. Em vez disso, são algoritmos determinísticos destinados a permitir a colocação de pólos e zeros de uma resposta do sistema para fornecer o desempenho desejado (minimização de erros, velocidade de resposta, tempo de estabilização, estabilidade e rejeição de perturbações). Uma boa referência de aprendizado, na minha opinião, é o livro Sistemas de Controle Automático de Kuo . Você pode encontrar um tratamento menos rigoroso no livro de engenharia de controle automático da Raven .

SteveO
fonte
Eu não estou familiarizado com o algoritmo genético (GA). Acabei de ver alguns documentos alegando que a parte de ajuste de seus controladores era feita usando o GA. Não há mais detalhes em seus documentos sobre esse assunto. Não sei o que diabos é o GA e como posso utilizá-lo.
CroCo 17/02
O uso de métodos evolutivos para ajuste de parâmetros é uma técnica muito comum. Eu consideraria um método alternativo para as abordagens analíticas que você está descrevendo.
Jakob