-
Notifications
You must be signed in to change notification settings - Fork 7
conceitos o que e uma estrategia
Estratégias, dentro do NeonFC, são módulos cruciais para a tomada de decisão do sistema. Através delas nós implementamos os algoritmos e usamos de heurísticas para gerar comportamentos de ataque ou defesa. Estratégias representam o controle individual de cada robô.
Na prática, uma estratégia é qualquer classe dentro do NeonFC que herda strategy.BaseStrategy.Strategy
. Essa classe age como um template com os métodos principais de uma estratégia, e são eles:
-
__init__
(construtor): Recebe a match, nome da estratégia (como string). Idealmente devemos passar qual algoritmo de controle esse sistema deverá rodar através do parâmetro nominalcontroller
e os seus parâmetros porcontroller_kwargs
(por padrão irá rodar oSimpleLQR
). -
start
: Esse metódo é chamado pelorobot.start
. Nele, o algoritmo de controle do robô é instanciado e qualquer algoritmo que dependa o objetorobot
deverá ser instanciado aqui. Como o start pode ser chamado inúmeras vezes durante a partida (principalmente quando o coach tem troca de estratégias dinâmica) é importante sempre recriar todos os algoritmos dependentes derobot
nesse método. -
reset
: método adicional para limpar algoritmos caso haja troca de robôs na estratégia. Não precisa ser implementado se não for necessário. -
decide
: Esse método deverá conter a parte responsável pela tomada de decisão propriamente dita, esse método deverá retornar o parâmetro esperado pelo controle definido anteriormente. A exemplo, o LQR recebe o vetor velocidade[Vx, Vy]
desejado, já o PID recebe a posição[X, Y]
desejada.
Um exemplo base que pode ser usado para criar estratégias é o pfScratch.
strategy
: Geralmente deverá implementar um ou mais algoritmos, o uso deles é específico ao comportamento esperado.