What is Extremum Seeking Control? | Learning-Based Control, Part 1

Neste vídeo, quero
apresentar um método de controle adaptativo chamado Extremum
Seeking Control. Vamos construir
o algoritmo de uma forma que eu acho que vai motivar
cada um dos componentes e, com sorte, destacar alguns
dos benefícios gerais e desvantagens desse método.
Acho que o Extremum Seeking Control é um controlador realmente interessante
e intuitivo, então eu espero que você
fique por aqui. Eu sou Brian, e bem
-vindo ao MATLAB Tech Talk. Para começar, vamos começar
com este sistema genérico. Há sinais u
entrando no sistema e ele produz alguma saída, y. Com o
controle de feedback, estamos procurando projetar um controlador que
possa usar as saídas de alguma forma para determinar quais
são as entradas corretas que, em última análise, fazem com que o sistema
se comporte da maneira que queremos. Se quisermos uma
abordagem ótima para resolver esse problema, precisamos
configurar algum tipo de função de custo que desejamos
minimizar ou uma função objetivo que
desejamos maximizar. E então encontre os
parâmetros ou as entradas do sistema que fazem exatamente isso. Por exemplo, um
regulador quadrático linear é uma maneira ideal de encontrar a
matriz do jogo para feedback de estado completo.

Montamos uma
função de custo quadrático que leva em consideração o
erro do sistema e o esforço do atuador. E então, junto com um modelo
da dinâmica do sistema, podemos encontrar a matriz do jogo
que combina perfeitamente esforço e
erro para produzir o custo total mínimo. Agora, o LQR requer um
modelo linear do sistema para fazer
essa otimização.

Além disso, a otimização
é feita off-line e produz
ganhos estáticos e estes não vão mudar com o
tempo, mesmo que a dinâmica do sistema mude. E a função custo tem que
ser, por definição, quadrática. Portanto, a questão é:
e se você não tiver um modelo do seu sistema, ou
se a dinâmica do sistema mudar com o tempo e, portanto, uma
contestação estática não for suficiente, ou se o custo ou a
função objetivo que você está tentando otimizar não é quadrática. Então LQR não é uma boa
solução ótima. Por exemplo, pegue um
sistema de freio antitravamento para seu carro, a entrada nesse sistema é
a quantidade de pressão de freio a ser aplicada e a saída é a
desaceleração do veículo.

Com que força devemos
pressionar os freios para maximizar a desaceleração? E a resposta não é óbvia. Se você aplicar
pouca pressão no freio , não estará desacelerando o
mais rápido possível. E se você aplicar
muita pressão , as rodas começarão
a derrapar, o que também reduz a eficácia da frenagem. Na verdade, essa interação
entre o pneu e a estrada é governada por uma curva que se
parece com isso. Portanto, há essa
quantidade perfeita de pressão de freio que causará a
quantidade perfeita de patinagem da roda que maximizará
a força de frenagem. E esta não é uma
função quadrática.

E também, essa curva muda com
base nas condições da estrada e nas condições dos pneus. E não apenas está
mudando, mas criar um modelo desse sistema
exigiria conhecimento da superfície da estrada , das
características de derretimento da borracha e muito mais. Portanto, devido a essas
condições, este não é um bom candidato para LQR. Agora, há um monte
de maneiras diferentes de resolver um problema
como este, mas quero falar particularmente
sobre perturbar e observar os algoritmos de tipo.

Esses algoritmos não
requerem um modelo de sistema , não requerem
funções objetivas quadráticas e podem ser executados em tempo real e se
adaptar às mudanças na dinâmica do sistema. E o algoritmo básico
funciona assim. Você começa com um
palpite inicial, no nosso caso, é uma pressão de freio específica. Em seguida, registramos o
valor objetivo atual, que para nós é a
desaceleração do veículo. Agora, perturbamos nosso melhor
palpite, avançando a entrada em uma direção. Digamos que aumentamos
um pouco a pressão do freio. Agora, verificamos se
o objetivo aumentou ou diminuiu para determinar
se esse passo foi na direção certa.

Por exemplo, se o
veículo está desacelerando mais do que
antes, sabemos que subimos a
ladeira na direção certa e mantemos esse valor. Em seguida, damos mais um passo,
aumentando cada vez mais a pressão do freio e
verificando o resultado. Eventualmente, atingiremos a
pressão de frenagem ideal. E agora, neste ponto,
vamos passar por isso e perceber que o
objetivo diminuiu e, portanto
, fomos longe demais. Então, recuamos
na outra direção. E temos que continuar
andando para frente e para trás e para frente e para trás em
torno do ponto máximo, porque uma mudança no
ambiente ou na dinâmica do sistema pode mover esse
ponto máximo. E sempre queremos
procurá-lo e rastreá-lo. E esta é a
ideia básica de como podemos encontrar uma
solução ótima para um sistema dinâmico sem precisar de um modelo. Agora, existem algumas desvantagens
para esse algoritmo muito simples e uma delas é
que dar grandes passos fará com que ele converja mais rapidamente. Mas vai produzir um
valor objetivo médio menor do que
poderia ser, já que você estaria se afastando cada vez mais do
valor ideal a cada passo.

Agora, existem
algoritmos que tentam estimar o
gradiente da função e, em seguida, usam isso para
ajustar o tamanho do passo, de modo que, quando você estiver
perto do ponto ideal , não demore
passos tão grandes. E uma versão desse tipo de
algoritmo de estimativa de gradiente é o Extremum Seeking
Control, sobre o qual falaremos no
restante deste vídeo. Tudo bem, então
vamos para o Simulink e construímos este controlador. Eu tenho aqui a planta
que desejamos controlar e ela recebe uma única
entrada u e produz uma única saída. Agora, neste caso, a
saída é o objetivo que estamos tentando maximizar. No entanto, em geral, isso
pode não ser o caso. Podemos pegar as
saídas do sistema e combiná-las
com outros sinais de alguma forma para gerar
uma função objetivo. Mas, para simplificar,
acabei de agrupar tudo neste sistema.

Então, estamos tentando encontrar u
que irá maximizar a saída. E dentro desta
função, você pode ver que é apenas uma
equação quadrática realmente básica. E vou mostrar como é
o resultado desse sistema aumentando a
entrada de 0 com uma inclinação de 2 unidades por segundo. Deixe-me fazer isso bem rápido
e verificar o escopo. A linha amarela aqui é
a entrada aumentando de 0. E você pode ver que
logo em u é igual a 10, a saída atinge
um máximo de 20.

E esta é a
condição ideal para este sistema em particular. E para relacionar isso de volta
ao exemplo de frenagem, isso significa que uma
pressão de freio de 10 unidades produziria a
desaceleração máxima. Qualquer coisa mais ou
menos do que isso resultaria em um veículo que
demora mais para parar. OK. Agora, vamos fingir
que não sabemos realmente que uma entrada de
10 é o valor ideal e, em vez disso, temos um
palpite inicial de, digamos, cinco.

Queremos que nosso controlador
determine automaticamente se cinco é muito baixo, muito
alto ou correto. E a maneira como
faremos isso é adicionar uma
onda senoidal a esse valor. Basicamente, em vez de
alimentar um cinco constante, vamos adicionar
uma ondulação de frequência mais alta ao sinal
que irá perturbá- lo um pouco mais alto e mais baixo. E aqui estou escolhendo uma
onda senoidal de 30 radiantes por segundo com uma amplitude de 0,3, mas
este é um dos vários lugares onde o projetista pode
ajustar o controlador para sua planta específica. Agora, vamos executar isso
e verificar o escopo. Novamente, a linha amarela
é o sinal de entrada com aquela
ondulação de onda senoidal e a linha azul é a saída do sistema.

