More comment translation

including 11 files in /src
This commit is contained in:
FireFather
2020-06-29 17:31:35 +02:00
committed by nodchip
parent f5cc77bc7c
commit 8f31d74cf6
11 changed files with 293 additions and 293 deletions

View File

@@ -44,22 +44,22 @@ extern vector<string> setup_bench(const Position&, istream&);
// FEN string of the initial position, normal chess
const char* StartFEN = "rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1";
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>}<7D><><EFBFBD>h
// Command to automatically generate a game record
#if defined (EVAL_LEARN)
namespace Learner
{
// <EFBFBD><EFBFBD><EFBFBD>t<EFBFBD>ǖʂ̎<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
// Automatic generation of teacher position
void gen_sfen(Position& pos, istringstream& is);
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̊w<EFBFBD>K
// Learning from the generated game record
void learn(Position& pos, istringstream& is);
#if defined(GENSFEN2019)
// <EFBFBD>J<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̋<EFBFBD><EFBFBD>t<EFBFBD>ǖʂ̎<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>R<EFBFBD>}<7D><><EFBFBD>h
// Automatic generation command of teacher phase under development
void gen_sfen2019(Position& pos, istringstream& is);
#endif
// <EFBFBD>ǂ݋؂ƕ]<5D><><EFBFBD>l<EFBFBD>̃y<CC83>A<EFBFBD>BLearner::search(),Learner::qsearch()<EFBFBD><EFBFBD><EFBFBD>Ԃ<EFBFBD><EFBFBD>B
// A pair of reader and evaluation value. Returned by Learner::search(),Learner::qsearch().
typedef std::pair<Value, std::vector<Move> > ValueAndPV;
ValueAndPV qsearch(Position& pos);
@@ -71,7 +71,7 @@ namespace Learner
#if defined(EVAL_NNUE) && defined(ENABLE_TEST_CMD)
void test_cmd(Position& pos, istringstream& is)
{
// <EFBFBD>T<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>m<EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>̂ŏ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
// Initialize as it may be searched.
is_ready();
std::string param;
@@ -221,21 +221,21 @@ namespace {
<< "\nNodes/second : " << 1000 * nodes / elapsed << endl;
}
// check sum<75><6D><EFBFBD>v<EFBFBD>Z<EFBFBD><5A><EFBFBD><EFBFBD><EFBFBD>Ƃ<EFBFBD><C682>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ۑ<EFBFBD><DB91><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>Ă<EFBFBD><C482>ƂŎ<C682><C58E><EFBFBD><EFBFBD>ȍ~<7E>A<EFBFBD><41><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>̃`<60>F<EFBFBD>b<EFBFBD>N<EFBFBD><4E><EFBFBD>s<EFBFBD>Ȃ<EFBFBD><C882>B
// When you calculate check sum, save it and check the consistency later.
uint64_t eval_sum;
} // namespace
// is_ready_cmd()<EFBFBD><EFBFBD><EFBFBD>O<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ăяo<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɂ<EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD>B(bench<63>R<EFBFBD>}<7D><><EFBFBD>h<EFBFBD>Ȃǂ<C882><C782><EFBFBD><EFBFBD>Ăяo<D18F><6F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>)
// <EFBFBD>ǖʂ͏<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>̂Œ<EFBFBD><EFBFBD>ӁB
// Make is_ready_cmd() callable from outside. (Because I want to call it from the bench command etc.)
// Note that the phase is not initialized.
void is_ready(bool skipCorruptCheck)
{
#if defined(EVAL_NNUE)
// "isready"<22><><EFBFBD>󂯎<EFBFBD><F382AF8E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƁA"readyok"<22><><EFBFBD>Ԃ<EFBFBD><D482>܂<EFBFBD>5<EFBFBD>b<EFBFBD><62><EFBFBD>Ƃɉ<C682><C989>s<EFBFBD>𑗂<EFBFBD><F0919782><EFBFBD>ɏC<C98F><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B(keep alive<76>I<EFBFBD>ȏ<EFBFBD><C88F><EFBFBD>)
// USI2.0<EFBFBD>̎d<EFBFBD>l<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
// -"isready"<EFBFBD>̂<EFBFBD><EFBFBD>Ƃ<EFBFBD>time out<75><74><EFBFBD>Ԃ́A30<33>b<EFBFBD><62><EFBFBD>x<EFBFBD>Ƃ<EFBFBD><C682><EFBFBD><EFBFBD>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD>𒴂<EFBFBD><F092B482>āA<C481>]<5D><><EFBFBD>֐<EFBFBD><D690>̏<EFBFBD><CC8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ahash<73>e<EFBFBD>[<5B>u<EFBFBD><75><EFBFBD>̊m<CC8A>ۂ<EFBFBD><DB82><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A
// <20>v<EFBFBD>l<EFBFBD>G<EFBFBD><47><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>I<EFBFBD>ɉ<EFBFBD><C989><EFBFBD>̃<EFBFBD><CC83>b<EFBFBD>Z<EFBFBD>[<5B>W(<28><><EFBFBD>s<EFBFBD><73>)<29>𑗂<EFBFBD><F0919782>ׂ<EFBFBD><D782>ł<EFBFBD><C582><EFBFBD><EFBFBD>B
// -ShogiGUI<EFBFBD>ł͂<EFBFBD><EFBFBD>łɂ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂ŁAMyShogi<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɒǐ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
// -<2D>܂<EFBFBD><DC82>A<EFBFBD><41><EFBFBD>˂<EFBFBD><CB82><EFBFBD>̃G<CC83><47><EFBFBD>W<EFBFBD><57><EFBFBD><EFBFBD><EFBFBD>́A"isready"<22><><EFBFBD>󂯎<EFBFBD><F382AF8E><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ƁA"readyok"<22><><EFBFBD>Ԃ<EFBFBD><D482>܂<EFBFBD>5<EFBFBD>b<EFBFBD><62><EFBFBD>Ƃɉ<C682><C989>s<EFBFBD>𑗂<EFBFBD><F0919782><EFBFBD>ɏC<C98F><43><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
// After receiving "isready", modify so that a line feed is sent every 5 seconds until "readyok" is returned. (keep alive processing)
// From USI 2.0 specifications.
// -The time out time after "is ready" is about 30 seconds. Beyond this, if you want to initialize the evaluation function and secure the hash table,
// You should send some kind of message (breakable) from the thinking engine side.
// -Shogi GUI already does so, so MyShogi will follow along.
//-Also, the engine side of Yaneura King modifies it so that after "isready" is received, a line feed is sent every 5 seconds until "readyok" is returned.
auto ended = false;
auto th = std::thread([&ended] {
@@ -243,25 +243,25 @@ void is_ready(bool skipCorruptCheck)
while (!ended)
{
std::this_thread::sleep_for(std::chrono::milliseconds(100));
if (++count >= 50 /* 5<EFBFBD>b */)
if (++count >= 50 /* 5 seconds */)
{
count = 0;
sync_cout << sync_endl; // <EFBFBD><EFBFBD><EFBFBD>s<EFBFBD>𑗐M<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
sync_cout << sync_endl; // Send a line break.
}
}
});
// <EFBFBD>]<5D><><EFBFBD>֐<EFBFBD><D690>̓ǂݍ<C782><DD8D>݂Ȃǎ<C882><C78E>Ԃ̂<D482><CC82><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ł<EFBFBD><C582><EFBFBD><EB82A4><EFBFBD><EFBFBD><EFBFBD>͂<EFBFBD><CD82>̃^<5E>C<EFBFBD>~<7E><><EFBFBD>O<EFBFBD>ōs<C58D>Ȃ<EFBFBD><C882>B
// <EFBFBD>N<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ɏ<EFBFBD><EFBFBD>Ԃ̂<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD>܂<EFBFBD><EFBFBD>Ə<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>C<EFBFBD><43><EFBFBD>A<EFBFBD>E<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>āA<C481>v<EFBFBD>l<EFBFBD>G<EFBFBD><47><EFBFBD>W<EFBFBD><57><EFBFBD>Ƃ<EFBFBD><C682>Ă̔F<CC94><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>^<5E>C<EFBFBD>A<EFBFBD><41><EFBFBD>Ă<EFBFBD><C482>܂<EFBFBD><DC82>B
// Perform processing that may take time, such as reading the evaluation function, at this timing.
// If you do a time-consuming process at startup, Shogi place will make a timeout judgment and retire the recognition as a thinking engine.
if (!UCI::load_eval_finished)
{
// <EFBFBD>]<5D><><EFBFBD>֐<EFBFBD><D690>̓ǂݍ<C782><DD8D><EFBFBD>
// Read evaluation function
Eval::load_eval();
// <EFBFBD>`<60>F<EFBFBD>b<EFBFBD>N<EFBFBD>T<EFBFBD><54><EFBFBD>̌v<CC8C>Z<EFBFBD>ƕۑ<C695>(<28><><EFBFBD>̌<EFBFBD><CC8C>̃<EFBFBD><CC83><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD><6A><EFBFBD>̃`<60>F<EFBFBD>b<EFBFBD>N<EFBFBD>̂<EFBFBD><CC82><EFBFBD>)
// Calculate and save checksum (to check for subsequent memory corruption)
eval_sum = Eval::calc_check_sum();
// <EFBFBD>\<5C>t<EFBFBD>g<EFBFBD><67><EFBFBD>̕\<5C><>
// display soft name
Eval::print_softname(eval_sum);
UCI::load_eval_finished = true;
@@ -269,14 +269,14 @@ void is_ready(bool skipCorruptCheck)
}
else
{
// <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>j<EFBFBD>󂳂<EFBFBD><EFBFBD>Ă<EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>𒲂ׂ邽<EFBFBD>߂Ƀ`<60>F<EFBFBD>b<EFBFBD>N<EFBFBD>T<EFBFBD><54><EFBFBD>𖈉񒲂ׂ<F192B282><D782>B
// <EFBFBD><EFBFBD><EFBFBD>Ԃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><EFBFBD>C<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>邪.. 0.1<EFBFBD>b<EFBFBD><EFBFBD><EFBFBD><EFBFBD>̂<EFBFBD><EFBFBD>ƂȂ̂ŗǂ<EFBFBD><EFBFBD>Ƃ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
// Check the checksum every time to see if the memory has been corrupted.
// It seems that the time is a little wasteful, but it is good because it is about 0.1 seconds.
if (!skipCorruptCheck && eval_sum != Eval::calc_check_sum())
sync_cout << "Error! : EVAL memory is corrupted" << sync_endl;
}
// isready<EFBFBD>ɑ΂<EFBFBD><EFBFBD>Ă<EFBFBD>readyok<EFBFBD><EFBFBD><EFBFBD>Ԃ<EFBFBD><EFBFBD>܂Ŏ<EFBFBD><EFBFBD>̃R<EFBFBD>}<7D><><EFBFBD>h<EFBFBD><68><EFBFBD><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD>Ƃ͖񑩂<CD96><F191A982><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>̂<EFBFBD>
// <EFBFBD><EFBFBD><EFBFBD>̃^<5E>C<EFBFBD>~<7E><><EFBFBD>O<EFBFBD>Ŋe<C58A><65><EFBFBD>ϐ<EFBFBD><CF90>̏<EFBFBD><CC8F><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ă<EFBFBD><C482><EFBFBD><EFBFBD>B
// For isready, it is promised that the next command will not come until it returns readyok.
// Initialize various variables at this timing.
TT.resize(Options["Hash"]);
Search::clear();
@@ -284,7 +284,7 @@ void is_ready(bool skipCorruptCheck)
Threads.stop = false;
// keep alive<76>𑗐M<F0919790><4D><EFBFBD><EFBFBD>߂ɐ<DF82><C990><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>X<EFBFBD><58><EFBFBD>b<EFBFBD>h<EFBFBD><68><EFBFBD>I<EFBFBD><49><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>A<EFBFBD>ҋ@<40><><EFBFBD><EFBFBD><EFBFBD>B
// Terminate the thread created to send keep alive and wait.
ended = true;
th.join();
#endif // defined(EVAL_NNUE)
@@ -294,7 +294,7 @@ void is_ready(bool skipCorruptCheck)
// --------------------
// <EFBFBD>e<EFBFBD>X<EFBFBD>g<EFBFBD>p<EFBFBD><EFBFBD>qsearch(),search()<EFBFBD>𒼐ڌĂ<EFBFBD>
// Call qsearch(),search() directly for testing
// --------------------
#if defined(EVAL_LEARN)
@@ -391,10 +391,10 @@ void UCI::loop(int argc, char* argv[]) {
else if (token == "learn") Learner::learn(pos, is);
#if defined (GENSFEN2019)
// <20>J<EFBFBD><4A><EFBFBD><EFBFBD><EFBFBD>̋<EFBFBD><CC8B>t<EFBFBD>ǖʐ<C796><CA90><EFBFBD><EFBFBD>R<EFBFBD>}<7D><><EFBFBD>h
// Command to generate teacher phase under development
else if (token == "gensfen2019") Learner::gen_sfen2019(pos, is);
#endif
// <EFBFBD>e<EFBFBD>X<EFBFBD>g<EFBFBD>p<EFBFBD><EFBFBD>qsearch(),search()<EFBFBD>𒼐ڌĂԃR<EFBFBD>}<7D><><EFBFBD>h
// Command to call qsearch(),search() directly for testing
else if (token == "qsearch") qsearch_cmd(pos);
else if (token == "search") search_cmd(pos, is);
@@ -405,7 +405,7 @@ void UCI::loop(int argc, char* argv[]) {
#endif
#if defined(EVAL_NNUE) && defined(ENABLE_TEST_CMD)
// <EFBFBD>e<EFBFBD>X<EFBFBD>g<EFBFBD>R<EFBFBD>}<7D><><EFBFBD>h
// test command
else if (token == "test") test_cmd(pos, is);
#endif
else