Home | nevrax.com |
|
fuzzycond.cppGo to the documentation of this file.00001 00007 /* Copyright, 2000 Nevrax Ltd. 00008 * 00009 * This file is part of NEVRAX NEL. 00010 * NEVRAX NEL is free software; you can redistribute it and/or modify 00011 * it under the terms of the GNU General Public License as published by 00012 * the Free Software Foundation; either version 2, or (at your option) 00013 * any later version. 00014 00015 * NEVRAX NEL is distributed in the hope that it will be useful, but 00016 * WITHOUT ANY WARRANTY; without even the implied warranty of 00017 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 00018 * General Public License for more details. 00019 00020 * You should have received a copy of the GNU General Public License 00021 * along with NEVRAX NEL; see the file COPYING. If not, write to the 00022 * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, 00023 * MA 02111-1307, USA. 00024 */ 00025 #include "nel/ai/fuzzy/fuzzyset.h" 00026 #include "nel/ai/fuzzy/fuzzyvar.h" 00027 #include "nel/ai/fuzzy/fuzzycond.h" 00028 00029 #include "nel/ai/agent/agent_nombre.h" 00030 #include "nel/ai/agent/agent.h" 00031 00032 namespace NLAIFUZZY 00033 { 00034 00035 CSimpleFuzzyCond::CSimpleFuzzyCond(CFuzzyVar *var, IFuzzySet *set) 00036 { 00037 _Var = var; 00038 _Set = set; 00039 } 00040 00041 void CSimpleFuzzyCond::getDebugString(std::string &txt) const 00042 { 00043 txt += NLAIC::stringGetBuild("(%s is %s)", _Var->getName().getString(), _Set->getName() ); 00044 } 00045 00046 bool CSimpleFuzzyCond::isTrue() 00047 { 00048 return _Var->isIn( _Set ); 00049 } 00050 00051 float CSimpleFuzzyCond::truthValue() 00052 { 00053 return _Var->membership( _Set ); 00054 } 00055 00056 void CSimpleFuzzyCond::save(NLMISC::IStream &) 00057 { 00058 //NLAIAGENT::IObjectIA::save(os); 00059 // TODO: sauvegarder une référence 00060 } 00061 00062 void CSimpleFuzzyCond::load(NLMISC::IStream &) 00063 { 00064 // NLAIAGENT::IObjectIA::load( is ); 00065 //TODO: recharger par rapport à la référence 00066 } 00067 00068 void CSimpleFuzzyCond::init(NLAIAGENT::IObjectIA *params) 00069 { 00070 if ( ((NLAIAGENT::IBaseGroupType *)params)->size() < 2) 00071 { 00072 // TODO: throw Exception 00073 } 00074 00075 NLAIAGENT::IObjectIA *arg = (NLAIAGENT::IObjectIA *) ((NLAIAGENT::IBaseGroupType *)params)->popFront(); 00076 _Var = (CFuzzyVar *) arg->clone(); 00077 arg->release(); 00078 00079 arg = (NLAIAGENT::IObjectIA *) ((NLAIAGENT::IBaseGroupType *)params)->popFront(); 00080 _Set = (IFuzzySet *) arg->clone(); 00081 arg->release(); 00082 } 00083 } |