Skip to content

Latest commit

 

History

History
48 lines (36 loc) · 2.47 KB

ActionGenerator.md

File metadata and controls

48 lines (36 loc) · 2.47 KB

Iniciando pela classe de onde herdam mais classes: ActionGenerator. Essa classe gera uma cadeia de ações para serem decididas pelo agente.

Segue a figura que mostra a herança de classes.

Essa classe possui dois membros públicos: um "ponteiro compartilhado" e um "ponteiro constante compartilhado".

"The shared_ptr class template stores a pointer to a dynamically allocated object, typically with a C++ new-expression. The object pointed to is guaranteed to be deleted when the last shared_ptr pointing to it is destroyed or reset" Mais em: http://www.boost.org/doc/libs/1_53_0/libs/smart_ptr/shared_ptr.htm

A classe também possui mais um construtor e um construtor-cópia não utilizados de acordo com o comentário escrito acima deles.

Segue alguns métodos dessa classe:

/*!
  \brief Gera uma cadeia de pares "ação-estado" (ActionStatePair)
  \param result Armazena o valor gerado pelo par "ação-estado"
  \param state Último estado a gerar uma nova "ação-estado"
  \param wm Visão de mundo atual no estado inicial
  \param path Cadeia de "ação-estado" do estado inicial até o estado final
*/
virtual void generate( std::vector< ActionStatePair > * result,
                   const PredictState & state,
                   const rcsc::WorldModel & wm,
                   const std::vector< ActionStatePair > & path ) const = 0;

/*!
* \brief Adiciona os estados gerados ao vector M_generators 
* \param g Instância da classe ActionGenerator
*/
void addGenerator( const ActionGenerator * g )
      {
          if ( g )
          {
              M_generators.push_back( ConstPtr( g ) );
          }
      }

Essa classe serve de herança para diversas classes que gerarão cadeias de ações básicas como chutar, passar e cruzar. Todas essas ações são levadas em conta de acordo com a ação a ser tomada em grupo (CooperativeAction) e com o estado a ser previsto (PredictState). Essas duas informações são armazenadas numa instância da classe ActionStatePair.

Todas as classes do tipo "action_gen_" possuem um método generate (que é um método na classe pai, ActionGenerator). O método generate tem por objetivo gerar uma cadeia de ações a serem tomadas de acordo com cada estado previsto. O modelo de mundo do jogador é passado como parâmetro, assim como um ponteiro para vector que armazenará o resultado de ActionStatePair.

Cada método generate de cada classe act_gen_, consequentemente, tem sua particularidade e está explicado no seu específico wiki.