Commit Graph

522 Commits

Author SHA1 Message Date
Calcitem 5606c6e579 tt: 解决开启 TRANSPOSITION_TABLE_DEBUG 后编译失败问题 2019-10-07 23:56:16 +08:00
Calcitem f7fc03dbd3 rule: 如果规则没有禁点就跳过清除所有禁点的逻辑 2019-10-07 23:56:16 +08:00
Calcitem 997ef0b979 Refactor: 0x0F 替换为 PIECE_FORBIDDEN 2019-10-07 23:56:16 +08:00
Calcitem ac83c89726 rule: 新增莫里斯十二子棋规则 2019-10-07 21:03:45 +08:00
Calcitem 6bd6f20d2d stack: 多加几个函数备用 2019-10-07 20:39:22 +08:00
Calcitem 409cd53517 tree: 解决开启 DEBUG_AB_TREE 宏后的编译和段错误问题 2019-10-07 19:02:34 +08:00
Calcitem 727063d6b0 mempool: alloc 时不调用指定 align 的函数
修改后自对弈时长比较稳定在 43s.
2019-10-07 17:03:51 +08:00
Calcitem 877f87ec19 timestat: 增加 TIME_STAT 宏并默认关闭
因 now() 函数较耗时.
关闭后自对弈时长恢复到 44-45s 左右.
2019-10-07 16:54:39 +08:00
Calcitem aaa78f54a9 ids: 更改 IDS 调试信息打印形式 2019-10-07 16:54:29 +08:00
Calcitem 0b6e98b15d sort: compare: 优化 compare 条件判断顺序并精简代码
目前自对弈中, 两个数左大于右或右大于左的概率之和小于两者相等, 3:4
的关系, 并且两者子结点是否剪枝, 不一致的情况明显小于一致的情况, 约
1:10的关系, 如果随机走子概率有所变化但总体结论不变. 故通过根据比例
计算总的判断次数, 进行优化.

自对弈加2层搜索实验, 搜索耗时由 102.511s 缩减到 91.947s, 提速 11.5%.
2019-10-07 12:46:55 +08:00
Calcitem a526dbff2c sort: 棋局结束后打印排序算法总耗时
顺带将 AiThread 类实例由 ai 改名为 aiThread
2019-10-07 11:36:11 +08:00
Calcitem 39d0e34f9f depth: 当 VC 下编译为 Debug 时不再减少4层搜索深度 2019-10-07 01:31:35 +08:00
Calcitem 16652ac3b8 fly: 修复被围时是否可飞子因传参类型不对引起的判断错误问题
仅从代码上看到问题,暂未验证.
顺带加上一个注释提醒.
2019-10-06 11:19:04 +08:00
Calcitem c8cdfa8536 sort: 删除一些未使用的比较函数以及比较运算符重载 2019-10-06 01:19:57 +08:00
Calcitem eef8e13c23 mempool: 去掉 MEMORY_POOL 宏
MEMORY_POOL 打开后无法通过编译, mempool 功能已完成, 故去除
MEMORY_POOL 宏.
2019-10-06 01:10:34 +08:00
Calcitem 6d81a994d8 sort: 将 std::sort 排序算法替换为 sqrt_sort_sort_ins 算法
不需要通过转换为 vector 再调用 std::sort 排序。
自对弈时长由 52s 缩短到 45s。

排序算法代码来源:
https://github.com/swenson/sort
2019-10-06 00:39:43 +08:00
Calcitem d9758fcca5 mempool: 提升内存池大小到 2M
并修改打印统计信息的格式.
每下一着打印出内存池剩余空间大小.
创建了resize函数未完成.
2019-10-05 10:50:23 +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 a6a5ecf89c ui: lcd: score: Change digit to 5 2019-10-03 04:53:43 +08:00
Calcitem 3de806ccf5 refactor: 新建 piece_t 类型并进行魔数替换 2019-10-03 01:11:04 +08:00
Calcitem 55b4197139 refactor: Player 1/2 在代码中用 BLACK 和 WHITE 取代 2019-10-02 23:26:08 +08:00
Calcitem 5629387901 refactor: 启用 color_t 枚举并将1和2分别替换为 BLACK 和 WHITE 2019-10-02 23:15:25 +08:00
Calcitem 57e3eab4d5 Revert 'refactor: 减少 setPosition() 的参数个数到3'
Revert Commit cd6f8a6a77
and Solve conflicts.

