7 #include <boost/algorithm/string/trim.hpp>
8 #include <boost/foreach.hpp>
9 #include <boost/program_options.hpp>
16 typedef std::pair<value_t, value_t>
pair_t;
17 typedef std::map<std::string, pair_t>
map_t;
20 const std::string& turn,
22 const std::string& csa_file)
24 const std::string log_file = player +
"_" + turn +
".log";
25 std::ofstream
out(log_file.c_str(), std::ios::app);
26 out << value <<
"\t" << csa_file <<
"\n";
44 pair_t& pair = map[player];
46 values.push_back(eval);
48 logValue(player,
"black", eval, csa_file);
58 pair_t& pair = map[player];
60 values.push_back(eval);
62 logValue(player,
"white", eval, csa_file);
70 BOOST_FOREACH(
const map_t::value_type& vt, map) {
71 std::cout <<
"===== " << vt.first <<
" =====\n";
73 int sum, mean, var, std_dev, skew, kurt;
75 sum, mean, var, std_dev, skew, kurt);
76 std::cout <<
"[BLACK] mean: " << mean <<
", std_dev: " << std_dev << std::endl;
79 int sum, mean, var, std_dev, skew, kurt;
81 sum, mean, var, std_dev, skew, kurt);
82 std::cout <<
"[WHITE] mean: " << mean <<
", std_dev: " << std_dev << std::endl;
88 int main(
int argc,
char **argv)
90 namespace bp = boost::program_options;
92 bp::options_description command_line_options;
93 command_line_options.add_options()
94 (
"input-file", bp::value<std::vector<std::string> >(),
95 "input files in the CSA format")
96 (
"help",
"Show help message");
98 bp::positional_options_description p;
99 p.add(
"input-file", -1);
103 bp::command_line_parser(argc, argv).options(command_line_options).positional(p).
run(), vm);
105 if (vm.count(
"help")) {
106 std::cerr <<
"Calculate evaluation values for the initial search moves after finishing opening moves.\n";
107 std::cerr <<
"Usage: " << argv[0] <<
" [options] csa-file [...]\n";
108 std::cerr <<
" " << argv[0] <<
" [options]\n";
109 std::cout << command_line_options << std::endl;
112 }
catch (std::exception &e) {
113 std::cerr <<
"error in parsing options" << std::endl
114 << e.what() << std::endl;
115 std::cerr <<
"Calculate evaluation values for the initial search moves after finishing opening moves.\n";
116 std::cerr <<
"Usage: " << argv[0] <<
" [options] csa-file [...]\n";
117 std::cerr <<
" " << argv[0] <<
" [options]\n";
118 std::cerr << command_line_options << std::endl;
122 std::vector<std::string>
files;
123 if (vm.count(
"input-file")) {
124 const std::vector<std::string> temp = vm[
"input-file"].as<std::vector<std::string> >();
125 files.insert(files.end(), temp.begin(), temp.end());
128 while(std::getline(std::cin , line)) {
129 boost::algorithm::trim(line);
130 files.push_back(line);
135 BOOST_FOREACH(
const std::string& file, files) {