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 |
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 |