解决载入棋谱后前后着跳转显示异常问题.
2019-10-02 21:40:39 +08:00
Calcitem f2a164979a build: qt: android: Fix build failed
Reference: https://bugreports.qt.io/browse/QTBUG-76293
2019-10-02 19:58:56 +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 306373371c refactor: 增加 doMove() 和 undoMove() 2019-10-02 10:25:14 +08:00
Calcitem d4407e80ea refactor: TranspositionTable 简写为 TT 2019-10-02 09:59:21 +08:00
Calcitem 40971cb3fa ai: window: 细分摆子阶段和走棋阶段的窗口 2019-10-02 09:43:40 +08:00
Calcitem 57dd0a2929 ai: IDS 时使用期望窗口
IDS前期期望窗口定为 301 时,才不会改变摆子阶段自对弈棋谱. 原因未知.
但定为301则性能没有可见的提升.

IDS 最后一次迭代期望窗口定为 179. 性能提升主要依靠这个.

最终自对弈时长由 70s下降到65s, 提速7%.

参考: https://www.xqbase.com/computer/advanced_aspiration.htm
2019-10-02 01:46:34 +08:00
Calcitem 41abab1756 type.h 增加几个定义备用 2019-09-30 01:58:42 +08:00
Calcitem e0b78a9ad9 启用 square_t 类型并设置为32位 (原来用8位表示 square) 2019-09-30 01:37:59 +08:00
Calcitem be82dbf1b5 新增 index_t 类型并设置为8位 (原来用32位表示 index) 2019-09-29 23:19:52 +08:00
Calcitem 0d6f4edd52 refactor: location 作下标时改为 index 2019-09-29 23:01:16 +08:00
Calcitem d3a79d8e19 location 由32位改为8位并新建 location_t 类型 2019-09-29 00:15:48 +08:00
Calcitem fd0ce863b0 refactor: 新增 location 模块 2019-09-29 00:01:01 +08:00
Calcitem 7551dbb9e3 Game::update() 取消 inline 以解决 gcc-7.3 编译失败问题 2019-09-28 23:26:24 +08:00
Calcitem f125654427 refactor: 增加 countPieces 系列函数 2019-09-28 22:47:47 +08:00
Calcitem 6c4693cd73 book: 修改自动保存棋谱的日期时间格式为年月日时分秒 2019-09-28 13:09:41 +08:00
Calcitem dd669091a0 refactor: 新建 saveBook() 函数 2019-09-28 11:39:45 +08:00
Calcitem 9612c014cd refactor: Rename PHASE_NOTSTARTED to PHASE_READY 2019-09-28 11:08:24 +08:00
Calcitem a02cdd9778 rule: 配置 rule 时配置 maxStepsLedToDraw 和 maxTimeLedToLose 2019-09-28 11:06:18 +08:00
Calcitem d6574b0fcb refactor: 去掉成员变量结尾的下划线
第三方库不处理.
2019-09-28 10:48:19 +08:00
Calcitem 4b0569ea65 refactor: 增加 phase 的成员 2019-09-28 02:09:00 +08:00
Calcitem e0601e8fa0 refactor: 改写 getDepthTime 函数 2019-09-28 02:09:00 +08:00
Calcitem 9515b7c687 refactor: getElapsedTime() 减少参数 2019-09-28 02:09:00 +08:00
Calcitem c37fd4e37e position: Initialize some members 2019-09-27 23:56:54 +08:00
Calcitem cd6f8a6a77 refactor: 减少 setPosition() 的参数个数到3 2019-09-26 01:10:47 +08:00
Calcitem 0f6ae7163a refactor: 更改时间相关变量命名
将毫秒改为秒以对应之前的逻辑修改.
2019-09-26 00:58:43 +08:00
Calcitem 77881f817c refactor: 减少 time_p 传参 2019-09-26 00:41:46 +08:00