Commit Graph

99 Commits

Author SHA1 Message Date
Calcitem 00547b79e6 Add RULE_50 macro 2021-01-14 01:29:25 +08:00
Calcitem 0dd4a5e7e2 Win32: Replace strncpy by strncpy_s 2021-01-10 20:28:41 +08:00
Calcitem 04b6f10e1f Remove unsued TRAINING_MODE code 2021-01-02 14:07:11 +08:00
Calcitem 096af01919 endgame: refactor
Known Issue:
After the previous series of code refactoring,
it still cannot work normally, but it can work normally
in the early stage.
2020-12-31 12:22:48 +08:00
Calcitem 0156386239 bb: Remove Unused DISABLE_BITBOARD 2020-12-28 22:54:09 +08:00
Calcitem d78828c424 movengen: Remove unused FIRST_MOVE_STAR_PREFERRED 2020-12-28 15:27:45 +08:00
Calcitem 1508ee6c1f Support ALIGNED_LARGE_PAGES but not enable 2020-12-20 12:50:56 +08:00
Calcitem 0bcac7658d bb: Enable USE_POPCNT as default 2020-12-20 09:18:26 +08:00
Calcitem 542e3b528f bb: Implement bitboard logic
Disable as default.
2020-12-20 01:37:08 +08:00
Calcitem 892f9152cf Update copyright info 2020-12-14 01:11:43 +08:00
Calcitem 72d4807ab7 TT: Key 由 64bit 降低到 32bit
Qt 内存占用由 535MB 下降到 275MB。
之前已经将哈希特殊 bit 位降低到2bit所以冲突概率显著降低。
因此降低到32bit可行。

实测和 64bit 对战近万盘,反而领先0.7%,在误差范围内。
自对弈24000盘左右,胜率差异0.3%左右,速度提升 7.5%。

R5950x 上测试,Release 版自对弈时长为 3640ms,Debug 为 10500ms。
(均未开动画和声音)

版本升级到 v0.12.0。
2020-12-12 01:26:40 +08:00
Calcitem 43842ab362 uci: 支持 setoption name RandomMove value true/false 命令设置AI是否随机走子
去掉原先使用宏控制的方式。
2020-12-06 20:23:33 +08:00
Calcitem 6b736a6a61 search: 进一步修正三次重复局面判断的逻辑以解决判断失效的问题 2020-11-28 15:22:05 +08:00
Calcitem de26bd6681 flutter: 引擎能正常返回最佳着法
已知问题: 最佳着法校验失败,需修改校验函数。
2020-11-14 22:28:17 +08:00
Calcitem abb15582b3 Qt: QT_UI 宏控制替换为 QT_GUI_LIB 编译器预定义的宏控制 2020-11-13 23:35:51 +08:00
Calcitem a8d4fb74d9 hist: 移除未完成的 历史启发 相关代码 2020-11-01 10:45:50 +08:00
Calcitem 82c0539ec8 console: 在启用 UCI_DO_BEST_MOVE 的情况下执行完 go 局面才会变动
否则只是给 bestmove 结果,不会执行。
2020-10-25 00:54:01 +08:00
Calcitem 97cd4ec7bf config: 去除 SELF_MOVE 宏并增加若干宏
//#define DISABLE_RANDOM_MOVE
//#define UCI_AUTO_RE_GO
//#define UCI_AUTO_RESTART
#define ANALYZE_POSITION
2020-10-25 00:15:18 +08:00
Calcitem bd6396e459 build: 消除 make 编译警告 (GCC 10.2) 2020-10-24 01:34:29 +08:00
Calcitem 7594c6e31d 开启 TIME_STAT 宏 2020-10-23 00:32:57 +08:00
Calcitem 3f707ff5cd refactor: 将网络对战模块从 Thread 类移到 GameController 类
并默认启用网络对战宏。
2020-10-17 22:13:58 +08:00
Calcitem bb0c2f3a11 net: WAR: 通过 NET_FIGHT_SUPPORT 宏控制将网络对战功能禁用
因存在内存泄漏问题故暂时关闭。
2020-10-06 21:59:10 +08:00
Calcitem 7a99164111 加入 SELF_MOVE 宏相关代码
启用后一启动,再点开始按钮开始不开启随机的情况下自对弈。
2020-10-03 12:11:58 +08:00
Calcitem 051085beb9 config.h: PREFETCH_SUPPORT 宏改名为 DISABLE_PREFETCH
并反向宏控制。
2020-09-29 18:39:37 +08:00
Calcitem 63784b2995 config.h: 删除无用的 COMPARE_RATING_ONLY 宏 2020-09-29 18:36:11 +08:00
Calcitem 16d472ce43 config.h: 删除无用的 DEBUG_MODE_A 和 RANDOM_MOVE 宏 2020-09-29 18:34:16 +08:00
Calcitem 9cf8c7718a 删除残留的 ALPHABETA_AI 宏
并且把 SORT_MOVE_WITHT_HUMAN_KNOWLEDGES 改名为 SORT_MOVE_WITHOUT_HUMAN_KNOWLEDGES
并反向宏控制。
2020-09-29 18:30:57 +08:00
Calcitem 106d9f9cce MCTS: 移除完 MCTS 相关代码 2020-09-20 23:04:22 +08:00
Calcitem 7486772fe6 删除未完成的 EVALUATE_ENABLE 相关代码 2020-07-11 23:59:31 +08:00
Calcitem 8e77d68a4d 将原来的 main.c 改名为 qt/winmain.c 并增加新的 main.c 给 UCI 使用 2020-07-11 23:48:09 +08:00
Calcitem 48358b0e99 rule: refactor: 修改规则相关变量名提高可读性 2020-06-26 22:20:13 +08:00
Calcitem 900aac636a 移除默认未启用的 IDS_WINDOW 相关代码 2020-06-26 21:27:43 +08:00
Calcitem 333641845a replace key_t to hash_t to fix GCC build error 2020-05-16 02:16:00 +08:00
Calcitem b69de7f09a TT: 增加 TRANSPOSITION_TABLE_FAKE_CLEAN_NOT_EXACT_ONLY 宏但不启用
开启后,对于确切值的TT值,开始新的搜索前不会清除。
2020-05-13 00:46:36 +08:00
Calcitem 80bbec96a7 refactor: 部分变量和类型改名
启用 ring_t 和 seat_t
capture -> removePiece
choose -> selectPiece
2020-05-10 23:45:02 +08:00
Calcitem a334e7ee8d refactor: 清理代码
包括暂时删除 MCTS 大部分代码。
后续再加回来。
2020-05-10 00:35:25 +08:00
Calcitem 456613e750 pvs: 因单纯开 MTD(f) 略快故关闭 PVS 搜索
depth + 4 自对弈时长统计结果:
Alpha-Beta Only: 186.062s
PVS (win=1): 144s
PVS (win=5): 137s
MTDF (win=1): 126s
PVS + MTDF (win=5): 95s
MTDF (win=5): 93s 最快
2020-05-10 00:26:39 +08:00
Calcitem e4973ce2d9 mtdf/pvs: 启用MTD(f) 并把 PVS 和 MTD(f) 的窗口由极小窗口1调整为5
即调整为一个棋子的价值。
修改后,自对弈棋谱不变,自对弈时长由8s缩短到6s以内。
深度+4 测算,耗时缩短到原来的 69%。
2020-05-10 00:26:39 +08:00
Calcitem 02380b64bd pvs: PVS 相关代码用宏控制 2020-05-10 00:26:39 +08:00
Calcitem 335b218d85 mtdf: Support MTD(f) 2020-05-10 00:26:39 +08:00
Calcitem 36daf7bb4f depth: 白方第4步深度上调到18
顺带将 ai.ttMove 修正为 ai.nextMove()
并且多加了几个 nodeCompare 的 策略但未启用。

