conceitos o que e uma estrategia - project-neon/NeonFC GitHub Wiki
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 nominalcontrollere 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 objetorobotdeverá 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 derobotnesse 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.