diff --git a/.travis.yml b/.travis.yml index ad450bf7db23168eb40a455e8989e4b1932b1493..66d7e23ddf3d56a44f2a3c2955f2b8818afd6eb2 100644 --- a/.travis.yml +++ b/.travis.yml @@ -22,4 +22,4 @@ compiler: - gcc script: - mkdir build && cd build - - cmake -DCMAKE_BUILD_TYPE=Release .. && make -j4 && make install + - cmake -DCMAKE_BUILD_TYPE=RelwithDebInfo .. && make -j4 && make install diff --git a/src/lowlevel_feature_extractor.cpp b/src/lowlevel_feature_extractor.cpp index 20452cb545de72c022ce51468e5a269363c2eaf4..f15985f8d01699edbbe8f1e736625f9dd4ffb5c3 100644 --- a/src/lowlevel_feature_extractor.cpp +++ b/src/lowlevel_feature_extractor.cpp @@ -16,6 +16,7 @@ LowLevelFeatureExtractor::LowLevelFeatureExtractor(int num_teammates, assert(numOpponents >= 0); numFeatures = num_basic_features + features_per_player * (numTeammates + numOpponents); + numFeatures += numTeammates + numOpponents; // Uniform numbers feature_vec.resize(numFeatures); } @@ -184,6 +185,38 @@ const std::vector<float>& LowLevelFeatureExtractor::ExtractFeatures( addFeature(0); } } + + // ========================= UNIFORM NUMBERS ========================== // + detected_teammates = 0; + for (PlayerPtrCont::const_iterator it = teammates.begin(); + it != teammates.end(); ++it) { + PlayerObject* teammate = *it; + if (teammate->pos().x > 0 && teammate->unum() > 0 && + detected_teammates < numTeammates) { + addFeature(teammate->unum()); + detected_teammates++; + } + } + // Add zero features for any missing teammates + for (int i=detected_teammates; i<numTeammates; ++i) { + addFeature(0); + } + + detected_opponents = 0; + for (PlayerPtrCont::const_iterator it = opponents.begin(); + it != opponents.end(); ++it) { + PlayerObject* opponent = *it; + if (opponent->pos().x > 0 && opponent->unum() > 0 && + detected_opponents < numOpponents) { + addFeature(opponent->unum()); + detected_opponents++; + } + } + // Add zero features for any missing opponents + for (int i=detected_opponents; i<numOpponents; ++i) { + addFeature(0); + } + assert(featIndx == numFeatures); checkFeatures(); return feature_vec; diff --git a/src/lowlevel_feature_extractor.h b/src/lowlevel_feature_extractor.h index 22d90890955c5de4be786b24751648ce43ef0a4d..8d19e573d77e544f0fdf6be7c0d812106817535b 100644 --- a/src/lowlevel_feature_extractor.h +++ b/src/lowlevel_feature_extractor.h @@ -17,7 +17,7 @@ public: protected: // Number of features for non-player objects. const static int num_basic_features = 58; - // Number of features for each player or opponent in game. + // Number of features for each player or opponent in game, not including uniform numbers. const static int features_per_player = 8; };