📄 factsbase.cpp.svn-base
字号:
/* * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. *//*! \file FactsBase.cpp<pre><b>File:</b> FactsBase.cpp<b>Project:</b> Robocup Soccer Simulation Team: MecaTeam<b>Authors:</b> Orivaldo Vieira e Augusto Loureiro<b>Created:</b> 10/09/2006<b>Last Revision:</b> $ID$<b>Contents:</b> Este arquivo cont�m a implementa��o da classe FactsBase. A FactsBase � classe que disponibiliza a a Base de fatos para um sistema baseado em conhecimento.<hr size=2><h2><b>Changes</b></h2><b>Date</b> <b>Author</b> <b>Comment</b>19/09/2006 Orivaldo Vieira Documenta��o</pre>*/#include "FactsBase.h"/* Este construtor cria um Base de Fatos, uma estrutura de dados para armazenar os fatos no formalismo da l�gica (objeto atributo valor). * Em seguida adiciona a base de fatos, alguns fatos que representam o estado inicial da partida.*/FactsBase::FactsBase(){ m_storeLogicPattern = new LogicDataStructure;/* addLogicPattern("player","ball_kickable","false"); addLogicPattern("player","localization","AREA_DEFENSE"); addLogicPattern("player","fastest_to_ball","false"); addLogicPattern("oponnent","close_to_player","false"); addLogicPattern("reactive_behavior","active","none"); addLogicPattern("ball","position","unknown"); addLogicPattern("teammate","has_ball","false"); addLogicPattern("game","mode","PM_BEFORE_KICK_OFF"); addLogicPattern("player","bestOptionKick","none"); addLogicPattern("player","confidence_for_kick","false"); //addLogicPattern("ball","atuation_zone","false"); addLogicPattern("player", "pass_ball", "teammate_10"); addLogicPattern("player","front_space","free"); addLogicPattern("player","next_line_r","false"); addLogicPattern("player","next_line_of_deep","false"); addLogicPattern("midplayers","has_ball","false"); addLogicPattern("attackplayers","has_ball","false"); addLogicPattern("dead_ball","situation","none"); addLogicPattern("player", "back_goalie", "false"); addLogicPattern("player", "distance_to_goalie", "dont_small"); addLogicPattern("pass_condition","teammate_three","false"); addLogicPattern("pass_condition","teammate_four","false"); addLogicPattern("pass_condition","teammate_five","false"); addLogicPattern("pass_condition","teammate_six","false"); addLogicPattern("pass_condition","teammate_seven","false"); addLogicPattern("pass_condition","teammate_eight","false"); addLogicPattern("pass_condition","teammate_nine","false"); addLogicPattern("pass_condition","teammate_ten","false"); addLogicPattern("pass_condition","teammate_eleven","false"); addLogicPattern("player","sick","false"); addLogicPattern("ball","orientationLR","left"); addLogicPattern("ball","orientationNS","south");*/}FactsBase::~FactsBase(){ delete m_storeLogicPattern;}/*! Este m�todo adiciona um padr�o l�gico na base de fatos. A base de fatos organiza suas informa��es atrav�s de uma estrutura de dados que usa o princ�pio de �rvores bin�rias. \param newFact o novo padr�o l�gico (fato) a ser adicionado na base de fatos. \return false se j� existe o padr�o l�gico na base de fatos e true se n�o existe e foi adicionado. */bool FactsBase::addLogicPattern (LogicPattern* newFact){ return m_storeLogicPattern->insert(newFact);}/*! Este m�todo adiciona um padr�o l�gico fatorado em objeto, atributo e valor na base de fatos. \param objectName nome do objeto a ser inclu�do na base de fatos. \param attribute atributo do objeto a ser inclu�do na base de fatos. \param value valor do objeto a ser inclu�do na base de fatos. \return true se adi��o realizada com sucesso false caso contr�rio.*/bool FactsBase::addLogicPattern (string objectName, string attribute, string value){ return m_storeLogicPattern->insert(objectName,attribute,value);}/*! Este m�todo consulta da base de fatos se existe um dado padr�o l�gico. \param newFact um padr�o l�gico para consulta. \return true se o padr�o l�gico foi encontrado false caso contr�rio.*/bool FactsBase::queryLogicPattern (LogicPattern* newFact){ return m_storeLogicPattern->query(newFact);}/*! Este m�todo consulta na base de fatos se existe um dado padr�o l�gico fatorado em objeto, atributo e valor. \param objectName nome do padr�o l�gico para consulta. \param attribute atributo do padr�o l�gico para consulta. \param value valor do padr�o l�gico para consulta. \return true se o padr�o l�gico foi encontrado false caso contr�rio. */bool FactsBase::queryLogicPattern (string objectName, string attribute, string value){ LogicPattern *pattern; bool result; pattern = new LogicPattern(objectName,attribute,value); result = m_storeLogicPattern->query(pattern); delete pattern; return result;}LogicPattern* FactsBase::selectObjectAndAttribute (LogicPattern* pattern){ return m_storeLogicPattern->selectObjectAndAttribute(pattern);}/*! Este m�todo apaga o valor de um atributo de um dado objeto. O intuito de apagar � para deixar a base de fatos sem informa��es sobre o valor de um atributo de um objeto e n�o � apagar todas as inforam��es sobre o objeto. Vale resaltar que n�o se exclui um objeto da base de fatos. \param objectName nome do objeto a ser limpado. \param attribute nome do atributo a ser limpado. \return true se atributo do objeto foi alterado ou false caso o atributo n�o tenha sido encontrado. */bool FactsBase::clearLogicPattern (string objectName, string attribute){ return m_storeLogicPattern->insert(objectName,attribute,"");}/*! Este m�todo carrega a base de fatos com padr�es l�gicos extra�dos de um arquivo. \param fileName nome do arquivo que cont�m os padr�es l�gicos \return true se o arquivo foi aberto com sucesso ou false caso contr�rio.*/bool FactsBase::loadLogicPatternFile (string fileName){ string object,attribute,value; std::ifstream fileFacts( fileName.c_str() ); if (fileFacts.is_open()) { while (! fileFacts.eof() ) { fileFacts >> object >> attribute >> value; m_storeLogicPattern->insert(object,attribute,value); } fileFacts.close(); return true; } return false;}/*! Este m�todo coloca na sa�da padr�o o estado de todos os objetos presentes na base de fatos*/void FactsBase::print(void){ std::cout << " - - - Facts Base - - - " << std::endl; m_storeLogicPattern->printTree(1); std::cout << std::endl;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -