#include <mhics.h>
Nevrax France
Definition at line 50 of file mhics.h.
Public Member Functions | |
void | addProvider (TMotivation providerName, TClassifierNumber classifierNumber) |
CMotivationEnergy () | |
void | getDebugString (std::string &t) const |
Chaine de debug. | |
double | getMotivationPP (TMotivation motivationName) const |
Retourne la Puissance Propre d'une Motivation. | |
double | getMotivationValue (TMotivation motivationName) const |
Retourne la valeur d'une motiation. | |
const std::map< TMotivation, std::set< TClassifierNumber > > * | getProviders () const |
double | getSumValue () const |
void | removeProvider (TMotivation providerName) |
Gestion des classeurs qui apportent la motivation. | |
void | setMHiCSagent (CMHiCSagent *pmhicsAgent) |
void | setMotivationPP (TMotivation motivationName, double PP) |
Donne la Puissance Propre d'une Motivation. | |
void | setMotivationValue (TMotivation motivationName, double value) |
Fixe la valeur d'une motivation. | |
virtual | ~CMotivationEnergy () |
Private Types | |
typedef std::map< TMotivation, CMotivationValue > | TEnergyByMotivation |
Private Member Functions | |
void | computeMotivationValue () |
Private Attributes | |
TEnergyByMotivation | _EnergyByMotivation |
CMHiCSagent * | _MHiCSagent |
std::map< TMotivation, std::set< TClassifierNumber > > | _MotivationProviders |
CMotivationValue | _MyMotivationValue |
double | _SumValue |
|
|
|
Definition at line 38 of file mhics.cpp. References _MHiCSagent, and _SumValue.
00039 { 00040 _SumValue = 0; 00041 _MHiCSagent = NULL; 00042 // _WasPreviouslyActived = false; 00043 } |
|
Definition at line 45 of file mhics.cpp.
00046 { 00047 } |
|
Definition at line 66 of file mhics.cpp. References _MotivationProviders, computeMotivationValue(), and NLAINIMAT::TClassifierNumber.
00067 { 00068 _MotivationProviders[providerName].insert(classifierNumber); 00069 computeMotivationValue(); 00070 } |
|
Definition at line 95 of file mhics.cpp. References _EnergyByMotivation, _MHiCSagent, _MotivationProviders, _MyMotivationValue, _SumValue, NLAINIMAT::CClassifierPriority::getClassifierTimer(), NLAINIMAT::CMHiCSagent::getMHiCSbase(), NLAINIMAT::CMHiCSagent::getMotivationPP(), NLAINIMAT::CMHiCSagent::getMotivationValue(), NLAINIMAT::CMHiCSbase::getPriorityPart(), NLAINIMAT::CClassifierPriority::getPriorityTimer(), NLAINIMAT::CMHiCSagent::getTemporaryClassifierPriorityTime(), NLAINIMAT::Motivation_Unknown, nlassert, NLAINIMAT::CMotivationEnergy::CMotivationValue::PP, NLAINIMAT::TClassifierNumber, NLAINIMAT::TMotivation, uint32, NLAINIMAT::CMotivationEnergy::CMotivationValue::Value, and NLAINIMAT::CMHiCSagent::wasClassifierPreviouslyActive(). Referenced by addProvider(), and removeProvider().
00096 { 00097 _EnergyByMotivation.clear(); 00098 00099 TMotivation lastMotivationName = Motivation_Unknown; 00100 // We look for motivation values comming directly from Motivations 00101 std::multimap<TMotivation, std::set<TClassifierNumber> >::iterator itMotivationProviders; 00102 for (itMotivationProviders = _MotivationProviders.begin(); 00103 itMotivationProviders != _MotivationProviders.end(); 00104 itMotivationProviders++) 00105 { 00106 uint32 lastMaxMotiveValue = 0; 00107 TMotivation motivationName = (*itMotivationProviders).first; 00108 std::set<TClassifierNumber>::iterator itClassifierNumber; 00109 for (itClassifierNumber = (*itMotivationProviders).second.begin(); itClassifierNumber != (*itMotivationProviders).second.end(); itClassifierNumber++) 00110 { 00111 TClassifierNumber classierNumber = (*itClassifierNumber); 00112 uint32 classifierTimer = _MHiCSagent->getMHiCSbase()->getPriorityPart(motivationName, classierNumber).getClassifierTimer();; 00113 bool wasPreviouslyActived = _MHiCSagent->wasClassifierPreviouslyActive(motivationName,classierNumber); 00114 if (wasPreviouslyActived) 00115 { 00116 uint32 temporaryClassifierPriorityTime = _MHiCSagent->getTemporaryClassifierPriorityTime(motivationName, classierNumber); 00117 // on donne une marge de 15 secondes à l'action activée. 00118 if (temporaryClassifierPriorityTime > classifierTimer + 15) 00119 { 00120 classifierTimer = temporaryClassifierPriorityTime; 00121 } 00122 else 00123 { 00124 classifierTimer -=1; // Pour lui donner un avantage en cas d'égalité 00125 } 00126 } 00127 double motiveValue = _MHiCSagent->getMotivationValue(motivationName); 00128 double motivePP = _MHiCSagent->getMotivationPP(motivationName); 00129 uint32 priorityTimer = _MHiCSagent->getMHiCSbase()->getPriorityPart(motivationName, classierNumber).getPriorityTimer(); 00130 priorityTimer = std::max(priorityTimer, classifierTimer); 00131 00132 00133 uint32 combinedValue = (motiveValue * 10000.0) - priorityTimer; 00134 if (combinedValue > lastMaxMotiveValue) 00135 { 00136 lastMaxMotiveValue = combinedValue; 00137 _EnergyByMotivation[motivationName].Value = combinedValue; 00138 _EnergyByMotivation[motivationName].PP = motivePP; 00139 } 00140 } 00141 } 00142 00143 TEnergyByMotivation::const_iterator itEnergyByMotivation; 00144 double sum = 0; 00145 for (itEnergyByMotivation = _EnergyByMotivation.begin(); itEnergyByMotivation != _EnergyByMotivation.end(); itEnergyByMotivation++) 00146 { 00147 sum += (*itEnergyByMotivation).second.Value * (*itEnergyByMotivation).second.PP; 00148 } 00149 sum += _MyMotivationValue.PP * _MyMotivationValue.Value; 00150 00151 _SumValue = sum; 00152 nlassert(_SumValue >= 0); 00153 } |
|
Chaine de debug.
Definition at line 196 of file mhics.cpp. References _EnergyByMotivation, t, and NLMISC::toString().
00197 { 00198 std::string ret; 00199 TEnergyByMotivation::const_iterator itEnergyByMotivation; 00200 00201 for (itEnergyByMotivation = _EnergyByMotivation.begin(); itEnergyByMotivation!= _EnergyByMotivation.end(); itEnergyByMotivation++) 00202 { 00203 ret += " " + conversionMotivation.toString((*itEnergyByMotivation).first) + " (" + NLMISC::toString((*itEnergyByMotivation).second.Value * (*itEnergyByMotivation).second.PP) + ") "; 00204 } 00205 t+=ret; 00206 } |
|
Retourne la Puissance Propre d'une Motivation.
Definition at line 166 of file mhics.cpp. References _MyMotivationValue, and NLAINIMAT::CMotivationEnergy::CMotivationValue::PP.
00167 { 00168 return _MyMotivationValue.PP; 00169 } |
|
Retourne la valeur d'une motiation.
Definition at line 185 of file mhics.cpp. References _MyMotivationValue, and NLAINIMAT::CMotivationEnergy::CMotivationValue::Value.
00186 { 00187 return _MyMotivationValue.Value; 00188 } |
|
Definition at line 190 of file mhics.cpp. References _MotivationProviders.
00191 { 00192 return &_MotivationProviders; 00193 } |
|
Definition at line 49 of file mhics.cpp. References _SumValue. Referenced by NLAINIMAT::CMHiCSagent::motivationCompute().
00050 { 00051 return _SumValue; 00052 } |
|
Gestion des classeurs qui apportent la motivation.
Definition at line 54 of file mhics.cpp. References _MotivationProviders, and computeMotivationValue().
00055 { 00056 _MotivationProviders.erase(providerName); 00057 computeMotivationValue(); 00058 } |
|
Definition at line 95 of file mhics.h. References _MHiCSagent.
00095 {_MHiCSagent = pmhicsAgent;} |
|
Donne la Puissance Propre d'une Motivation.
Definition at line 156 of file mhics.cpp. References _EnergyByMotivation, _MyMotivationValue, _SumValue, nlassert, NLAINIMAT::CMotivationEnergy::CMotivationValue::PP, and NLAINIMAT::CMotivationEnergy::CMotivationValue::Value.
00157 { 00158 _SumValue -= _MyMotivationValue.Value * _MyMotivationValue.PP; 00159 _SumValue += _MyMotivationValue.Value * PP; 00160 _EnergyByMotivation[motivationName].PP = PP; 00161 _MyMotivationValue.PP = PP; 00162 nlassert(_SumValue >= 0); 00163 } |
|
Fixe la valeur d'une motivation.
Definition at line 172 of file mhics.cpp. References _EnergyByMotivation, _MyMotivationValue, _SumValue, nlassert, NLAINIMAT::CMotivationEnergy::CMotivationValue::PP, NLAINIMAT::CMotivationEnergy::CMotivationValue::Value, and value.
00173 { 00174 nlassert(value >= 0); 00175 _SumValue -= _MyMotivationValue.Value * _MyMotivationValue.PP; 00176 nlassert(_SumValue >= 0); 00177 _SumValue += value * _MyMotivationValue.PP; 00178 _EnergyByMotivation[motivationName].Value = value; 00179 _MyMotivationValue.Value = value; 00180 00181 nlassert(_SumValue >= 0); 00182 } |
|
Definition at line 109 of file mhics.h. Referenced by computeMotivationValue(), getDebugString(), setMotivationPP(), and setMotivationValue(). |
|
Definition at line 104 of file mhics.h. Referenced by CMotivationEnergy(), computeMotivationValue(), and setMHiCSagent(). |
|
Definition at line 106 of file mhics.h. Referenced by addProvider(), computeMotivationValue(), getProviders(), and removeProvider(). |
|
Definition at line 110 of file mhics.h. Referenced by computeMotivationValue(), getMotivationPP(), getMotivationValue(), setMotivationPP(), and setMotivationValue(). |
|
Definition at line 105 of file mhics.h. Referenced by CMotivationEnergy(), computeMotivationValue(), getSumValue(), setMotivationPP(), and setMotivationValue(). |