Merged the training data generator and the machine learning logic from YaneuraOu.

This commit is contained in:
Hisayori Noda
2019-06-18 08:48:05 +09:00
parent 87445881ec
commit bcd6985871
37 changed files with 6306 additions and 139 deletions

View File

@@ -80,6 +80,9 @@ typedef std::unique_ptr<std::deque<StateInfo>> StateListPtr;
/// traversing the search tree.
class Thread;
// pack<63><6B><EFBFBD>ꂽsfen
struct PackedSfen { uint8_t data[32]; };
class Position {
public:
static void init();
@@ -187,6 +190,29 @@ public:
const Eval::EvalList* eval_list() const { return &evalList; }
#endif // defined(EVAL_NNUE)
#if defined(EVAL_LEARN)
// <20><><EFBFBD>ǖʂŎw<C58E><77><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD><EFBFBD><EFBFBD>e<EFBFBD>X<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>B<EFBFBD>w<EFBFBD><77><EFBFBD><EFBFBD><E890B6><EFBFBD><EFBFBD><EFBFBD>[<5B>`<60><><EFBFBD><EFBFBD><EFBFBD>p<EFBFBD><70><EFBFBD><EFBFBD><EFBFBD>̂ő<CC82><C591><EFBFBD><EFBFBD>Ȃ<EFBFBD><C882>B<EFBFBD>T<EFBFBD><54><EFBFBD><EFBFBD><EFBFBD>ɂ͎g<CD8E><67><EFBFBD>Ȃ<EFBFBD><C882><EFBFBD><EFBFBD>ƁB
bool is_mated() const;
// -- sfen<65><6E><EFBFBD>w<EFBFBD><77><EFBFBD>p
// pack<63><6B><EFBFBD>ꂽsfen<65>𓾂<EFBFBD><F093BE82>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD>Ɏw<C98E><EFBFBD><E882B5><EFBFBD>o<EFBFBD>b<EFBFBD>t<EFBFBD>@<40>ɕԂ<C995><D482>B
// gamePly<6C><79>pack<63>Ɋ܂߂Ȃ<DF82><C882>B
void sfen_pack(PackedSfen& sfen);
// <20><>sfen<65><6E><EFBFBD>o<EFBFBD>R<EFBFBD><52><EFBFBD><EFBFBD><EFBFBD>ƒx<C692><78><EFBFBD>̂Œ<CC82><C592><EFBFBD>pack<63><6B><EFBFBD>ꂽsfen<65><6E><EFBFBD>Z<EFBFBD>b<EFBFBD>g<EFBFBD><67><EFBFBD><EFBFBD><EFBFBD>֐<EFBFBD><D690><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>B
// pos.set(sfen_unpack(data),si,th); <20>Ɠ<EFBFBD><C693><EFBFBD><EFBFBD>B
// <20>n<EFBFBD><6E><EFBFBD><EFBFBD>ǖʂɖ<CA82><C996><EFBFBD><E882AA><EFBFBD><EFBFBD><EFBFBD>āA<C481>G<EFBFBD><47><EFBFBD>[<5B>̂Ƃ<CC82><C682>͔<EFBFBD>0<EFBFBD><30><EFBFBD>Ԃ<EFBFBD><D482>B
// PackedSfen<65><6E>gamePly<6C>͊܂܂Ȃ<DC82><C882>̂ŕ<CC82><C595><EFBFBD><EFBFBD>ł<EFBFBD><C582>Ȃ<EFBFBD><C882>B<EFBFBD><42><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݒ肵<DD92><E882B5><EFBFBD><EFBFBD><EFBFBD>̂ł<CC82><C582><EFBFBD><EFBFBD>Έ<EFBFBD><CE88><EFBFBD><EFBFBD>Ŏw<C58E><EFBFBD><EFBFBD>ƁB
int set_from_packed_sfen(const PackedSfen& sfen, StateInfo* si, Thread* th, bool mirror = false);
// <20>ՖʂƎ<CA82><C68E><EFBFBD><EFBFBD>A<EFBFBD><41><EFBFBD>Ԃ<EFBFBD><D482>^<5E><><EFBFBD>āA<C481><41><EFBFBD><EFBFBD>sfen<65><6E><EFBFBD>Ԃ<EFBFBD><D482>B
//static std::string sfen_from_rawdata(Piece board[81], Hand hands[2], Color turn, int gamePly);
// c<><63><EFBFBD>̋ʂ̈ʒu<CA92><75><EFBFBD>Ԃ<EFBFBD><D482>B
Square king_square(Color c) const { return pieceList[make_piece(c, KING)][0]; }
#endif // EVAL_LEARN
private:
// Initialization helpers (used while setting up a position)
void set_castling_right(Color c, Square rfrom);