Como cinco é menor
que a entrada ideal, esperamos que esses
dois sinais estejam em fase. É quando aumentamos
cinco só um pouquinho, o objetivo também
aumenta em fase com ele. E se mudarmos a entrada
para 12, que é muito alta, esperamos que os dois
sinais fiquem fora de fase. O problema é que
esses dois sinais são difíceis de comparar,
nesse estado, pois estão compensados ​​um pelo outro. Mas felizmente não nos importamos necessariamente
com o valor absoluto desses sinais,
queremos saber como a mudança
no sinal de entrada cria uma mudança
no sinal de saída.

A mudança na
entrada é fácil de obter , é apenas a própria onda senoidal. Mas obter a
mudança na saída é bom, na verdade é
muito fácil também. Podemos fazer isso adicionando
um filtro passa-alto. Estou escolhendo um com
frequência de corte de cinco radiantes por segundo. Isso irá, essencialmente, bloquear
as informações de baixa frequência como o deslocamento de
0 e passar o sinal de 30 radiantes por segundo
sem afetá- lo muito. E confira. O deslocamento foi removido
pelo filtro passa-alto e agora podemos ver claramente como
a saída do sistema muda quando alteramos a entrada do sistema. E como esses dois sinais
estão completamente defasados ​​entre si, sabemos que
precisamos diminuir o valor de entrada para atingir a saída máxima. Portanto, um valor de 12 é muito alto. E se mudarmos a
entrada de volta para cinco, podemos ver que esses
dois sinais estão agora em fase um com o
outro e, portanto, sabemos que o
valor de entrada atual de cinco é muito baixo.

Mas como fazemos nosso
controlador entender esse tipo de lógica? Bem, podemos
apenas multiplicar os dois sinais porque se
os dois sinais tiverem o mesmo sinal,
como quando estão em fase, então o produto
será principalmente positivo. E, de fato, esse é o caso
quando a entrada é muito baixa. Você pode ver aqui que o sinal
é quase totalmente positivo. Bem, deixe-me primeiro
esconder este sinal amarelo porque está
atrapalhando o escopo. Mas agora você pode ver que o
sinal está acima de zero. E se definirmos nossa
entrada como 12, você pode ver que o
produto está principalmente abaixo de 0, pois os dois sinais
agora têm sinais opostos. Finalmente, podemos
integrar este sinal e então o somatório
tenderá a aumentar quando a entrada for muito
baixa e tenderá a diminuir quando a entrada for muito alta.

E podemos ver aqui que a
saída dessa integral está tendendo para baixo, o que
indica que 12 é muito alto e deve ser diminuído. Agora,
a soma não apenas aumenta quando a entrada é muito baixa e
diminui se for muito alta, mas a velocidade com que
ela aumenta e diminui é proporcional ao gradiente
ou à inclinação da função objetivo . Para mostrar o que quero dizer,
vamos definir a entrada como uma rampa e observar a soma à
medida que o valor da entrada varre
a entrada ideal. E quão legal é isso? A soma
aumenta e diminui mais rapidamente quando estamos mais
longe do valor ideal e, em seguida, as etapas ficam
mais finas à medida que atingimos esse objetivo.

E então, no valor ideal,
a soma permanece constante e isso é incrível. E, dessa forma, podemos
avaliar esse somatório como nosso melhor palpite
da entrada e, em seguida, o sistema
convergirá para a condição ideal. Bem, em última análise, será. Essa configuração específica
está demorando para chegar lá. Mas temos outro ajuste de
ajuste que podemos fazer e é adicionar ganho
ao somatório, o que nos permitirá acelerar
e desacelerar a convergência. Agora, temos que ter um
pouco de cuidado aqui porque acelerar
demais vai causar instabilidade, mas para nós esse valor parece OK. A entrada converge
em 10, que produz a saída máxima de 20. E o que é realmente interessante
sobre esse controlador é que ele pode se adaptar às
mudanças na dinâmica da planta.

