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"
10#include <boost/ptr_container/ptr_vector.hpp>
11#include <vector>
12#include <string>
13#include <iosfwd>
14
15namespace 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;
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の表現 .
利きを持つ局面
const range_t makeRange(size_t group) const
Definition featureSet.cc:66
int capture_group
makeRateで特別扱いのgroup
const Group & group(size_t group_id) const
void showStatistics(std::ostream &) const
FeatureSet(const FeatureSet &)=delete
void save(const std::string &output_directory, size_t group_id) const
const RatedMove makeRate(const NumEffectState &state, bool in_check, const RatingEnv &env, Move move) const
FeatureSet & operator=(const FeatureSet &)=delete
std::vector< int > weightslog10
bool effectiveInCheck(size_t group_id) const
void addCommon(Group *g)
void generateLogProb(const NumEffectState &state, const RatingEnv &env, int limit, MoveLogProbVector &out, bool in_pv_or_all=true) const
std::vector< stat::Variance > variance_all
boost::ptr_vector< Group > groups
std::vector< double > weights
static std::string defaultDirectory()
int logProbKingEscape(const NumEffectState &state, const RatingEnv &env, Move) const
int rating(const NumEffectState &state, const RatingEnv &env, Move move, size_t group_id) const
void add(Feature *f)
Definition featureSet.cc:95
std::vector< Statistics > statistics
int logProbSeePlus(const NumEffectState &state, const RatingEnv &env, Move) const
std::vector< Feature * > features
const RatedMove makeRateWithCut(const NumEffectState &state, bool in_check, const RatingEnv &env, int limit, Move move) const
std::vector< char > effective_in_check
const double & weight(size_t feature_id) const
const range_t & range(size_t group) const
void setWeight(size_t feature_id, const double &value)
const Feature & feature(size_t feature_id) const
std::vector< CArray< stat::Variance, 8 > > variance_match
int logProbTakeBack(const NumEffectState &state, const RatingEnv &env, Move) const
bool tryLoad(const std::string &input_directory)
const std::string annotate(const NumEffectState &state, const RatingEnv &env, Move move) 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
std::vector< range_t > ranges
std::vector< char > normal_groups
void showGroup(std::ostream &, size_t group_id) const
mutually exclusive set of features
Definition group.h:17
static const StandardFeatureSet & instance()
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