⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 concurrentbrain.cpp.svn-base

📁 一个巴西大学编写的2D仿真组足球机器人程序
💻 SVN-BASE
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -