説明を見る。00001
00002
00003 #ifndef _BRADLEYTERRY_H
00004 #define _BRADLEYTERRY_H
00005
00006 #include "osl/rating/featureSet.h"
00007 #include <valarray>
00008
00009 namespace osl
00010 {
00011 namespace rating
00012 {
00013 class BradleyTerry
00014 {
00015 typedef std::valarray<double> valarray_t;
00016 FeatureSet& features;
00017
00018 std::string kisen_filename, output_directory;
00019 int kisen_start;
00020 size_t num_cpus, num_records;
00021 int verbose;
00022 int fix_group;
00023 size_t min_rating;
00024 public:
00025 BradleyTerry(FeatureSet& features, const std::string& kisen_file, int kisen_start=0);
00026 ~BradleyTerry();
00027
00028 void setNumCpus(int new_num_cpus) { num_cpus = new_num_cpus; };
00029 void setNumRecords(size_t new_num_records) { num_records = new_num_records; };
00030 void setOutputDirectory(const std::string& new_output) { output_directory = new_output; };
00031 void setFixGroup(int new_fix_group) { fix_group = new_fix_group; };
00032 void setVerbose(int new_verbose) { verbose = new_verbose; };
00033 void setMinRating(int new_min) { min_rating = new_min; };
00034
00035 void iterate();
00036 private:
00037 void update(size_t g);
00038 bool addSquare(size_t g, const NumEffectState& state,
00039 const RatingEnv& env, Move selected,
00040 valarray_t& wins, std::valarray<long double>& denominator) const;
00041
00042 class Thread;
00043 friend class Thread;
00044 size_t accumulate(size_t g, size_t first, size_t last, valarray_t& wins, std::valarray<long double>& denominator) const;
00045 };
00046 }
00047 }
00048
00049 #endif
00050
00051
00052
00053