Skip to content

Commit

Permalink
Merge pull request #65 from kobanium/develop
Browse files Browse the repository at this point in the history
Develop
  • Loading branch information
yssaya authored Jul 29, 2022
2 parents 31513e4 + 8570a42 commit 9b961e3
Show file tree
Hide file tree
Showing 5 changed files with 55 additions and 21 deletions.
6 changes: 4 additions & 2 deletions src/autousi/play.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -248,14 +248,16 @@ class USIEngine : public Child {
argv[argc++] = opt_p_value;
#else
char opt_p[] = "-p";
char opt_p_value[] = "3200";
// char opt_p_value[] = "3200";
char opt_p_value[] = "6400";
argv[argc++] = opt_p;
argv[argc++] = opt_p_value;

char opt_kld[] = "-kldgain";
// char opt_kld_value[] = "0.0000013";
// char opt_kld_value[] = "0.000006";
char opt_kld_value[] = "0.000005";
// char opt_kld_value[] = "0.000005";
char opt_kld_value[] = "0.00000075";
argv[argc++] = opt_kld;
argv[argc++] = opt_kld_value;
#endif
Expand Down
4 changes: 2 additions & 2 deletions src/common/param.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@
#pragma once
namespace Ver {
constexpr unsigned char major = 3; // 2...komaochi, 3...Swish
constexpr unsigned char minor = 5; //
constexpr unsigned char minor = 6; //
// usi_engine is no use. MUST increase "minor" for kicking old engine by server. Only major and minor are sent to client.
constexpr unsigned short usi_engine = 36; // 1...18 AobaZero, 16...26 komaochi, 27...Swish AobaZero
constexpr unsigned short usi_engine = 37; // 1...18 AobaZero, 16...26 komaochi, 27...Swish AobaZero
}

#define AOBA_UNIQUE ".oeWK7ZhnLN"
Expand Down
57 changes: 44 additions & 13 deletions src/playshogi/playshogi.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ static string addup_result(const NodeType &type_term, const Color &turn,
uint result[][NodeType::ok_size][3]) noexcept;
static string result_out(Color turn, uint result[][NodeType::ok_size][3],
double &se) noexcept;
static void start_engine(USIEngine & c) noexcept;
static void start_engine(USIEngine & c, int i) noexcept;
static void start_newgame(Game &game, uint nplay, const Color &turn0) noexcept;
static int get_options(int argc, const char * const *argv) noexcept;
static void child_out(USIEngine &c, const char *fmt, ...) noexcept;
Expand Down Expand Up @@ -119,6 +119,7 @@ static int num_H[2] = { 0, 0};
static int num_T[2] = { -1, -1};
static NNet::Impl impl_I[2] = { NNet::opencl, NNet::opencl };
static FName fname_W[2];
static FName fname_option[2];

static FName shell("/bin/sh");
static string cmd0, cmd1;
Expand Down Expand Up @@ -166,7 +167,6 @@ int main(int argc, char **argv) {
for (uint u = 0; u < static_cast<uint>(num_P); ++u)
games.emplace_back(new Game(u, cmd0, cmd1));

//bool is_first = true;
Color turn0 = SAux::black;
uint nplay = 0;
uint latest = 0;
Expand All @@ -176,10 +176,11 @@ int main(int argc, char **argv) {

OSI::handle_signal(on_signal);
for (auto &ptr : games) {
start_engine(ptr->engine0);
start_engine(ptr->engine1);
start_engine(ptr->engine0, 0);
start_engine(ptr->engine1, 1);
start_newgame(*ptr, nplay++, turn0);
if (! flag_f) turn0 = turn0.to_opp(); }
if (! flag_f) turn0 = turn0.to_opp();
}

// main loop
map<uint, RowResult> row_results;
Expand Down Expand Up @@ -586,7 +587,7 @@ static void start_newgame(Game &game, uint nplay, const Color &turn0) noexcept {
else child_out(game.engine1, str_go_visit[go_visit]);
}

static void start_engine(USIEngine &c) noexcept {
static void start_engine(USIEngine &c, int i) noexcept {
assert(c.ok());
char line[65536];
char a0[shell.get_len_fname() + 1];
Expand All @@ -603,19 +604,33 @@ static void start_engine(USIEngine &c) noexcept {
while (true) {
if (c.getline_in(line, sizeof(line)) == 0) throw EoF();
log_out(c, "%s", line);
if (strcmp(line, "usiok") == 0) break; }
if (strcmp(line, "usiok") == 0) break;
}

FILE *fp = fopen(fname_option[i].get_fname(),"r");
if ( fp ) {
for (;;) {
char line[256];
if ( fgets( line, 256, fp ) == NULL ) break;
child_out(c, line);
}
fclose(fp);
}

child_out(c, "isready");
while (true) {
if (c.getline_in(line, sizeof(line)) == 0) throw EoF();
log_out(c, "%s", line);
if (strcmp(line, "readyok") == 0) break; } }
if (strcmp(line, "readyok") == 0) break;
}
}
catch (const EoF &e) {
while (0 < c.getline_err(line, sizeof(line))) log_out(c, "%s", line);
while (0 < c.getline_in (line, sizeof(line))) log_out(c, "%s", line);
die(ERR_INT("Player %u of game %u terminates.",
c.get_player_id(), c.get_game_id())); }
catch (...) { terminate(); } }
die(ERR_INT("Player %u of game %u terminates.", c.get_player_id(), c.get_game_id()));
}
catch (...) { terminate(); }
}

