00001
00002
00003
00004
00005
00006
00007 #include "CollectedBeliefs.h"
00008
00009
00010
00011
00012
00013 SingleBeliefs::SingleBeliefs()
00014 {
00015 int i;
00016 for (i = 0; i < RateableOptions::numOfOptions; ++i)
00017 ratedOptions[i].reset(1);
00018 timeStamp = SystemCall::getCurrentSystemTime();
00019 for (i = 0; i < RateableOptions::numOfOptionClasses; ++i)
00020 lastBestOpt[i] = RateableOptions::getClassMember((RateableOptions::OptionClassID)(i+RateableOptions::numOfOptions),0);
00021 }
00022
00023 SingleBeliefs::~SingleBeliefs()
00024 {
00025 }
00026
00027 RateableOptions::OptionID SingleBeliefs::getBestOptionInOptionClass(RateableOptions::OptionClassID id)
00028 {
00029 RateableOptions::OptionID maxopt = lastBestOpt[(int)(id)-RateableOptions::numOfOptions];
00030 int maxval = ratedOptions[(int)(maxopt)];
00031 int ct = RateableOptions::getOptionClassChangeThreshold(id);
00032
00033 for (int i = 0; i < RateableOptions::getNumberOfClassMembers(id); ++i)
00034 if (ratedOptions[(int)(RateableOptions::getClassMember(id,i))] >= (maxval+ct))
00035 {
00036 maxval = ratedOptions[(int)(RateableOptions::getClassMember(id,i))];
00037 maxopt = RateableOptions::getClassMember(id,i);
00038 }
00039
00040 lastBestOpt[(int)(id)-RateableOptions::numOfOptions] = maxopt;
00041 return maxopt;
00042 }
00043
00044
00045 In& operator>>(In& stream,SingleBeliefs& singleBeliefs)
00046 {
00047 int tmp = 0;
00048 for (int i = 0; i < RateableOptions::numOfOptions; ++i){
00049 stream.read(&tmp,sizeof(int));
00050 singleBeliefs.ratedOptions[i] = tmp;
00051 }
00052 return stream;
00053 }
00054
00055
00056 Out& operator<<(Out& stream,SingleBeliefs& singleBeliefs)
00057 {
00058 int tmp = 0;
00059 for (int i = 0; i < RateableOptions::numOfOptions; ++i){
00060 tmp = singleBeliefs.ratedOptions[i];
00061 stream.write(&tmp,sizeof(int));
00062 }
00063 return stream;
00064 }
00065
00066
00067
00068
00069
00070
00071
00072
00073 CollectedBeliefs::CollectedBeliefs(const BehaviorControlInterfaces& interfaces)
00074 : BehaviorControlInterfaces(interfaces)
00075 {
00076 for (int i=0; i < Player::numOfPlayerNumbers; ++i) {
00077 for (int j=0; j < RateableOptions::numOfOptions; ++j) {
00078 singleBeliefs[i].ratedOptions[j].reset(RateableOptions::getSlidingAverageRange(j));
00079 }
00080 singleBeliefs[i].timeStamp = SystemCall::getCurrentSystemTime();
00081 }
00082
00083 }
00084
00085 CollectedBeliefs::~CollectedBeliefs()
00086 {
00087 }
00088
00089 void CollectedBeliefs::update()
00090 {
00091
00092
00093
00094
00095
00096
00097
00098
00099
00100
00101 for (int i=0; i<Player::numOfPlayerNumbers-1; ++i)
00102 {
00103 if ((teamMessageCollection[i].isActual()) &&
00104 (teamMessageCollection[i].playerNumberOfSender != Player::undefinedPlayerNumber))
00105 {
00106 SingleBeliefs& actSingleBeliefs =
00107 singleBeliefs[(int)(teamMessageCollection[i].playerNumberOfSender)];
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121 for (int j=0; j<RateableOptions::numOfOptions; ++j)
00122 actSingleBeliefs.ratedOptions[j] =
00123 teamMessageCollection[i].behaviorTeamMessage.ratedOptions[j];
00124 actSingleBeliefs.timeStamp = SystemCall::getCurrentSystemTime();
00125 }
00126 }
00127
00128 }
00129
00130 void CollectedBeliefs::broadcast()
00131 {
00132
00133
00134 int tmpno = (int)(getPlayer().getPlayerNumber());
00135 if (tmpno != Player::undefinedPlayerNumber)
00136 {
00137 for (int j=0; j<RateableOptions::numOfOptions; ++j)
00138 outgoingBehaviorTeamMessage.ratedOptions[j] =
00139 singleBeliefs[tmpno].ratedOptions[j].getLastValue();
00140
00141 INFO(sendOptionRatings,idSingleBeliefs,bin,singleBeliefs[tmpno]);
00142 }
00143 }
00144
00145 void CollectedBeliefs::trigger()
00146 {
00147 for (int i=0; i < Player::numOfPlayerNumbers; ++i)
00148 {
00149 for (int j=0; j<RateableOptions::numOfOptions; ++j)
00150 singleBeliefs[i].ratedOptions[j].trigger();
00151 }
00152 }
00153
00154
00155
00156 In& operator>>(In& stream,CollectedBeliefs& collectedBeliefs)
00157 {
00158 stream.read(&collectedBeliefs,sizeof(CollectedBeliefs));
00159 return stream;
00160 }
00161
00162
00163 Out& operator<<(Out& stream, const CollectedBeliefs& collectedBeliefs)
00164 {
00165 stream.write(&collectedBeliefs,sizeof(CollectedBeliefs));
00166 return stream;
00167 }
00168
00169
00170
00171
00172
00173
00174
00175
00176
00177
00178