-
Notifications
You must be signed in to change notification settings - Fork 7
conceitos o que e uma estrategia
Estratégias sao modulos dentro do NeonFC cruciais para a tomada de decisao do sistema. Atraves delas nos implementamos os algoritmos e usamos de heuristicas 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 haje como um template com os metodos principais de uma estratégia, e sao eles:
-
__init__
(construtor): Recebe a match, nome da estratégia (como string). Idealmente devemos passar qual algoritmo de controle esse sistema devera rodar atraves do parametro nominalcontroller
e os seus parametros porcontroller_kwargs
(por padrao ira rodar oSimpleLQR
). -
start
: Esse metodo e chamado pelorobot.start
. Nele o algoritmo de controle do robô é instanciado e qualquer algoritmo que dependa o objetorobot
devera ser instanciado aqui. Como o start pode ser chamado inumeras vezes durante a partida (principalmente quando o coach tem troca de estratégia dinamica) e importante sempre recriar todos os algoritmos dependentes derobot
nesse metodo. -
reset
: metodo adicional para limpar algoritmos caso haja troca de robos na estratégia. nao precisa ser implementado se nao for necessario. -
decide
: Esse metodo devera conter a parte responsavel pela tomada de decisao propriamente dita, esse metodo deverá retornar o parâmetro esperado pelo controle definido anterriormente. 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 devera implementar um ou mais algoritmos, o uso deles é específico ao comportamento esperado.