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:
osl::rating::FeatureSet::makeRateWithCut
const RatedMove makeRateWithCut(const NumEffectState &state, bool in_check, const RatingEnv &env, int limit, Move move) const
Definition: featureSet.cc:573
osl::rating::FeatureSet::makeRange
const range_t makeRange(size_t group) const
Definition: featureSet.cc:66
osl::rating::CaptureSet
駒得のみ
Definition: rating/featureSet.h:109
osl::rating::FeatureSet::showGroup
void showGroup(std::ostream &, size_t group_id) const
Definition: featureSet.cc:642
osl::rating::FeatureSet::normal_groups
std::vector< char > normal_groups
Definition: rating/featureSet.h:44
osl::rating::FeatureSet::variance_match
std::vector< CArray< stat::Variance, 8 > > variance_match
Definition: rating/featureSet.h:47
osl::rating::FeatureSet::ranges
std::vector< range_t > ranges
Definition: rating/featureSet.h:39
osl::rating::FeatureSet::groups
boost::ptr_vector< Group > groups
Definition: rating/featureSet.h:36
osl::rating::FeatureSet::generateRating
void generateRating(const NumEffectState &state, const RatingEnv &env, int limit, RatedMoveVector &out, bool in_pv_or_all=true) const
Definition: featureSet.cc:200
osl::rating::FeatureSet::FeatureSet
FeatureSet()
Definition: featureSet.cc:52
osl::rating::FeatureSet::add
void add(Feature *f)
Definition: featureSet.cc:95
osl::rating::CheckmateIfCaptureGroup
Definition: checkmateGroup.h:14
osl::rating::FeatureSet::logProbTakeBack
int logProbTakeBack(const NumEffectState &state, const RatingEnv &env, Move) const
Definition: featureSet.cc:420
osl::rating::FeatureSet::range
const range_t & range(size_t group) const
Definition: rating/featureSet.h:60
osl::rating::FeatureSet::normalize
static void normalize(const RatedMoveVector &, MoveLogProbVector &out)
osl::rating::FeatureSet::weight
const double & weight(size_t feature_id) const
Definition: rating/featureSet.h:61
osl::Move
圧縮していない moveの表現 .
Definition: basic_type.h:1052
moveLogProbVector.h
osl::rating::FeatureSet::capture_group
int capture_group
makeRateで特別扱いのgroup
Definition: rating/featureSet.h:43
osl::rating::Group
mutually exclusive set of features
Definition: group.h:17
osl::stat::Variance
incrementaly maintain average and variance of data sequence
Definition: variance.h:15
osl::rating::FeatureSet::statistics
std::vector< Statistics > statistics
Definition: rating/featureSet.h:49
osl::rating::TacticalSet::TacticalSet
TacticalSet(bool allow_load_failure=false)
ratedMoveVector.h
osl::rating::FeatureSet::annotate
const std::string annotate(const NumEffectState &state, const RatingEnv &env, Move move) const
Definition: featureSet.cc:615
osl::rating::range_t
std::pair< int, int > range_t
Definition: range.h:10
osl::rating::FeatureSet::sendoff_group
int sendoff_group
Definition: rating/featureSet.h:43
osl::rating::RatedMove
Definition: ratedMove.h:14
osl::rating::RatedMoveVector
Definition: ratedMoveVector.h:17
osl::rating::StandardFeatureSet::instance
static const StandardFeatureSet & instance()
Definition: featureSet.cc:765
osl::rating::FeatureSet::FeatureSet
FeatureSet(const FeatureSet &)=delete
osl::rating::Feature
Definition: rating/feature.h:15
osl::rating::SendOffGroup
Definition: group.h:97
osl::rating::FeatureSet::~FeatureSet
virtual ~FeatureSet()
Definition: featureSet.cc:58
osl::rating::StandardFeatureSet::healthCheck
static bool healthCheck()
Definition: featureSet.cc:771
osl::rating::FeatureSet::feature
const Feature & feature(size_t feature_id) const
Definition: rating/featureSet.h:59
osl::rating::RatingEnv
Definition: ratingEnv.h:16
osl::rating::FeatureSet::logProbSeePlus
int logProbSeePlus(const NumEffectState &state, const RatingEnv &env, Move) const
Definition: featureSet.cc:431
osl::rating::FeatureSet::variance_all
std::vector< stat::Variance > variance_all
Definition: rating/featureSet.h:48
osl::stat::Average
incrementaly maintain average of data sequence
Definition: average.h:14
range.h
osl::rating::FeatureSet::Statistics
Definition: featureSet.cc:39
osl::rating::FeatureSet::groupSize
size_t groupSize() const
Definition: rating/featureSet.h:62
osl::rating::FeatureSet::defaultDirectory
static std::string defaultDirectory()
Definition: featureSet.cc:672
osl::container::MoveLogProbVector
Definition: moveLogProbVector.h:14
osl::rating::StandardFeatureSet::StandardFeatureSet
StandardFeatureSet(bool allow_load_failure=false)
Definition: featureSet.cc:680
osl::rating::FeatureSet
Definition: rating/featureSet.h:31
osl::rating::FeatureSet::featureSize
size_t featureSize() const
Definition: rating/featureSet.h:63
osl::NumEffectState
利きを持つ局面
Definition: numEffectState.h:34
osl::rating::FeatureSet::setWeight
void setWeight(size_t feature_id, const double &value)
Definition: featureSet.cc:193
osl::rating::CaptureSet::CaptureSet
CaptureSet(bool allow_load_failure=false)
Definition: featureSet.cc:791
osl::rating::FeatureSet::weights
std::vector< double > weights
Definition: rating/featureSet.h:40
osl::rating::FeatureSet::checkmate_if_capture_group
int checkmate_if_capture_group
Definition: rating/featureSet.h:43
osl::rating::FeatureSet::addFinished
void addFinished()
Definition: featureSet.cc:79
osl::rating::FeatureSet::generateLogProb
void generateLogProb(const NumEffectState &state, const RatingEnv &env, int limit, MoveLogProbVector &out, bool in_pv_or_all=true) const
Definition: featureSet.cc:389
osl::rating::FeatureSet::rating
int rating(const NumEffectState &state, const RatingEnv &env, Move move, size_t group_id) const
Definition: featureSet.cc:458
osl::rating::CaptureGroup
Definition: captureGroup.h:14
osl::rating::FeatureSet::effective_in_check
std::vector< char > effective_in_check
Definition: rating/featureSet.h:37
osl::rating::FeatureSet::features
std::vector< Feature * > features
Definition: rating/featureSet.h:38
osl::rating::FeatureSet::logProbKingEscape
int logProbKingEscape(const NumEffectState &state, const RatingEnv &env, Move) const
Definition: featureSet.cc:443
osl::rating::FeatureSet::operator=
FeatureSet & operator=(const FeatureSet &)=delete
osl::rating::FeatureSet::weightslog10
std::vector< int > weightslog10
Definition: rating/featureSet.h:41
numEffectState.h
osl::rating::FeatureSet::save
void save(const std::string &output_directory, size_t group_id) const
Definition: featureSet.cc:649
osl::rating::FeatureSet::group
const Group & group(size_t group_id) const
Definition: rating/featureSet.h:57
osl::rating::FeatureSet::makeRate
const RatedMove makeRate(const NumEffectState &state, bool in_check, const RatingEnv &env, Move move) const
Definition: featureSet.cc:481
osl::rating::FeatureSet::addCommon
void addCommon(Group *g)
Definition: featureSet.cc:101
osl::rating::StandardFeatureSet
Definition: rating/featureSet.h:100
osl::rating::FeatureSet::tryLoad
bool tryLoad(const std::string &input_directory)
Definition: featureSet.cc:143
osl::rating::FeatureSet::frequency
std::vector< CArray< stat::Average, 8 > > frequency
統計測定用
Definition: rating/featureSet.h:46
osl::rating::FeatureSet::effectiveInCheck
bool effectiveInCheck(size_t group_id) const
Definition: rating/featureSet.h:58
osl::rating::TacticalSet
駒得のみ
Definition: rating/featureSet.h:115
osl
Definition: additionalEffect.h:6
osl::rating::FeatureSet::showStatistics
void showStatistics(std::ostream &) const
Definition: featureSet.cc:655