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
onde e .
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.
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:
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/
fonte
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 .
fonte