Skip to content

conceitos o que e uma estrategia

jpkleal edited this page Mar 20, 2023 · 2 revisions

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 nominal controller e os seus parametros por controller_kwargs (por padrao ira rodar o SimpleLQR).

  • start: Esse metodo e chamado pelo robot.start. Nele o algoritmo de controle do robô é instanciado e qualquer algoritmo que dependa o objeto robot 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 de robot 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.