Commit Graph

1153 Commits

Author SHA1 Message Date
Calcitem 2cf8228e4e AI: 将 Game tempGame 更换为 Game *tempGame 2020-01-29 13:38:17 +08:00
Calcitem 6d84c2ff59 AI: Game game 改为 Game *game 2020-01-29 10:03:09 +08:00
Calcitem 77a1e6bfa7 stack: arr 改为从堆上分配
加4级depth后,自对弈时长由 1434s 增长到 1477s,
耗时增加 3%。
2020-01-29 08:13:10 +08:00
Calcitem 0012998cb6 将 Game 类中的 position 改为堆上分配
depth 增加 4,测试结果:
修改前:1429s,修改后: 1434s
耗时增加 0.35%。
2020-01-29 08:12:51 +08:00
Calcitem 1bb489d5f0 about: 修正URL并将程序名改为直棋 2020-01-25 09:48:23 +08:00
Calcitem f2e4f00a5a ai: tt: 完全去除 bestMove 相关参数
内存占用由 409M 缩小到 285M。
自对弈时长几乎无变化。
2020-01-25 09:41:48 +08:00
Calcitem 9e206cf972 ai: addNode中去除判断move和bestMove相等则结点rating值大增的逻辑
本意是想当这个结点的走法和最佳走法相同时则排在前面,实测和不加这个机制的
程序各自执黑对战9000盘左右,胜率差距在0.25%,可以认为无差异。

为了后续简化 addNode 函数的需要,故去除。
2020-01-22 00:59:55 +08:00
Calcitem 15db0c4ad1 movegen: refactor: MoveList::generate 的 node 参数重命名为 parent 2020-01-07 23:19:19 +08:00
Calcitem 182a3441d3 ai: refactor: 减少 addNode() 中的嵌套层级 2020-01-05 00:24:34 +08:00
Calcitem 96faa13dcd ai: Node 类中增加 hasChildren() 以及 moves(暂未使用) 2020-01-04 23:56:13 +08:00
Calcitem c714d0f6b9 ai: refactor: 将 Node 由结构体改为类并从 AIAlgorithm 类中提取出到外部 2020-01-04 23:24:14 +08:00
Calcitem bdf1846bde ai: refactor: 新增 stashPosition() 函数 2020-01-04 22:43:05 +08:00
Calcitem 5bdc5dff65 endgame: 重新开局时如果下过的总盘数为0或者不是256的倍数就不记录到文件
不符合这个条件,就在程序退出时才记录;
之前是 TEST_MODE 宏开启才规定符合256的倍数就不记录,现在是不开启也是如此。
2019-12-23 00:28:11 +08:00
Calcitem 4504801dc6 endgame: 若开启 ENDGAME_LEARNING_FORCE 宏,则不需要勾选菜单,就能生效残局库功能; 2019-12-23 00:26:02 +08:00
Calcitem fd19649281 endgame: 实现了多个(暂定12个)残局库文件合并的代码 2019-12-22 01:01:51 +08:00
Calcitem ca6189c4fe hash: 修复 stat() 统计哈希表项个数多除以8的问题 2019-12-22 01:00:49 +08:00
Calcitem cbad48290d endgame: 记录到残局库时打印更详细的信息包括地址偏移和必然胜负的一方是谁 2019-12-21 22:34:28 +08:00
Calcitem 1ae1c9b584 endgame: endgame_t 由8位长度改为32位因对缩小残局库文件体积无帮助
为调试方便,修改长度。
2019-12-21 22:33:11 +08:00
Calcitem 75907bd77a hashmap: 从文件加载到哈希表后打印哈希表已占条目数和总条目数 2019-12-21 14:20:37 +08:00
Calcitem d43a49012d endgame: test: Test模式下每256盘才将残局库保存到文件一次 2019-12-21 09:06:50 +08:00
Calcitem 3b6dcf6b96 game 类增加 nPlayed 成员变量用于统计总盘数 2019-12-21 02:21:00 +08:00
Calcitem afcba4b5bc endgame: 菜单中勾选残局自学习时载入现有的残局库
之前是 Game 类初始化时载入,如果菜单没勾选,就不会载入,每次都
存新的内容,产生了覆盖。现解决之。
2019-12-21 01:36:06 +08:00
Calcitem 4787c97237 endgame: 解决开 ENDGAME_LEARNING 宏后因 options 未改名而编译错误的问题 2019-12-20 22:07:57 +08:00
Calcitem 6de21f0a60 depth: 摆棋阶段下调第2着的深度由10变为9
之前通过提交 c7fbc4b1bc
上调第2着的深度由9变为10, 以当黑方走形如21->29时白方
不会连续走两次星点造成被动.

但深度为9时,胜率高于深度为10. 具体如下:

修改后执黑,修改前执白
4229 2886 322
56.86% 38.80% 4.32%

修改前执白,修改后执黑
2831 4150 250
39.15% 57.39% 3.45%