static void child_out(USIEngine &c, const char *fmt, ...) noexcept {
assert(c.ok() && fmt);
Expand Down Expand Up @@ -710,7 +725,7 @@ static int get_options(int argc, const char * const *argv) noexcept {
uint num;

while (! flag_err) {
int opt = Opt::get(argc, argv, "0:1:c:m:d:P:I:B:U:H:W:T:o:frsubv");
int opt = Opt::get(argc, argv, "0:1:c:m:d:P:I:B:U:H:W:T:o:i:frsubv");
if (opt < 0) break;

switch (opt) {
Expand Down Expand Up @@ -800,7 +815,21 @@ static int get_options(int argc, const char * const *argv) noexcept {
if (*endptr != ':') break;
if (2U <= ++num) { flag_err = true; break; } }
break;
default: flag_err = true; break; } }
case 'i':
strncpy(buf, Opt::arg, sizeof(buf));
buf[sizeof(buf) - 1U] = '\0';
num = 0;
for (char *str = buf;; str = nullptr) {
const char *token = OSI::strtok(str, ":", &endptr);
if (!token) break;
if (2U <= num) { flag_err = true; break; }
fname_option[num++].reset_fname(token);
}
break;

default: flag_err = true; break;
}
}

if (!flag_err && 0 < cmd0.size() && 0 < cmd1.size()) {
cout << "'-------------------------------------------------------------\n";
Expand Down Expand Up @@ -883,6 +912,8 @@ Other options:
-T STR Specifies the number of threads for CPU BLAS computation. STR can
contain two numbers separated by ':'. The default is -1 (means an
upper bound of the number).
-i STR usi option file paths. STR must contain two
sizes separated by ':'.
Example:
)" << Opt::cmd << R"( -0 "~/aobaz -w ~/w0.txt" -1 "~/aobaz -w ~/w1.txt"
Generate a gameplay between 'w0.txt' (black) and 'w1.txt' (white)
Expand Down
3 changes: 2 additions & 1 deletion src/usi-engine/bona/shogi.h
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,8 @@ extern unsigned char ailast_one[512];
//#define BNZ_VER "33" // 20220429 perpetual check is illegal with 3 times(bug fixed).
//#define BNZ_VER "34" // 20220429 dfpn time limit stop.
//#define BNZ_VER "35" // 20220430 perpetual check bug fixed(again).
#define BNZ_VER "36" // 20220626 pawn ,rook, bishop are always promoted. discovered attack moves have 30% of best policy. safe LCB, kldgain 0.000005.
//#define BNZ_VER "36" // 20220626 pawn ,rook, bishop are always promoted. discovered attack moves have 30% of best policy. safe LCB, kldgain 0.000005.
#define BNZ_VER "37" // 20220626 kldgain 000000075. ave playouts is 1568/move.
#define BNZ_NAME "AobaZero"

//#define BNZ_VER "16" // 20210528 komaochi, mate3
Expand Down
6 changes: 3 additions & 3 deletions src/usi-engine/bona/ysszero.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -2651,9 +2651,9 @@ bool isKLDGainSmall(tree_t * restrict ptree, int sideToMove) {

double min_kld;
if ( ptree->nrep < 4 ) {
min_kld = MinimumKLDGainPerNode*2; // 初手から4手目までは深く読まない
} else if ( phg->games_sum < 500 ) {
min_kld = 0.000001; // 少ないノード数では厳しい条件の方が強い。総playout数の増加もそれほどなし。
min_kld = MinimumKLDGainPerNode*6; // 初手から4手目までは深く読まない
// } else if ( phg->games_sum < 500 ) {
// min_kld = 0.000001; // 少ないノード数では厳しい条件の方が強い。総playout数の増加もそれほどなし。
} else {
min_kld = MinimumKLDGainPerNode;
}
Expand Down

0 comments on commit 9b961e3

Please sign in to comment.