Commit Graph

752 Commits

Author SHA1 Message Date
Calcitem 2642f8f46b Fix Kritika notes 2020-03-21 00:25:45 +08:00
Calcitem c84db35655 refactor: inHowManyMills() 函数由重载改为单一函数 2020-03-20 23:34:50 +08:00
Calcitem d47be83ae5 Fix build warnings 2020-03-20 22:31:46 +08:00
Calcitem 2f5380f58a 如果定义了 FIRST_MOVE_STAR_PREFERRED 则黑方首步强制走星位
暂不开启,但是当前星位的 rating 值高所以通常还是走星位。
2020-03-20 22:22:19 +08:00
Calcitem 3138424e97 depth: 如果定义了 FIX_DEPTH 宏则深度就定为这个宏的 值 2020-03-20 01:10:49 +08:00
Calcitem 7cafc9d9af ai: 如果只有一种走法可走就直接走而无需计算
加4级depth后,自对弈时长由 1477s 减少到 1452.
2020-03-20 01:03:49 +08:00
Calcitem b0d3584b61 refactor: Rename Game to StateInfo 2020-03-16 00:48:54 +08:00
Calcitem 7da2d0416c mcts: 新增分段线性分布相关代码
使用 MCTS_PLD 宏控制,暂不启用。
若启用,棋力反而比均匀分布弱。
2020-03-06 00:17:10 +08:00
Calcitem 9014a4d949 mcts: 每下一步前分段随机打乱着法表
和 alpha-beta 类似。
2020-03-04 23:50:42 +08:00
Calcitem 1e73efc556 mcts: refactor: 变量名移除 UCT 2020-03-04 23:16:03 +08:00
Calcitem a61df6e7d6 mcts: refactor: computeTree 和 computeMove 改放在 AIAlgorithm 类中 2020-02-29 08:40:18 +08:00
Calcitem 1e6456b902 refactor: 让 NODE_CHILDREN_SIZE 直接等于 MOVE_COUNT
顺带加了一段 MCTS 相关的双方棋盘上棋子数相差4则算负的代码但未启用。
2020-02-29 00:13:07 +08:00
Calcitem 1748dbef70 调整 class Node 的成员变量顺序以使得 Node 大小从392降低到376字节
Stack 成员变量也调整但在8字节对齐情况下无影响。
2020-02-27 00:33:23 +08:00
Calcitem 6cc306c386 mcts: maxIterations 改为 10000
Debug 下自对弈时长 30370ms
最后一步 (1,8)  -> (1,1)
2020-02-26 23:43:06 +08:00
Calcitem 57f5a0d3ba mcts: 移除 Node 类中和 MCTS 无关而仅和 AB 有关的成员变量 2020-02-26 02:28:09 +08:00
Calcitem 560f4e38be movegen: 去除一处 assert 否则 MCTS 自对弈会触发 2020-02-26 02:12:11 +08:00
Calcitem ac18becf93 mcts: MCTS 在本游戏中可用
开启 MCTS_AI 宏即可。
2020-02-26 02:02:39 +08:00
Calcitem 9fe69de293 refactor: 调整部分成员变量为 public 以及调整顺序 2020-02-26 01:26:20 +08:00
Calcitem ce42e04ca3 修改 Game 类拷贝/初始化/析构时对 position 的处理
Game 类拷贝构造函数中不是将 position 的 指针赋值,而是拷贝整个内容;
Game 类初始化时先把 position delete 掉才重新申请;
Game 类析构时将 position delete 掉并将 cmdlist clear 掉;
2020-02-26 01:06:46 +08:00
Calcitem 039ffea016 millList 清空时只需将 millListSize 设置为0即可而不需要 memset 清零 2020-02-26 00:40:46 +08:00
Calcitem 4aefae4926 消掉部分多余空格 2020-02-26 00:29:24 +08:00
Calcitem e39cd7eb5a 为了捕捉着法生成的异常增加一些 assert 2020-02-26 00:29:02 +08:00
Calcitem aff0f498db millList 由 vector 改为数组
重复性代码较多,待优化。
2020-02-26 00:04:26 +08:00
Calcitem 814ed29689 movegen: 新增 generateChildren() 函数而原有的 generateMoves() 只负责输出到 moves 数组 2020-02-05 12:30:25 +08:00
Calcitem 4ce999a8d5 movegen: 当抢占星位时去除给结点赋值为大数值的操作因为没有必要 2020-02-05 00:20:25 +08:00
Calcitem c678376785 Release: SubSystem 改为 Console 以使得运行时也显示控制台 2020-02-04 23:45:34 +08:00
Calcitem b6fc768317 MobileUI: 修复编译不通过的问题 2020-02-04 17:10:31 +08:00
Calcitem cb73f8622f refactor: AddChild() 将 move 调整为首个参数 2020-02-03 23:56:20 +08:00
Calcitem 3b206b1cd1 addChild() 去掉 value 和 rating 两个参数 2020-02-03 23:48:41 +08:00
Calcitem ac88c9bdd0 mcts-demo: refactor: state 改名为 game
并删除无用的已注释的代码
2020-02-03 23:24:46 +08:00
Calcitem 8a4e44c94e movegen: 去除 generateMoves() 中的 root 参数 2020-02-03 23:07:15 +08:00
Calcitem ca580ecbdd mcts-demo: 其余的 vector 也改为数组
Debug 下自对弈时长影响不大。
2020-02-01 13:27:01 +08:00
Calcitem 16ce8ce377 mcts-demo: 清理代码 2020-02-01 10:55:21 +08:00
Calcitem 6a147448fc Stack: begin() 和 end() 由返回引用改为返回指针
使用例子:
Stack<move_t, 8> moves;
for (int i = 0; &moves[i] != moves.end(); i++)
2020-02-01 10:07:49 +08:00
Calcitem 8e68bcf807 mcts-demo: board 由 vector 改为数组
Debug 下自对弈时长由 56s 缩短到 18s。
2020-02-01 09:09:07 +08:00
Calcitem 4b96630130 mcts-demo: node->children 由 vector 改为数组
Debug 下自对弈时长由 67s 缩短到 56s。
2020-02-01 00:48:55 +08:00
Calcitem a27384ecf4 mcts-demo: 将 moves 由 vector 改为 Stack
Debug 下自对弈时长由 75s 缩短到 67s。
2020-01-31 22:00:46 +08:00
Calcitem 9f7091fc49 mcts-demo: 打印总耗时并在 VC Debug 下开 OpenMP 宏以计算分步时间 2020-01-30 23:12:11 +08:00
Calcitem e8b7572362 mcts-demo: 开关 Debug 宏时 maxIterations 值各不同 2020-01-30 17:26:15 +08:00
Calcitem 6c2fc51a24 mcts-demo: 关闭 USE_OPENMP 并将 maxIterations 调整为 2000000
开启 USE_OPENMP,MinGW 编译不通过;
2000000 时为和棋。1000000 不是和棋。
2020-01-30 09:10:59 +08:00
Calcitem 0f6cc96eda mcts-demo: 改为AI自对弈并调整对弈参数 2020-01-30 00:47:24 +08:00
Calcitem d4dbfc9139 mcts-demo: refactor: 重命名 State 为 Game 2020-01-29 23:51:07 +08:00
Calcitem eeaca6c654 refactor: game.whoWin() 改名为 game.getWinner() 2020-01-29 23:22:56 +08:00
Calcitem 8989c65856 refactor: Game::command() 改名为 Game::doMove() 2020-01-29 22:50:19 +08:00
Calcitem 1cd374512e copyright: 更新版权年份为 2019-2020 2020-01-29 22:25:34 +08:00
Calcitem c4d2af972b refactor: movegen: generateMoves() 参数 parent 改名为 node 2020-01-29 22:07:02 +08:00
Calcitem bd4e59b9f7 setGame() 直接调用重载 = 运算符
不再通过 memcpy 来拷贝 position 和 boardLocation。
2020-01-29 21:33:19 +08:00
Calcitem 1ed447d750 将 AddNode() 改为 Node 类的成员函数 2020-01-29 20:28:15 +08:00
Calcitem ff3afb0873 refactor: AI: 移除不需要的类成员变量 2020-01-29 17:45:31 +08:00
Calcitem 2cf8228e4e AI: 将 Game tempGame 更换为 Game *tempGame 2020-01-29 13:38:17 +08:00