自对弈时长 10s 多。对比2000盘自对弈结果,速度为修改前的90%。
自对弈棋谱改变,最后一着为 (2,7)->(2,6) 三次重复局面和棋。
2020-05-10 00:26:39 +08:00
Calcitem 4013b5bb7f openingbook: 新增开局库部分代码 (未完成) 2020-05-10 00:26:39 +08:00
Calcitem 79c10960c8 hh: 实现历史启发
实测效果不明显,暂不启用
2020-05-10 00:26:39 +08:00
Calcitem 8d844cd919 BEST_MOVE_ENABLE 改为 TT_MOVE_ENABLE 并完善部分代码 (未完成)
目前在开启后,700盘自对弈显示速度为关闭时的 96.5%,
和关闭时对战600盘,胜率相差 0.8% 左右,可以认为相当。

暂未开启此宏。
2020-05-10 00:26:39 +08:00
Calcitem c1957e7bee ai: 增加空着向前裁剪部分代码 (未完成)
宏未开启。
2020-05-01 21:30:55 +08:00
Calcitem 7b566b1e71 tt: 修复和未开启置换表的对战,执黑胜率少3%,执白胜率少6%的问题
同时对于 alpha-beta 的函数传参形式进行修改:
search(depth - 1 + epsilon, alpha, beta, node->children[i]); 改为
-search(depth - 1 + epsilon, -beta, -alpha, node->children[i]); 的形式。

简化必败以及明显劣势的判断方式。只要判断 root 的值,不需要看其孩子。

并顺带:
删除 MIN_MAX_ONLY 宏相关代码;
删除 SORT_CONSIDER_PRUNED、CLEAR_PRUNED_FLAG_BEFORE_SEARCH 宏相关代码;

新的 TT 算法和修改前算法对战 6000 盘。
黑 22% : 10%, 白 86% : 74% 有 12% 的优势。
速度提升 1.5%, 可以认为无变化。

和未开TT对战1700盘,均为 11% : 83%,误差不超过1%,故可认为新TT已经不会
造成明显劣化。开TT和未开TT比,目前是4.6倍速度比。

自对弈棋谱会变化。自对弈时长 12s+, 最后一步是 -(1,8), 白方胜。
2020-05-01 21:29:41 +08:00
Calcitem e27cbb367b 关闭 SORT_CONSIDER_PRUNED 宏 2020-04-25 08:49:59 +08:00
Calcitem 41bae6e6f2 prefetch: 实现不需要模拟走子的预取 (目前只实现了吃子) 并启用预取
自对弈时长由 22s 缩短到 20.5s。
2020-04-20 01:56:18 +08:00
Calcitem 3e01a0daf1 tt: zobrist 值改为 MISC 位放在高8位并将置换表哈希改为64位
禁用了 TRANSPOSITION_TABLE_CUTDOWN,内存占用由 272MB 升到 532 MB。
在不改为64位 hash 的情况下,会改变自对弈棋谱。

自对弈时长由32s缩短到25s。
2020-04-19 11:10:20 +08:00
Calcitem e4ec6e22ee prefetch: 增加置换表的预读取特性但暂不启用
对于自对弈,因为局面模拟走下一步,入栈出栈花了7s时间,
而 prefetch 预读置换表,节5s时间,总时间还是增加2s。
故暂不启用。
2020-04-19 02:53:04 +08:00