Commit Graph

134 Commits

Author SHA1 Message Date
Calcitem 3182eff1ad test: 新增测试模块用于本地对战
使用共享内存实现,效率比 socket 高。
打开 TEST_MODE 宏才能生效。
2019-12-08 02:28:24 +08:00
Calcitem a3f9059528 timestat: 增加 CYCLE_STAT 宏但仅为示例用故不启用 2019-11-10 12:36:31 +08:00
Calcitem 22ffd83b19 去除 EMIT_COMMAND_DELAY
QTimer::singleShot(EMIT_COMMAND_DELAY, this, &AiThread::emitCommand);
改为:
emitCommand();

顺带将 i/id 重命名为 sideId/playerId.
2019-11-03 20:23:57 +08:00
Calcitem d6307b5c61 depth: 如果深度小于1则设置为1
为了调试需要, 新增 DEPTH_ADJUST 宏用于深度调整.
2019-11-03 17:43:27 +08:00
Calcitem e90266d3e1 license: Change Licence to GPL 3.0
由 LGPL 协议切换为 GPL 协议.
2019-11-03 13:00:45 +08:00
Calcitem 5e8fc4ddea endgame: 关闭 ENDGAME_LEARNING 功能
内存占用从 570MB 下降到  433MB.
因为 movingDiffDepthTable 的切换, 自对弈时长由 18s 缩短到 13s.
2019-10-29 00:39:08 +08:00
Calcitem a453c7b63e trainer: 初步实现能走出第1步就停止了 2019-10-27 01:03:10 +08:00
Calcitem 25fa3e8dc7 rule: 新增 DEFAULT_RULE_NUMBER 宏 2019-10-26 19:03:18 +08:00
Calcitem 5450ad9de9 refactor: 替换 MILL_FIRST 宏名为 SORT_MOVE_WITH_HUMAN_KNOWLEDGES 2019-10-23 00:22:15 +08:00
Calcitem 091a208fbe AI: 关闭 IDS 并调整 rating 计算以提升性能
* 关闭IDS, 因为通过判断是否成三来排定走子顺序已经很有效;
* 仅在吃子时才统计各个点周围子类型分布;
* 仅在需要检测落子点是否能阻止对方成三时才统计点位于对手几个三连中;
* 去掉摆子阶段尽量往禁点旁边落子的策略;
* 不再判断吃子点处于我方的三连中, 因为可能正好也处于对方的三连中.

自对弈时长 2s, 但走棋阶段没多久就闷杀.
若开 IDS 则是 20s.
2019-10-21 00:09:51 +08:00
Calcitem b229c07141 depth: 将加深的深度值用 HARD_LEVEL_DEPTH 宏控制并禁用 2019-10-20 11:27:39 +08:00
Calcitem 1789c25dac ids: 因为杀棋探查异常故禁用窗口 2019-10-20 03:14:20 +08:00
Calcitem c82aab9a88 AI: 能成三就优先成三
能成三就优先成三, 除非置换表中记录了最优着法.
完成此功能, 相关修改用 MILL_FIRST 控制, 启用此宏.

自对弈时长缩短一半.
2019-10-18 01:12:34 +08:00
Calcitem 618b294280 ids: 对最佳走法所在结点价值加一 (默认关闭)
性能下降明显
2019-10-16 00:52:09 +08:00
Calcitem a729fedb04 ids: 打印每次 IDS 迭代的各着法的分值 2019-10-16 00:52:09 +08:00
Calcitem faab2b59aa ai: search: 解决因 IDS 导致的有时根节点所有子结点都剪枝了的问题
默认不启用, 因为自对弈时长会由44s增长到84s.
2019-10-16 00:52:09 +08:00
Calcitem 29e1297531 [gnuc] A little bit Performance Enhancement
可能对cache命中率稍有提升 (MISS: 0.03%->0.01%)
实测无明显变化.
2019-10-11 22:11:13 +08:00
Calcitem 877f87ec19 timestat: 增加 TIME_STAT 宏并默认关闭
因 now() 函数较耗时.
关闭后自对弈时长恢复到 44-45s 左右.
2019-10-07 16:54:39 +08:00
Calcitem eef8e13c23 mempool: 去掉 MEMORY_POOL 宏
MEMORY_POOL 打开后无法通过编译, mempool 功能已完成, 故去除
MEMORY_POOL 宏.
2019-10-06 01:10:34 +08:00
Calcitem 31323da82e mempool: 更换为不需要 new 的实现
原有的内存池实现还是会调用 new, 性能提升不显著, 故切换到不需要 new
的实现.

