My Project
rating/featureSet.h
Go to the documentation of this file.
1 /* featureSet.h
2  */
3 #ifndef OSL_FEATURESET_H
4 #define OSL_FEATURESET_H
5 
6 #include "osl/rating/range.h"
9 #include "osl/numEffectState.h"
10 #include <boost/ptr_container/ptr_vector.hpp>
11 #include <vector>
12 #include <string>
13 #include <iosfwd>
14 
15 namespace osl
16 {
17  namespace stat
18  {
19  class Average;
20  class Variance;
21  }
22  namespace rating
23  {
24  class Group;
25  class Feature;
26  class RatingEnv;
27  class CheckmateIfCaptureGroup;
28  class CaptureGroup;
29  class SendOffGroup;
30  class FeatureSet
31  {
32  // noncopyable
33  FeatureSet(const FeatureSet&) = delete;
34  FeatureSet& operator=(const FeatureSet&) = delete;
35  // range は Groupのメンバーにした方が綺麗な気も
36  boost::ptr_vector<Group> groups;
37  std::vector<char> effective_in_check;
38  std::vector<Feature*> features; // acquaintance
39  std::vector<range_t> ranges;
40  std::vector<double> weights;
41  std::vector<int> weightslog10;
44  std::vector<char> normal_groups;
46  mutable std::vector<CArray<stat::Average,8> > frequency;
47  mutable std::vector<CArray<stat::Variance,8> > variance_match;
48  mutable std::vector<stat::Variance> variance_all;
49  struct Statistics;
50  std::vector<Statistics> statistics;
51  public:
52  FeatureSet();
53  virtual ~FeatureSet();
54  bool tryLoad(const std::string& input_directory);
55  void setWeight(size_t feature_id, const double& value);
56 
57  const Group& group(size_t group_id) const { return groups[group_id]; }
58  bool effectiveInCheck(size_t group_id) const { return effective_in_check[group_id]; }
59  const Feature& feature(size_t feature_id) const { return *features[feature_id]; }
60  const range_t& range(size_t group) const { return ranges[group]; }
61  const double& weight(size_t feature_id) const { return weights[feature_id]; }
62  size_t groupSize() const { return groups.size(); }
63  size_t featureSize() const { return features.size(); }
64  const RatedMove makeRate(const NumEffectState& state, bool in_check,
65  const RatingEnv& env, Move move) const;
66  const RatedMove makeRateWithCut(const NumEffectState& state, bool in_check,
67  const RatingEnv& env, int limit, Move move) const;
68  const std::string annotate(const NumEffectState& state,
69  const RatingEnv& env, Move move) const;
70  void generateRating(const NumEffectState& state, const RatingEnv& env,
71  int limit, RatedMoveVector& out, bool in_pv_or_all=true) const;
72  void generateLogProb(const NumEffectState& state, const RatingEnv& env,
73  int limit, MoveLogProbVector& out, bool in_pv_or_all=true) const;
74  int logProbTakeBack(const NumEffectState& state, const RatingEnv& env, Move) const;
75  int logProbSeePlus(const NumEffectState& state, const RatingEnv& env, Move) const;
76  int logProbKingEscape(const NumEffectState& state, const RatingEnv& env, Move) const;
77 
78  void showGroup(std::ostream&, size_t group_id) const;
79  void save(const std::string& output_directory, size_t group_id) const;
80 
81  void showStatistics(std::ostream&) const;
82 
83  static void normalize(const RatedMoveVector&, MoveLogProbVector& out);
84  static std::string defaultDirectory();
85  protected:
86  void add(Feature *f);
87  void add(Group *g);
88  void add(CaptureGroup *g);
89  void add(SendOffGroup *g);
91  void addCommon(Group *g);
92  void addFinished();
93  private:
94  const range_t makeRange(size_t group) const;
95  int rating(const NumEffectState& state,
96  const RatingEnv& env, Move move, size_t group_id) const;
97  };
98 
100  {
101  public:
102  explicit StandardFeatureSet(bool allow_load_failure=false);
103  static const StandardFeatureSet& instance();
104  static bool healthCheck();
105  };
106 
108  class CaptureSet : public FeatureSet
109  {
110  public:
111  explicit CaptureSet(bool allow_load_failure=false);
112  };
114  class TacticalSet : public FeatureSet
115  {
116  public:
117  explicit TacticalSet(bool allow_load_failure=false);
118  };
119  }
120 }
121 
122 #endif /* OSL_FEATURESET_H */
123 // ;;; Local Variables:
124 // ;;; mode:c++
125 // ;;; c-basic-offset:2
126 // ;;; coding:utf-8
127 // ;;; End:
圧縮していない moveの表現 .
Definition: basic_type.h:1052
利きを持つ局面
CaptureSet(bool allow_load_failure=false)
Definition: featureSet.cc:791
const range_t makeRange(size_t group) const
Definition: featureSet.cc:66
int capture_group
makeRateで特別扱いのgroup
void showStatistics(std::ostream &) const
Definition: featureSet.cc:655
FeatureSet(const FeatureSet &)=delete
const Feature & feature(size_t feature_id) const
void save(const std::string &output_directory, size_t group_id) const
Definition: featureSet.cc:649
const RatedMove makeRate(const NumEffectState &state, bool in_check, const RatingEnv &env, Move move) const
Definition: featureSet.cc:481
FeatureSet & operator=(const FeatureSet &)=delete
std::vector< int > weightslog10
bool effectiveInCheck(size_t group_id) const
void addCommon(Group *g)
Definition: featureSet.cc:101
void generateLogProb(const NumEffectState &state, const RatingEnv &env, int limit, MoveLogProbVector &out, bool in_pv_or_all=true) const
Definition: featureSet.cc:389
std::vector< stat::Variance > variance_all
boost::ptr_vector< Group > groups
std::vector< double > weights
static std::string defaultDirectory()
Definition: featureSet.cc:672
int logProbKingEscape(const NumEffectState &state, const RatingEnv &env, Move) const
Definition: featureSet.cc:443
int rating(const NumEffectState &state, const RatingEnv &env, Move move, size_t group_id) const
Definition: featureSet.cc:458
void add(Feature *f)
Definition: featureSet.cc:95
std::vector< Statistics > statistics
int logProbSeePlus(const NumEffectState &state, const RatingEnv &env, Move) const
Definition: featureSet.cc:431
std::vector< Feature * > features
const RatedMove makeRateWithCut(const NumEffectState &state, bool in_check, const RatingEnv &env, int limit, Move move) const
Definition: featureSet.cc:573
std::vector< char > effective_in_check
void setWeight(size_t feature_id, const double &value)
Definition: featureSet.cc:193
std::vector< CArray< stat::Variance, 8 > > variance_match
int logProbTakeBack(const NumEffectState &state, const RatingEnv &env, Move) const
Definition: featureSet.cc:420
bool tryLoad(const std::string &input_directory)
Definition: featureSet.cc:143
const std::string annotate(const NumEffectState &state, const RatingEnv &env, Move move) const
Definition: featureSet.cc:615
const range_t & range(size_t group) const
static void normalize(const RatedMoveVector &, MoveLogProbVector &out)
std::vector< CArray< stat::Average, 8 > > frequency
統計測定用
void generateRating(const NumEffectState &state, const RatingEnv &env, int limit, RatedMoveVector &out, bool in_pv_or_all=true) const
Definition: featureSet.cc:200
std::vector< range_t > ranges
std::vector< char > normal_groups
void showGroup(std::ostream &, size_t group_id) const
Definition: featureSet.cc:642
const double & weight(size_t feature_id) const
const Group & group(size_t group_id) const
mutually exclusive set of features
Definition: group.h:17
static const StandardFeatureSet & instance()
Definition: featureSet.cc:765
StandardFeatureSet(bool allow_load_failure=false)
Definition: featureSet.cc:680
TacticalSet(bool allow_load_failure=false)
incrementaly maintain average of data sequence
Definition: average.h:14
incrementaly maintain average and variance of data sequence
Definition: variance.h:15
std::pair< int, int > range_t
Definition: range.h:10