concurrentbrain.cpp.svn-base

来自「一个巴西大学编写的2D仿真组足球机器人程序」· SVN-BASE 代码 · 共 91 行

SVN-BASE
91
字号
#include "ConcurrentBrain.h"#include <semaphore.h>sem_t mailICCheio;LocalGoal mailBoxIC;string mailBoxIC2;LocalGoal mailBoxCI;pthread_mutex_t mutexCI;pthread_mutex_t mutexIC;/*! Esta � a thread cognitiva do time que sincroniza com o instintive thread    complementando o raciocinio do agente.  */void *cognitiveFunction(void* c){   Cognitive* cognitive = (Cognitive*)c;   LocalGoal dadosCognitivo, dadosVindoDoInstintivo;   string dadosVindoDoInstintivo2;   bool emptyRulesBase = true;   while(1)   {      //sleep(1);      //Recebe informacao      //cout<<"Recebendo informacao"<<endl;      sem_wait(&mailICCheio);      if ( emptyRulesBase )      {         cout << "Iniciando sincronizacao" << endl;         cognitive->loadRulesBase();         emptyRulesBase = false;      }      dadosVindoDoInstintivo = mailBoxIC;      dadosVindoDoInstintivo2 = mailBoxIC2;//cout << endl << "Teste Cognitive(dados do instintivo): "<< dadosVindoDoInstintivo.current  <<" "<< dadosVindoDoInstintivo.status << endl;      //cout<<" > "<< mailBoxIC <<endl;      //sleep(1);      //Obs zerar o semaforo, caso o instintivo manda muitas msgs      //sem_post(&mailICOcupado);      //sleep(1);      //processa regras      cognitive->makeInference(dadosVindoDoInstintivo,dadosVindoDoInstintivo2);      //cout<<"Processando regras"<<endl;      dadosCognitivo = cognitive->getLocalGoal();//cout << endl << "Teste Cognitive (local): "<< dadosCognitivo.current  <<", "<< dadosCognitivo.status << endl;      pthread_mutex_lock(&mutexCI);      mailBoxCI = dadosCognitivo;      pthread_mutex_unlock(&mutexCI);   }   pthread_exit(0);}ConcurrentBrain::ConcurrentBrain():InferenceBrain(){   sem_init(&mailICCheio, 0, 0);   localGoal.current = "none";   localGoal.status = "none";   cout << "inicializacao do concurrent brain" << endl;}Behavior* ConcurrentBrain::think( Formations*  formations ){   if ( emptyRulesBase )   {      instintive.loadRulesBase();      emptyRulesBase = false;   }   //cout<<"Processa regras"<<endl;   pthread_mutex_lock(&mutexCI);   dadosInstintivo = mailBoxCI;   pthread_mutex_unlock(&mutexCI);   //Processa regras//   cout << "Dados vindos do cognitivo: "<< dadosInstintivo.current  <<", "<< dadosInstintivo.status << endl;   instintive.update(dadosInstintivo);   outputMessage = instintive.makeInference();   //Envia informacao   //cout<<"Enviando informacao"<<endl;   pthread_mutex_lock(&mutexIC);   mailBoxIC = instintive.getLocalGoal();   mailBoxIC2 = instintive.getBallLocalization();   pthread_mutex_unlock(&mutexIC);   sem_post(&mailICCheio);   return selectBehavior( outputMessage, formations );}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?