参考:
https://github.com/eliben/code-for-blog/blob/master/2008/memmgr/main.c
https://gitrepos.estec.esa.int/taste/panda/blob/master/etc/libbambu/memmgr.c

自对弈时长由54s缩短到52s.

临时使用转换为 vector 再调用 std:sort 进行排序的方式, 后续切换到
自己的排序函数, 应会明显提升性能.
2019-10-05 04:04:06 +08:00
Calcitem 8e54962233 ai: tt: 使用更新年龄机制来取代每次全部清空置换表
memset 大块内存效率较低, 故在哈希表中增加年龄纪录,
当年龄不一致时即认为哈希表项过时, 就更新它.
如果年龄一致则从中读取数据.
年龄增长到255时才清空一次置换表, 这样自对弈一盘棋只需要清2次.

修改使用 TRANSPOSITION_TABLE_FAKE_CLEAN 宏控制.

代价是会增加哈希表的体积, 空间换时间.
自对弈时长由 63s 缩短到 54s, 提速 15%.
2019-10-02 19:23:52 +08:00
Calcitem 2918b9a23d stack: 增加 Stack 类取代 std::stack 并且在拷贝时使用 memcpy 提高效率
自对弈时长由66秒缩短到63秒, 提速 4.5%.
2019-10-02 11:36:17 +08:00
CalciteM Team c9ec23603a endgame: 以残局库代码取代开局库代码
* 目前残局库依赖于自动认输开启.
2019-09-17 23:13:25 +08:00
CalciteM Team 3e47a5963b depth: 去除深度相关的编译宏 2019-09-15 21:57:45 +08:00
CalciteM Team 874dac69f1 perf: 哈希表不加锁去掉线程安全机制
自对弈性能测试:
加锁:   2"93 = 213s
不加锁: 2"33 = 153s
提速 28%.
2019-09-14 23:51:52 +08:00
CalciteM 3a043b469c refactor: 将部分哈希相关重命名为置换表相关名称 2019-09-09 00:29:50 +08:00
CalciteM 3d1022f292 refactor: 清理成三表和着法表等无用的逻辑 2019-09-08 23:58:26 +08:00
CalciteM fa531d5926 refactor: Rename chess to game 2019-09-08 23:40:22 +08:00
CalciteM dc90db249c refactor: 创建 board 和 rule 模块
* 将部分逻辑转移到这两个 class;
* 创建了 types.h 将部分类型转移到此文件;
* 将 millList 由 list 改为 vector, 否则容易出现段错误.
2019-09-08 23:22:28 +08:00
CalciteM a1125087bc 将 QDebug 替换为自己定义的 loggerDebug 函数 2019-09-07 19:55:04 +08:00
CalciteM Team 07e1c12f3a 增加 AI 随机走子的选项
去除 MOVE_PRIORITY_TABLE_SUPPORT 宏, 固定走这个宏的逻辑,
至于是否打乱着法则视 randomMove 而定.
2019-09-07 14:46:42 +08:00
CalciteM Team d8f9f375ab 支持设置棋局结束后自动重新开始 2019-09-07 01:24:50 +08:00
CalciteM Team 98229ac301 实现 CONST_MILL_TABLE 即成三表用常量数组表示 2019-09-05 00:41:59 +08:00
CalciteM Team 9c32d9417c Remove NineChess folder 2019-09-04 22:36:53 +08:00