Commit Graph

1153 Commits

Author SHA1 Message Date
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 327f3fb28d 新建游戏时的保存棋谱会在文件名记录哪方获胜 2020-05-10 00:26:39 +08:00
Calcitem 76ce98e37b nodeCompare 时只比较 rating 而不再比较 value
对战2000盘,提速3.4%, 和修改前自对弈,胜率误差0.2%以内。
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 2e10e9d380 解决开 BEST_MOVE_ENABLE 宏后编译不通过的问题
BEST_MOVE_ENABLE 宏相关代码尚未完善。
2020-05-10 00:26:39 +08:00
Calcitem e3e7c11f26 在关键路径上去除不必要的变量初始化
自对弈4000盘,提升速度8%左右。
2020-05-10 00:26:39 +08:00
Calcitem 9d715fc6a0 ui: 界面上显示总盘数 2020-05-10 00:26:39 +08:00
Calcitem f830f8bb8b 修改分数记录文件的文件名格式为 Score-MillGame_<DATA>_<PID>.txt 2020-05-10 00:26:38 +08:00
Calcitem c315e17063 修改引擎对战的 Key 格式为 KeyN
并把程序名的 Key 调到最后。
2020-05-02 22:09:08 +08:00
Calcitem 9ef436a99d 启用 TEST_MODE 时不再自动认输 2020-05-02 22:09:08 +08:00
Calcitem 9f17cf0324 pvs: 实现主要变例搜索
对战6000盘的结果看,和未加PVS相当,可以认为对棋力无影响。
速度提升 19.5%

自对弈棋谱会变化,三次重复局面和棋。
最后一着为 (2,7)->(2,6)。
自对弈时长10s以内。
2020-05-01 21:40:59 +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 1f62f4469f prefetch: 修复关闭TT宏后编译不通过的问题 2020-04-25 09:53:12 +08:00
Calcitem e27cbb367b 关闭 SORT_CONSIDER_PRUNED 宏 2020-04-25 08:49:59 +08:00
Calcitem 5ddec91a77 走子阶段选子时没有没有必要判断候选的子是否被围
自对弈时长缩短到 11.5s 左右。
2020-04-25 01:01:15 +08:00
Calcitem e2d4b13221 prefetch: 预读取成三表
自对弈时长由 14s 多减少到小于 14s。(CPU 忙时测得)

并将每次读取的范围改为256字节。
2020-04-23 00:42:35 +08:00
Calcitem dae17148d4 prefetch: 将 prefetch() 移动到新增的头文件中 2020-04-22 01:51:36 +08:00
Calcitem 0358daa1fb prefetch: 重构 getNextMainHash() 2020-04-22 01:07:10 +08:00
Calcitem 576afd9633 prefetch: 实现了走棋阶段走棋的预取
自对弈时长由 15s 下降到 14s。
2020-04-22 00:54:07 +08:00
Calcitem 5391590d3b hash: 修复走子时起始点异或的值不正确的问题
自对弈棋谱没变,自对弈时长由 22s 下降到 15s。
2020-04-22 00:12:51 +08:00
Calcitem 0ad995e0ef prefetch: 支持开局摆子并优化吃子的预取 2020-04-21 00:34:55 +08:00
Calcitem 41bae6e6f2 prefetch: 实现不需要模拟走子的预取 (目前只实现了吃子) 并启用预取
自对弈时长由 22s 缩短到 20.5s。
2020-04-20 01:56:18 +08:00
Calcitem f5570820b4 hash: 修正吃子时 hash 误多异或一次的问题
和未修复前对战,
执黑 38% : 61% : 1%, 执黑胜率提升 14%,
执白 15% : 84% : 1%, 执白胜率提升 10%。

自对弈棋谱变化,故自对弈时长下降到 22s,以闷杀结束。

自对弈同时间的盘数比修改前,只有 82%。

自对弈胜率: 19.69% : 79.18% : 1.15%, 白方胜率进一步提升。
2020-04-20 01:13:48 +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
Calcitem 4b2a5ba5fd 清理 DEEPER_IF_ONLY_ONE_LEGAL_MOVE 的代码
已有菜单选项支持,不需要宏。
2020-04-18 08:58:52 +08:00
Calcitem 238b7f7eef depth: 白方摆棋最后一步深度由6上调到14
因为考虑到摆棋之后可能需要吃子,保证吃子深度。