故回顾此项修改,重新调整回9.
2019-12-19 00:50:03 +08:00
Calcitem a067ccf0fd mcts: 补充 cpp 文件
启用 UCT_DEMO 宏时可以运行一个四子棋程序。
只是添加四子棋 demo, 暂未和原有 AI 结合。
2019-12-15 23:58:19 +08:00
Calcitem a7fad6a693 点击新建游戏按钮时如果双方总共已经下12步以上则算负
原来是进入走棋阶段就算负,现在调整为摆棋阶段12步以上就算负
2019-12-15 12:53:42 +08:00
Calcitem d5588e0ed3 AI: Add mcts.h
来源:
2bebd4320a/mcts.h

只新增文件,暂未应用
2019-12-14 22:27:18 +08:00
Calcitem 51e723fc4e refactor: 新建 getAppFileName() 函数并使用 2019-12-14 20:12:12 +08:00
Calcitem 533c3e2d49 新增 TEST_MODE 宏
开启时,启动后进入对引擎对战友好的默认配置
2019-12-14 01:48:07 +08:00
Calcitem fb8c91eed9 UI: 标题栏显示程序文件名(含路径)和 PID 2019-12-13 00:36:22 +08:00
Calcitem 670fdbcd39 Test: 增加共享内存的 key 到16个 2019-12-12 23:41:25 +08:00
Calcitem c594cd908c 每次新建游戏时也保存得分和胜率到文件 2019-12-11 00:02:11 +08:00
Calcitem 08815c06d1 test: 共享内存增加1个 key: MillGame-Key-2 2019-12-10 23:06:12 +08:00
Calcitem 9e4510a589 evaluate: 将走子阶段 Need Remove 的分值由6下调到5即和摆子阶段分值一致
黑方比白方多的胜率从 21.26% 扩大到 28.93%,扩大了  7.67%;
白方比黑方少的胜率从 21.26% 缩小到  6.63%,缩小了 14.63%。

改进后和改进前对战:53.85% 比 42.70% 多 11.15%

(62.71% + 44.99%) / 2 = 53.85%
(51.62% + 33.78%) / 2 = 42.70%

改进前自对弈结果:

Sum	11333
Black	6677	58.92%
White	4268	37.66%
Draw	 388	 3.42%

改进后和改进前对战:

改进后执黑,改进前执白:

Sum	6997
Black	4388	62.71% (+3.79%)
White	2364	33.78% (-3.88%)
Draw	 245	 3.50% (+0.08%)

改进前执黑,改进后执白:

Sum	6623
Black	3419	51.62% (-7.30%)
White	2980	44.99% (+7.33%)
Draw	 224	 3.38% (-0.04%)
2019-12-10 00:17:09 +08:00
Calcitem 1f8a7fa485 Add Auto change 1st move (WIP)
功能未完成
2019-12-09 02:17:14 +08:00
Calcitem 0b4366b289 UI: 界面上增加胜率显示 (万分之几) 2019-12-08 19:46:52 +08:00
Calcitem ce6d9c2f2f Revert "Board: 简化 = 重载符函数"
This reverts commit be8b1d4baa.
2019-12-08 14:42:50 +08:00
Calcitem 502fc471de Test: 增加进程对战配置窗口可用于配置共享内存的 key 2019-12-08 14:40:10 +08:00
Calcitem cc2d80660e Test: 增加引擎对战模式的选项
暂未添加图片;
选中后若双方都是AI会卡死,暂未处理。
2019-12-08 12:11:03 +08:00
Calcitem c584ed6769 自动重新开局时保存分数和胜率比值到文件中 2019-12-08 11:32:13 +08:00
Calcitem 3182eff1ad test: 新增测试模块用于本地对战
使用共享内存实现,效率比 socket 高。
打开 TEST_MODE 宏才能生效。
2019-12-08 02:28:24 +08:00
Calcitem be8b1d4baa Board: 简化 = 重载符函数
* 删除自己赋值给自己的判断
* 删除  millList 的复制,只保留 locations 的复制
2019-12-07 00:49:37 +08:00
Calcitem 23cb1f4e91 addMills() 中减少 iter 重复赋值 2019-12-06 00:19:33 +08:00
Calcitem 0498c5ebc7 ai: NODE_CHILDREN_SIZE 由 64 下调到 40
按 4 * 4 + 3 * 4 * 2 计算
2019-12-05 23:16:12 +08:00
Calcitem 4c258d5391 search: 最后记录不一定确切的哈希值时省略对 node->children[0] 是否非 null 的判断 2019-12-05 00:55:35 +08:00
Calcitem 39274bb704 refactor: search: minmax 计算部分由 if 改 switch 2019-12-05 00:47:44 +08:00
Calcitem 578070d8f4 search: 将搜索到决胜局面与搜索第0层或需要退出合在一起处理 2019-12-05 00:40:03 +08:00
Calcitem 4c007940c9 evaluate: 补充 getValue() 中的 else if 2019-12-05 00:33:53 +08:00
Calcitem 526060e812 search: 搜索到第0层或需要退出时不再根据深度调整 value
搜索到第0层,深度肯定是0.
2019-12-05 00:25:18 +08:00
Calcitem 4ce85299db refactor: probeHash() 中 if 换 switch 2019-12-05 00:17:08 +08:00