Commit Graph

568 Commits

Author SHA1 Message Date
Calcitem e90266d3e1 license: Change Licence to GPL 3.0
由 LGPL 协议切换为 GPL 协议.
2019-11-03 13:00:45 +08:00
Calcitem c747b8b429 depth: 调整 movingDiffDepthTable 降深度更苛刻
实际对自对弈时长影响不大, 仅从 13s 增到 14s.
2019-10-29 00:41:58 +08:00
Calcitem 5e8fc4ddea endgame: 关闭 ENDGAME_LEARNING 功能
内存占用从 570MB 下降到  433MB.
因为 movingDiffDepthTable 的切换, 自对弈时长由 18s 缩短到 13s.
2019-10-29 00:39:08 +08:00
Calcitem 9d6b3245ed tt: value_t 由16位减少到8位
程序内存占用由 680MB 下降到 570MB.
2019-10-29 00:11:46 +08:00
Calcitem c639c15235 evaluate: 将 VALUE_EACH_PIECE_INHAND 由 50 改为 100
调整前, 自我对战为:
比分	1256	851	82
百分比	57.38 	38.88 	3.75

黑方调整后和未调整的白方对战结果为:
比分	2324	1458	153
百分比	59.06 	37.05 	3.89

即胜率略微提升了 1.7%, 而数千盘百分比波动小于 0.7%.
2019-10-27 22:12:49 +08:00
Calcitem a453c7b63e trainer: 初步实现能走出第1步就停止了 2019-10-27 01:03:10 +08:00
Calcitem 583af3aaf3 stl: QList 切换为 std::list 2019-10-26 20:37:54 +08:00
Calcitem 816883ca8e stl: QMap 切换为 std::map 2019-10-26 20:14:26 +08:00
Calcitem 128bae35ec stat: 每盘棋结束时打印耗时 (ms) 2019-10-26 19:44:46 +08:00
Calcitem 25fa3e8dc7 rule: 新增 DEFAULT_RULE_NUMBER 宏 2019-10-26 19:03:18 +08:00
Calcitem 5b37ec783e 9nm: 默认选莫里斯九子棋 2019-10-26 18:57:36 +08:00
Calcitem 16f24caed4 console: 打印九子棋棋盘 2019-10-26 18:40:09 +08:00
Calcitem 2e69bd40a7 清理 countPiecesInHand() 函数即删除了不必要的取最小值操作 2019-10-26 18:40:09 +08:00
Calcitem 811ef6221d 9子棋: 取消白方第2着走星点的重要性和成三一样重要的策略 2019-10-26 18:40:09 +08:00
Calcitem 8dbc4c6ad7 movegen: 为九子棋定制候选着法排列顺序 2019-10-26 18:40:09 +08:00
Calcitem 31fa66f6da mempool: 内存池大小增大到 4MB 2019-10-26 18:40:09 +08:00
Calcitem af96aaba67 depth: 降低9子棋摆棋深度 2019-10-26 18:40:09 +08:00
Calcitem 0ec6cf9866 depth: 调整 placingDepthTable 数组排列顺序 2019-10-26 18:40:09 +08:00
Calcitem 5450ad9de9 refactor: 替换 MILL_FIRST 宏名为 SORT_MOVE_WITH_HUMAN_KNOWLEDGES 2019-10-23 00:22:15 +08:00
Calcitem c702f873b5 rating: 在走棋阶段检测落子点是否能阻止对方成三 2019-10-22 01:10:56 +08:00
Calcitem 2569d72cb7 rating: 仅在摆棋阶段检测落子点是否能阻止对方成三 2019-10-21 01:09:15 +08:00
Calcitem 091a208fbe AI: 关闭 IDS 并调整 rating 计算以提升性能
* 关闭IDS, 因为通过判断是否成三来排定走子顺序已经很有效;
* 仅在吃子时才统计各个点周围子类型分布;
* 仅在需要检测落子点是否能阻止对方成三时才统计点位于对手几个三连中;
* 去掉摆子阶段尽量往禁点旁边落子的策略;
* 不再判断吃子点处于我方的三连中, 因为可能正好也处于对方的三连中.