修改对自对弈时长和自对弈胜率几乎没有影响。
2020-04-18 08:39:14 +08:00
Calcitem bbbf4e8c48 vcxproj: 让 Release Win32 编译通过
开启了 ASan。
2020-04-09 02:32:20 +08:00
Calcitem f8ebb08e0b sound: 将 playSound() 改为 static 2020-04-08 01:19:44 +08:00
Calcitem f8d6687c15 doc: 更新文档
增加更多中文翻译
2020-04-06 01:55:49 +08:00
Calcitem b891557eb9 doc: Add The_Study_of_the_Taiwan_Morris_games Markdown doc 2020-04-05 12:23:08 +08:00
Calcitem 9c1c071f46 depth: 白方第5步深度由14上调到16
顺带也提升下一着黑方到16.

对于以下用例:
19 23
21 20
27 11
29 13
28 -23
此时白方积极成三,走12,后续会陷入明显劣势。
故提升这步的深度,避免走12.

自对弈时长为 30s.
2020-04-05 00:20:39 +08:00
Calcitem 1406b98421 Sound: 新增腾讯AI开放平台合成的语音 (千千音乐转换为 wav)
原有语音进行替换,新增语音暂未应用。

链接:
https://ai.qq.com/product/aaitts.shtml
2020-04-04 22:14:33 +08:00
Calcitem 945ce69940 修正 buildRoot() 中 assert 位置 2020-04-04 13:59:18 +08:00
Calcitem 3c64e6468a opening: 新增开局库的菜单项但暂无相关处理逻辑 2020-04-03 00:09:41 +08:00
Calcitem c8b1fee7a5 ext: 深度延伸默认启用并且改为做成菜单选项 2020-04-02 23:53:06 +08:00
Calcitem 91aea3c003 Depth: 将白方前2着深度也7/9下调到2/4
调整后自对弈26714盘结果:
7128 : 18849 : 737
26.68% : 70.56% : 2.76%

即白方胜率上升15%。

但如何和黑方第2/3着深度依然是7/9对战,胜率相当。
可以认为,假设白方先下调深度,胜率大幅上升。
此时黑方如果也下调深度,也没有帮助。
2020-03-29 08:56:41 +08:00
Calcitem c0f4423535 depth: 将黑方第2/3着的深度由7/9下调到2/4
自对弈时长由8秒增加到30秒,因为没有很早被闷杀。

黑对白自对弈13000盘,胜率为 42%:55%:3%
即黑方胜率上升约3%。
2020-03-29 01:18:03 +08:00
Calcitem 0dbce7591c depth: placingDepthTable 修改为黑白每回合单独控制深度 2020-03-27 01:04:59 +08:00
Calcitem 95c2e0f9b8 horizon: 水平线效应支持仅一步可走时延伸一层的机制
暂不开启。若开启:

无论是执黑还是执白,相对原来都提升5%胜率。

执黑 6291 盘
3253 44.61% *
3799 52.10%
 239  3.27%

执白 8103 盘
2674 33.00%
5152 63.58% *
 277  3.41%

自对弈 3225 盘,黑白胜率和未开启时相当。
1266 39.25%
1833 56.83%
 126  3.90%
2020-03-26 01:04:22 +08:00
Calcitem dc3ca524bb build: Fix gcc build warnings 2020-03-22 23:59:26 +08:00
Calcitem b0594698ad IDS: 将迭代加深开关做到界面菜单中而不再用宏控制 2020-03-22 23:09:53 +08:00
Calcitem e5ee9ca7be board: 清理不需要的函数
也清除已注释的代码。
2020-03-22 22:38:17 +08:00
Calcitem d4d187958a board: 减少一个 isAllSurrounded() 函数即不再重载 2020-03-22 22:27:52 +08:00
Calcitem 3f299c8f2b board: 新增 locationToPlayer() 函数 2020-03-22 22:22:53 +08:00
Calcitem 907534d0c8 board: 构造和析构函数中不需给变量清零 2020-03-22 21:43:45 +08:00
Calcitem e22f189f67 ai: 如果结点有孩子就不重复生成 2020-03-21 02:38:38 +08:00