00001
00002
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00031
00032 #ifndef RCSC_FORMATION_FORMATION_RBF_H
00033 #define RCSC_FORMATION_FORMATION_RBF_H
00034
00035 #include <rcsc/formation/formation.h>
00036 #include <rcsc/ann/rbf.h>
00037
00038 #include <boost/shared_ptr.hpp>
00039
00040 #include <map>
00041
00042 namespace rcsc {
00043
00048 class FormationRBF
00049 : public Formation {
00050 public:
00051
00056 class Param {
00057 public:
00058 static const double PITCH_LENGTH;
00059 static const double PITCH_WIDTH;
00060
00061 private:
00062
00063 std::string M_role_name;
00064
00065 RBFNetwork M_net;
00066
00067 public:
00068
00072 Param();
00073
00078 const
00079 std::string & roleName() const
00080 {
00081 return M_role_name;
00082 }
00083
00088 RBFNetwork & getNet()
00089 {
00090 return M_net;
00091 }
00092
00097 const
00098 RBFNetwork & net() const
00099 {
00100 return M_net;
00101 }
00102
00109 Vector2D getPosition( const Vector2D & ball_pos,
00110 const Formation::SideType type ) const;
00111
00116 void setRoleName( const std::string & name )
00117 {
00118 M_role_name = name;
00119 }
00120
00126 bool read( std::istream & is );
00127
00133 std::ostream & print( std::ostream & os ) const;
00134
00135 private:
00141 bool readRoleName( std::istream & is );
00142
00148 bool readParam( std::istream & is );
00149
00155 std::ostream & printRoleName( std::ostream & os ) const;
00156
00162 std::ostream & printParam( std::ostream & os ) const;
00163
00164 };
00165
00166
00167 private:
00168
00170 std::map< int, boost::shared_ptr< Param > > M_param_map;
00171
00172 public:
00173
00177 FormationRBF();
00178
00179
00184 static
00185 std::string name()
00186 {
00187 return std::string( "RBF" );
00188 }
00189
00194 static
00195 Formation * create()
00196 {
00197 return ( new FormationRBF );
00198 }
00199
00200
00201
00206 virtual
00207 std::string methodName() const
00208 {
00209 return FormationRBF::name();
00210 }
00211
00216 virtual
00217 Snapshot createDefaultParam();
00218
00219 protected:
00220
00227 virtual
00228 void createNewRole( const int unum,
00229 const std::string & role_name,
00230 const SideType type );
00231
00237 virtual
00238 void setRoleName( const int unum,
00239 const std::string & name );
00240
00241 public:
00242
00249 virtual
00250 std::string getRoleName( const int unum ) const;
00251
00257 virtual
00258 Vector2D getPosition( const int unum,
00259 const Vector2D & focus_point ) const;
00260
00261
00262
00263
00264
00265 virtual
00266 void getPositions( const Vector2D & focus_point,
00267 std::vector< Vector2D > & positions ) const;
00268
00273 virtual
00274 void train( const std::list< Snapshot > & train_data );
00275
00281 bool read( std::istream & is );
00282
00288 std::ostream & print( std::ostream & os ) const;
00289
00290
00291 private:
00292
00298 bool readPlayers( std::istream & is );
00299
00305 boost::shared_ptr< Param > getParam( const int unum );
00306
00312 boost::shared_ptr< const Param > param( const int unum ) const;
00313
00314 };
00315
00316 }
00317
00318 #endif