自对弈时长 2s, 但走棋阶段没多久就闷杀.
若开 IDS 则是 20s.
2019-10-21 00:09:51 +08:00
Calcitem 8611d4db8b AI: 优化吃子优先级 2019-10-20 23:16:32 +08:00
Calcitem c7fbc4b1bc AI: 增强第2着的走法
* 仅当前2着时才认为星点的重要性, 以免摆棋阶段走到中途时选点优先级不合理.
* 上调第2着的深度由9变为10, 以当黑方走形如21->29时白方不会连续走两次星点造成被动.

自对弈时长: 31s
2019-10-20 14:47:30 +08:00
Calcitem df31044caf AI: 吃子时尽量吃和我方子形成三连的子 2019-10-20 12:10:58 +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 d5486fb2cf depth: 进一步提升摆子和走子的深度 2019-10-20 03:05:22 +08:00
Calcitem 7c2345537c depth: 调高摆子阶段后段的深度以防止走棋阶段没多久就闷杀 2019-10-20 02:30:37 +08:00
Calcitem 969aee6c4c AI: 摆子阶段将棋子摆放在星点和成三的优先级一样 2019-10-20 00:39:52 +08:00
Calcitem 95ea8a2c5d AI: 吃子时尽量不吃对方三连中的子 2019-10-19 23:59:57 +08:00
Calcitem ccf8b45187 AI: 使用 rating 机制取代成三着法直接插到首位
* 对于 node, 使用 rating 记录排序分数;
* rating 取值的依据为置换表最佳着法优先, 然后再考虑己方成三, 最后
  考虑封堵对方的三;
* 排序时先比较 rating 再比较 value;
* bestMove 维持取第一个 root value 一致的结点不变;
* 不再在 AddNode 函数中改变父节点的孩子顺序;
* 着法排序改为在生成着法后马上进行.

自对弈时长缩短到16秒.
2019-10-19 03:05:41 +08:00
Calcitem c82aab9a88 AI: 能成三就优先成三
能成三就优先成三, 除非置换表中记录了最优着法.
完成此功能, 相关修改用 MILL_FIRST 控制, 启用此宏.

自对弈时长缩短一半.
2019-10-18 01:12:34 +08:00
Calcitem cfe4ce4e9b Fix: 修复开局阶段AI可能被堵死的问题
提交 79effc7 实现摆子阶段最后一着如果成三则先吃子再进入走棋阶段.
但是忘了在判断到未成三时且摆满时判断胜负,而是直接进入走棋阶段.
故会造成开局阶段AI可能被堵死. 现在补上这个判断,修复之.
2019-10-16 23:56:40 +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 5ec79bd146 stack: 新增析构函数以解决退出程序时抛出异常的问题 2019-10-15 22:45:44 +08:00
Calcitem 3013ef372f ids: 解决关闭 IDS 后编译不通过的问题 2019-10-15 00:42:44 +08:00
Calcitem 7365d059e8 refactor: history 改名为 moveHistory 2019-10-13 22:46:40 +08:00
Calcitem ccc8f2c415 ai: 补全缺失的 SORT_CONSIDER_PRUNED 宏控制 2019-10-13 22:20:25 +08:00
Calcitem ac06cb6531 对优先成三(MILL_FIRST)的代码进行部分修正 (未完成)
MILL_FIRST 目前默认仍未启用.
2019-10-13 21:45:53 +08:00
Calcitem 6ec062e5bc tt: 函数改为 const 引用传参 2019-10-12 23:10:26 +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 3459050600 tt: debug: 打印 HASH 命中率 2019-10-09 23:59:36 +08:00
Calcitem 30c5df101e ai: tt: 查询置换表是否命中后不再判断是否为根节点 2019-10-09 23:22:41 +08:00
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