Bem, desde que essas
dinâmicas sejam relativamente lentas em comparação com a
taxa de convergência do controlador. A dinâmica da planta
não pode ser mais rápida do que o controlador
pode convergir, caso contrário , ficará continuamente
atrás do valor máximo. Deixe-me mostrar um exemplo rápido
do controlador se adaptando a uma planta em mudança, alterando
nossa equação da planta para ser uma função do tempo. Aqui estou basicamente deslocando
a curva quadrática para a direita conforme o tempo
aumenta, o que significa que nosso controlador precisa
aumentar constantemente o valor de entrada u, a fim de manter
o valor máximo de saída de 20. Então, vamos executar isso. Você pode ver que a
saída fica bem próxima do
valor máximo, mas a entrada muda constantemente.

É rastrear o valor que
cria a saída máxima. Tudo bem, então esses são
os componentes básicos que compõem o Extremum
Seeking Controller. E se você tiver o
Simulink Control Design , basta
inserir um Extremum Seeking Controller no Simulink, em vez de
escrever tudo sozinho. E alguns dos benefícios
de usar este bloco é que há alguma
verificação de erro que é feita para você
, como garantir que as frequências
entre a onda senoidal modulante e os filtros não se
sobreponham. Além disso, este bloco pode lidar com
sistemas multi-entrada e multi- saída. E expõe todos os
parâmetros configuráveis em uma única interface. Mas, como você pode ver, a
lógica que ele implementa é exatamente a que
acabamos de ver. Agora, existe este filtro
passa-baixo extra que pode ser usado se
houver ruído de medição de alta frequência em seu sistema, mas
deixei de lado porque meu exemplo não tinha nenhum
ruído de medição, mas, de outra forma, exatamente o mesmo.

Tudo bem,
espero que você possa ver que podemos usar um
algoritmo como este para fazer algo como rastrear
a força de frenagem ideal que irá parar um carro na
distância mais curta em uma superfície desconhecida. E se você estiver interessado
em ver isso em ação, na
descrição há um link para outro
vídeo que mostra como usar o Extremum Seeking
Control para frenagem antitravamento.

Tudo bem. Agora, antes de terminar este vídeo,
quero falar rapidamente sobre algumas das
desvantagens desse método para que você esteja mais
preparado para decidir se é adequado para o seu problema de controle. Por um lado, esse método
convergirá apenas para um ótimo local. Se o seu sistema tiver
vários ótimos , você precisará
inicializá-lo de forma que encontre o ótimo global. Além disso, embora seja um controlador
relativamente direto , é
mais complicado do que um simples
algoritmo de perturbação e observação. Temos muitos
parâmetros de ajuste que precisamos ajustar para obter o
resultado que converge de forma rápida e robusta na
solução ideal. E, finalmente,
precisamos de uma planta que responda rapidamente
às mudanças de entrada para que possamos realmente
observar a perturbação, mas uma planta cuja dinâmica não
mude muito rapidamente ao longo do tempo para que o controlador seja capaz
de rastrear o ponto ideal. Mas, apesar de tudo
isso, espero que você possa ver que este é um
controlador muito poderoso se você estiver lidando com um
sistema difícil de modelar e que muda com o tempo.

E acho que uma boa maneira de obter
mais experiência com o Extremum Seeking Control é
apenas experimentá-lo. E deixei links para exemplos
e outras documentações que devem lhe
fornecer um bom começo. Tudo bem, então é aqui
que vou deixar este vídeo. Se você não quer perder
nenhum vídeo futuro do Tech Talk, não se esqueça de se
inscrever neste canal. Além disso, se você quiser
conferir meu canal, Palestras sobre sistema de controle , também abordo mais
tópicos de teoria controlada . Obrigado por assistir e até a
próxima..

Texto inspirado em publicação no YouTube.

Quer Saber Muito Mais? Venha para a MIND21 Educação

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

This site uses Akismet to reduce spam. Learn how your comment data is processed.