From 241156da6f35cb888253e6b8814e7b61a76b4fc7 Mon Sep 17 00:00:00 2001 From: tslil Date: Sun, 30 Aug 2026 19:46:07 +0100 Subject: TD(lambda), and a big rework NOTE: 6x6 weights are as-yet untrained On the performance side: * switch from linked-list chaining hash table to direct mapping * cache check_win by hash * persist transposition tables across plies (this was a big deal and difficult to puzzle out) * add align directives to the network floats * prepare_nn_input gained a small LUT to avoid branching (i suppose you might call this 1D embedding) * apply mtune=native for the native builds On the correctness side: * Zobrist has now includes the ply parity * the network now predicts something in [-1, 1] using tanh (approximated by polynomials) * the training object is now MSE because we're learning a value estimate * use .clangd instead of compile_commands.json On the training side: * completely forgo human-derived data set * implement td(lambda), self-play, tournaments --- include/negamax.h | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) (limited to 'include/negamax.h') diff --git a/include/negamax.h b/include/negamax.h index e31cc32..78ed448 100644 --- a/include/negamax.h +++ b/include/negamax.h @@ -1,5 +1,5 @@ /* - This file is part of ct. + This file is part of ctak. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -12,7 +12,7 @@ General Public License for more details. You should have received a copy of the GNU General Public License - along with ct. If not, see . + along with ctak. If not, see . */ #include @@ -21,7 +21,7 @@ #include #include #include -#include +#include #include // =================================================================== @@ -42,6 +42,13 @@ extern void negamax_display_progress(const uint8_t cur_depth, void negamax_init(const uint8_t new_board_size); +/* + * Override the leaf evaluation function (negamax_init picks one by + * board size). + */ +typedef float (*nn_function)(tak_state_p); +void negamax_set_evaluator(const nn_function f); + void negamax_free(void); /* -- cgit v1.3.1