CalciteM Team
|
ba097dedf4
|
msvc: 修改编译选项 MultiThreadedDLL -> MultiThreaded
|
2019-07-20 21:52:58 +08:00 |
CalciteM Team
|
791ea6d3a8
|
代码清理
|
2019-07-20 21:42:44 +08:00 |
CalciteM Team
|
2aaa3d276b
|
search: 调整部分语句位置
对性能优化极为轻微
|
2019-07-20 21:19:18 +08:00 |
CalciteM Team
|
922206b3ab
|
node->children vector 预留空间由48改为24,
节省了空间,但对效率几乎没有影响。
|
2019-07-20 20:56:33 +08:00 |
CalciteM Team
|
284c1c29cb
|
msvc: 连接器添加 /LTCG 选项提升链接性能
|
2019-07-20 20:42:29 +08:00 |
CalciteM Team
|
19d23eb7b8
|
HASH: 哈希结点个数由128M下调到64M
提速6%,并且无冲突出现。
实测 64M/32M 相差不大,16M会出现冲突影响计算结果。
|
2019-07-20 20:34:53 +08:00 |
CalciteM Team
|
28096b97c2
|
HASH: HashValue 中无需保存 hash 值,去除后提速 3%
|
2019-07-20 20:18:04 +08:00 |
CalciteM Team
|
6744c31a1f
|
下完棋后左下角信息栏的信息加上比分
|
2019-07-20 19:32:05 +08:00 |
CalciteM Team
|
87ba471531
|
代码清理
|
2019-07-20 19:19:28 +08:00 |
CalciteM Team
|
5aff5d8d29
|
Merge branch 'book'
合并开局学习相关提交,但暂不开启宏,因未完善 (棋力越下越弱)
|
2019-07-20 17:36:04 +08:00 |
CalciteM Team
|
3c24f6bce2
|
因开启哈希故将走子阶段深度提升
|
2019-07-20 17:02:36 +08:00 |
CalciteM Team
|
75fa2f83c7
|
HASH: 哈希返回的结果会决定结点是否是剪枝过
|
2019-07-20 17:02:36 +08:00 |
CalciteM Team
|
a6a1923163
|
HASH: 把最优着法插入首位而非和首位交换
|
2019-07-20 17:02:36 +08:00 |
CalciteM Team
|
081342bd89
|
HASH: 记录最优着法并在排序时将最优着法换到首位
|
2019-07-20 17:02:36 +08:00 |
CalciteM Team
|
7bb69cc561
|
HASH: 同样深度或更深时才替换
|
2019-07-20 17:02:36 +08:00 |
CalciteM Team
|
a77f6b6c95
|
HASH: 棋力和非HASH相当了但是效率无提升
|
2019-07-20 17:02:36 +08:00 |
CalciteM Team
|
d200ccad55
|
HASH: 记录哈希时不再记录 alpha/beta
|
2019-07-20 17:02:15 +08:00 |
CalciteM Team
|
7c1aec240f
|
IDS: 只有启用迭代深化时才有必要排序子节点
|
2019-07-19 23:15:41 +08:00 |
CalciteM Team
|
7fd982c1fc
|
book: 完成开局库学习的初版
|
2019-07-17 02:02:10 +08:00 |
CalciteM Team
|
d75feb9eea
|
实现开局库
|
2019-07-16 23:57:41 +08:00 |
CalciteM Team
|
98522a8267
|
加入 Book Learning 和 hash 相关的代码
Book Learning 功能待后续添加
|
2019-07-16 22:39:05 +08:00 |
CalciteM Team
|
7cfda4a015
|
增加 BOOK_LEARNING 宏
|
2019-07-16 21:55:30 +08:00 |
CalciteM Team
|
89476b6de3
|
Revert "HASH: 临时 提交"
This reverts commit 14e9d68288 .
|
2019-07-16 02:03:42 +08:00 |
CalciteM Team
|
bcda7d77fd
|
HASH: 每次做AB搜索前都清空哈希表
|
2019-07-16 02:02:21 +08:00 |
CalciteM Team
|
14e9d68288
|
HASH: 临时 提交
|
2019-07-15 00:55:00 +08:00 |
CalciteM Team
|
0ec8aa77f3
|
HASH: 先确保自我对战结果和未开HASH相同
|
2019-07-15 00:26:48 +08:00 |
CalciteM Team
|
ab06ad7716
|
HASH: 新增 probeHash 函数 (相关代码未完成)
|
2019-07-15 00:23:19 +08:00 |
CalciteM Team
|
3e0c23a669
|
HASH: 仅当从hashmap中读取的为确切值才应用value
棋力恢复回关闭hash的水平但耗时约大一倍
|
2019-07-14 22:51:46 +08:00 |
CalciteM Team
|
4a60435a38
|
目前HASH棋力弱存在Bug故关闭
|
2019-07-14 22:35:45 +08:00 |
CalciteM Team
|
3bf5381afd
|
HASH: 下第二盘时不明原因变慢故新开局时清除哈希表 (WAR)
|
2019-07-14 21:53:12 +08:00 |
CalciteM Team
|
e4ea2851c2
|
HASH: 哈希表扩大到128M
效率看不出差异
|
2019-07-14 21:45:35 +08:00 |
CalciteM Team
|
ecebd39347
|
HASH: 彻底去除哈希桶
|
2019-07-14 21:03:20 +08:00 |
CalciteM Team
|
35df7d3e6c
|
HASH: 去掉next指针以清理更多哈希桶代码
|
2019-07-14 20:11:53 +08:00 |
CalciteM Team
|
dfcbc2283e
|
HASH: key 直接转换为地址而非经过 std:hash 换算
|
2019-07-14 20:04:33 +08:00 |
CalciteM Team
|
08f50641df
|
HASH: 计算哈希地址时 % 改为 & 运算
实测效率几乎没有影响
|
2019-07-14 19:46:04 +08:00 |
CalciteM Team
|
86b9443c2f
|
HASH: 哈希表大小调整为16M
|
2019-07-14 19:35:24 +08:00 |
CalciteM Team
|
850738d529
|
HASH: 新增 DISABLE_HASHBUCKET 宏供用于禁用哈希桶
|
2019-07-14 19:35:02 +08:00 |
CalciteM Team
|
d602a1df10
|
HASH: 哈希表大小上调到 1M
|
2019-07-14 17:31:23 +08:00 |
CalciteM Team
|
acda6db11b
|
HASH: alphaBetaPruning 基本修改完成
|
2019-07-14 17:03:28 +08:00 |
CalciteM Team
|
6a7c8d1d59
|
pro文件增加哈希头文件
|
2019-07-14 15:10:16 +08:00 |
CalciteM Team
|
4b1f3bba48
|
updateHash和revertHash函数完成调用
|
2019-07-14 14:49:01 +08:00 |
CalciteM Team
|
30fabb7a4c
|
完成 updateHash 函数
|
2019-07-14 13:56:36 +08:00 |
CalciteM Team
|
113aca04b5
|
部分适配 findHash 和 recodeHash
|
2019-07-14 11:17:15 +08:00 |
CalciteM Team
|
e89be5e883
|
hashmap cpp 换为 h
|
2019-07-14 11:04:51 +08:00 |
CalciteM Team
|
e55eee77a6
|
哈希模块替换为 kshk123/hashMap 但还未适配
|
2019-07-14 10:06:15 +08:00 |
CalciteM Team
|
8faa9baa38
|
去除部分语句的方式链接通过,暂时先这样处理
|
2019-07-14 02:01:38 +08:00 |
CalciteM Team
|
0421fa0494
|
HASH: 编译通过链接仍失败
|
2019-07-13 21:39:06 +08:00 |
CalciteM Team
|
a3301d19d0
|
IDS: 深化迭代步长由1改为2 (WAR)
原因:
对于以下棋局
r2 s000 t00
(2,4) 00:00.000
(2,8) 00:00.487
(2,6) 00:46.657
(2,5) 00:00.976
(2,2) 00:49.176
(2,3) 00:02.488
(3,6) 00:55.784
(1,6) 00:03.387
(1,4) 01:09.749
(3,5) 00:03.758
最后一步 (3,5) 而非封堵 (3,4) 最终输棋
调试时发现在迭代深度为5时 之前 (3,4) 排第1的顺序被打乱
故迭代为偶数以跳过5
和原来的程序对战结果 2:5-3.5, 所以这种改法为 WAR 方案
|
2019-07-13 21:12:32 +08:00 |
CalciteM Team
|
527fec2856
|
添加未完成的Hash代码但暂时关闭宏
|
2019-07-13 19:47:30 +08:00 |
CalciteM Team
|
702a562bbd
|
添加哈希表部分代码
编译通过,链接不通过
|
2019-07-13 18:09:07 +08:00 |
CalciteM Team
|
03294e1557
|
临时调整 config.h 以后续调试 Hash 用
|
2019-07-13 15:04:03 +08:00 |
CalciteM Team
|
88fec0b8bf
|
hash改名为hashCheckCode以免和后面添加的真正的hash值名称冲突
|
2019-07-13 14:59:22 +08:00 |
CalciteM Team
|
0d5306514a
|
删除部分无用代码
|
2019-07-13 14:42:38 +08:00 |
CalciteM Team
|
4e43de6663
|
去除一处被反复调用的 setTips 以提高性能6%
|
2019-07-13 13:56:31 +08:00 |
CalciteM Team
|
87ff9a3927
|
Qt: 将 config.h 加入 Qt 工程
|
2019-07-13 11:07:23 +08:00 |
CalciteM Team
|
fe87db7666
|
调试完成故重新启用随机走子
|
2019-07-13 11:05:22 +08:00 |
CalciteM Team
|
30d458a76a
|
生成合法着法前先给 children 数组扩容到48
i7 CPU 上,自对战再提速 18%,耗时由 109s 缩短到 90s
|
2019-07-13 11:01:31 +08:00 |
CalciteM Team
|
bf26f291a1
|
Node子节点不用list改用vector使得提速20%
i7 CPU,自我对弈从 136s 缩短到 109s
sortLegalMoves CPU性能占用率从13%下降到2.3%
|
2019-07-13 10:34:08 +08:00 |
CalciteM Team
|
332f3c181b
|
Disable rand move
|
2019-07-13 09:05:13 +08:00 |
CalciteM
|
006a548d69
|
吃子优先级和摆子优先级相反
|
2019-07-12 01:15:46 +08:00 |
CalciteM
|
ff1d7dce84
|
优先级表调整为内圈十字架优先于外圈十字架
|
2019-07-10 23:16:58 +08:00 |
CalciteM
|
ffa742881a
|
自动生成的棋谱后缀改为 .txt
之前只能用命令
ls *.log | awk -F'.' '{print $1}'|xargs -i -t mv {}.log {}.txt
把 log 批量改为 txt
|
2019-07-10 23:02:41 +08:00 |
CalciteM
|
eb2121046d
|
每下一着之前才重新随机生成着法候选列表以提升效率
|
2019-07-10 02:05:33 +08:00 |
CalciteM
|
556bb7b94f
|
新增 RANDOM_MOVE 宏用于随机摆棋
(中圈和外圈等效,和未开启此宏时的细分表现暂时不统一)
程序效率下降 1/3
|
2019-07-10 01:00:06 +08:00 |
CalciteM
|
f700aa3d70
|
Enable IDS
|
2019-07-09 01:06:14 +08:00 |
CalciteM
|
3a62763653
|
因不稳定故关闭 DONOT_DELETE_TREE
|
2019-07-07 23:14:35 +08:00 |
CalciteM
|
54947bfe01
|
打开 DONOT_DELETE_TREE 宏时不删除子节点以用空间换时间
Release自对弈双方总耗时由33s缩短到20s
|
2019-07-07 22:27:23 +08:00 |
CalciteM
|
7d6631317a
|
去掉 addNode 中的 rand() 操作
Node 节点中的 rand 暂时未去除
Release自对弈一方: 15.551s->14.930s
|
2019-07-07 21:46:40 +08:00 |
CalciteM
|
d32ff9bbff
|
优化 addNode 函数性能
Release 自对弈一方的时间从30s缩短到15s
某个着法深度为8时,从原来的 47.405 s 缩短到 34.072 s,节省 30 % 耗时
|
2019-07-07 21:41:46 +08:00 |
CalciteM
|
96e9ae565f
|
sortLegalMoves 增加一段代码备用
目前启用后会出现打印的着法没有显示最优着法,待完善
|
2019-07-07 20:43:43 +08:00 |
CalciteM
|
e8ee553d50
|
动态深度表上调深度
|
2019-07-07 17:18:18 +08:00 |
CalciteM
|
115cc3ab3c
|
修改水平线效应判断改为根据是否剪枝来决定是否加深
|
2019-07-07 17:08:08 +08:00 |
CalciteM
|
cc522bff7f
|
摆子优先考虑占据斜线
|
2019-07-07 16:52:17 +08:00 |
CalciteM
|
b0d2884dbf
|
打印是选择的最佳着法缩减到没有被剪枝的选择
|
2019-07-07 15:34:22 +08:00 |
CalciteM
|
c55b10b129
|
不搜索翻转局面的HASH
|
2019-07-07 12:59:07 +08:00 |
CalciteM
|
86688629d7
|
hash 不更新 depth
|
2019-07-07 12:03:49 +08:00 |
CalciteM
|
564fb3677d
|
去除hash更新depth机制前的备份
|
2019-07-07 11:20:14 +08:00 |
CalciteM
|
15dd9b5891
|
增加hashf 未完善
|
2019-07-07 11:03:06 +08:00 |
CalciteM
|
42f6b5d0d2
|
增加 recordHash()
|
2019-07-07 10:48:19 +08:00 |
CalciteM
|
4d72e101d2
|
将搜索哈希放在叶子结点处理流程之前
|
2019-07-07 10:24:26 +08:00 |
CalciteM Team
|
d38200dce5
|
每走一步棋更新 Hash 值以提升效率
已知问题:
棋力明显下滑,待调试
|
2019-07-07 03:27:29 +08:00 |
CalciteM Team
|
ae247bad52
|
只对最优着法且为吃子的着法多搜索一层
|
2019-07-06 19:06:24 +08:00 |
CalciteM Team
|
bae40a0360
|
AI: 更改函数名以更表意
|
2019-07-06 16:17:43 +08:00 |
CalciteM Team
|
22d450a193
|
招法改名为着法并添加更多注释
|
2019-07-06 15:32:19 +08:00 |
CalciteM Team
|
2366f8eae1
|
AI: 添加注释并删除无用代码
|
2019-07-06 08:27:21 +08:00 |
CalciteM Team
|
ab8525f1a5
|
目前Hash算法会越下越慢故关闭
|
2019-07-06 02:48:35 +08:00 |
CalciteM Team
|
d27485b06f
|
AI时间上限改为120秒
|
2019-07-06 01:49:54 +08:00 |
CalciteM Team
|
7afa962ed9
|
即便超时时发生 Error 也返回首个招法
|
2019-07-06 01:49:25 +08:00 |
CalciteM Team
|
2c0ad67e23
|
AI超时时间改为30秒
|
2019-07-06 00:31:40 +08:00 |
CalciteM Team
|
adda89c6b4
|
新建游戏时清空哈希表
否则除了首盘棋力正常,后面会变弱
|
2019-07-05 23:39:49 +08:00 |
CalciteM Team
|
1a196fe57f
|
棋未下完就新建游戏算投降
|
2019-07-05 01:45:01 +08:00 |
CalciteM Team
|
8dc56dfa21
|
棋未下完就新建游戏,算玩家2得分
|
2019-07-05 01:44:59 +08:00 |
CalciteM
|
1d122bd4cd
|
Hash: Style: Refactor
|
2019-07-05 01:36:00 +08:00 |
CalciteM
|
d65e79038d
|
解决 RANDOM_BEST_MOVE 未开启时编译不通过的问题
|
2019-07-04 23:36:28 +08:00 |
CalciteM Team
|
b6fb08988b
|
动态搜索深度加深并10步才选1步次优着
|
2019-07-04 02:16:43 +08:00 |
CalciteM Team
|
a2d1e2616f
|
右上角时间栏改造成计分栏
|
2019-07-04 02:05:45 +08:00 |
CalciteM Team
|
0e82b83941
|
20%概率下次优棋
|
2019-07-04 00:35:27 +08:00 |
CalciteM Team
|
1795357070
|
最优招法随机选最优的两步其中一步
|
2019-07-04 00:12:05 +08:00 |
CalciteM
|
619217a5eb
|
解决随机不生效的问题
|
2019-07-03 22:15:01 +08:00 |
CalciteM
|
84e937a8f2
|
修改 sortChildren 中的 Lambda 函数
|
2019-07-03 01:18:02 +08:00 |
CalciteM
|
b7b11eb659
|
提升启用水平线效应时的搜索深度
|
2019-07-02 23:12:18 +08:00 |
CalciteM
|
7085a6cb09
|
AI: 若遇到吃子则搜索深度加1层
|
2019-07-02 00:46:20 +08:00 |
CalciteM
|
308cb5b9c8
|
调整动态深度表以提高前几着的速度
|
2019-07-01 22:44:36 +08:00 |
CalciteM
|
532994e96a
|
目前 AB_RANDOM_SORT_CHILDREN 宏开启后变得很弱故临时关闭
|
2019-07-01 22:44:23 +08:00 |
CalciteM
|
aa0898b19d
|
对 value 相同的进行随机排序
|
2019-07-01 00:51:08 +08:00 |
CalciteM
|
2113b75206
|
IDS使用宏控制并打印计算时间
|
2019-06-30 23:51:48 +08:00 |
CalciteM
|
191e507600
|
VC: Release 编译时使用速度优先优化
|
2019-06-30 21:09:06 +08:00 |
CalciteM
|
2aa99e4bf3
|
使用深化迭代取代随机排序
|
2019-06-30 18:39:05 +08:00 |
CalciteM
|
5b474c2458
|
增加用于改变深度的 changeDepth() 函数并将动态调整和固定变为互斥
|
2019-06-30 16:43:24 +08:00 |
CalciteM
|
f5a7f0ce22
|
让 rootNode 也通过 addNode() 构建
|
2019-06-30 16:13:13 +08:00 |
CalciteM
|
c80759fe1e
|
剩余的 Data 改名为 Context
|
2019-06-30 15:39:25 +08:00 |
CalciteM
|
ed5cf81712
|
DEBUG宏不开时也打开 GAME_PLACING_DYNAMIC_DEPTH
|
2019-06-30 14:41:09 +08:00 |
CalciteM
|
bdf7d45a62
|
打印遍历过的结点个数和占总结点个数比例
|
2019-06-30 13:35:46 +08:00 |
CalciteM
|
f5573e9f06
|
重构 alphaBetaPruning 暂时改为在循环中判断先后手
|
2019-06-30 12:29:22 +08:00 |
CalciteM
|
7273f29974
|
Node结构体增加成员表征局面
|
2019-06-30 11:59:06 +08:00 |
CalciteM
|
810f639f29
|
取消游戏结束弹框
|
2019-06-30 11:00:22 +08:00 |
CalciteM
|
b644ba19e8
|
调整一些宏选项
|
2019-06-30 09:57:44 +08:00 |
CalciteM
|
44382b55da
|
替换获胜的声音资源
因为播放获胜音乐时经常卡顿
临时使用 QQGame
|
2019-06-30 09:57:01 +08:00 |
CalciteM
|
e30ed9541a
|
游戏结束时弹框
|
2019-06-30 09:56:22 +08:00 |
CalciteM
|
4a392eba1d
|
新建游戏时若双方已共走了18步以上则自动保存棋谱
命名为 book_时间戳.txt
|
2019-06-30 08:52:28 +08:00 |
CalciteM
|
60397cb4b9
|
保存棋谱对话框的文件名加上时间戳
|
2019-06-30 08:22:55 +08:00 |
CalciteM
|
9d2f97420a
|
范例棋谱.txt 更名为 Sample.txt
|
2019-06-30 08:08:49 +08:00 |
CalciteM
|
aa2fbd1221
|
文本: 将黑方/白方重新替换回玩家1/玩家2
|
2019-06-30 08:02:24 +08:00 |
CalciteM
|
3b6f3fce40
|
将 config.h 从 UTF-16 切换为 UTF-8 格式
|
2019-06-30 07:40:27 +08:00 |
CalciteM
|
9bb6c84008
|
解决DEBUG宏不开时编译不通过的问题并重构 config.h
|
2019-06-30 07:29:24 +08:00 |
CalciteM
|
ed531d1c86
|
调整 Node 结构体成员顺序以方便调试
|
2019-06-29 20:00:41 +08:00 |
CalciteM
|
45e024c151
|
修复了规则允许提三连子的情况下电脑不会提的问题
|
2019-06-29 19:20:47 +08:00 |
CalciteM
|
4aacd59e08
|
AI: 添加移动方向的enum以及其他一些重构
|
2019-06-29 19:08:46 +08:00 |
CalciteM
|
81ceed4271
|
为调试AB树加入更多代码
|
2019-06-29 17:09:37 +08:00 |
CalciteM
|
1f04bde3ad
|
第1步的搜索深度由7改为2
|
2019-06-29 16:22:12 +08:00 |
CalciteM
|
e72945814d
|
将 AB 树部分成员放在 DEBUG_AB_TREE 宏控制下
|
2019-06-29 15:53:41 +08:00 |
CalciteM
|
b3d8c952f3
|
根据屏幕大小调整启动时的窗口大小
|
2019-06-29 15:39:33 +08:00 |
CalciteM Team
|
73d334ee60
|
窗口大小调大到1440并启动时居中
|
2019-06-29 13:17:39 +08:00 |
CalciteM Team
|
d328d98069
|
启动时窗口最大化
|
2019-06-29 12:50:50 +08:00 |
CalciteM Team
|
dd164595a0
|
摆棋阶段对最近移除的棋子置为选择状态
|
2019-06-29 12:03:45 +08:00 |
CalciteM Team
|
a7f5f0a173
|
摆棋阶段在叉下面显示被吃的子
|
2019-06-29 10:24:47 +08:00 |
CalciteM Team
|
a44b0687de
|
临时调整摆棋阶段搜索深度为2
|
2019-06-29 00:35:42 +08:00 |
CalciteM Team
|
650c694ca5
|
style: refactor
|
2019-06-29 00:10:59 +08:00 |
CalciteM Team
|
88fded38d8
|
sytle: 变量 itor 改名为 iter
|
2019-06-28 23:09:50 +08:00 |
CalciteM Team
|
be80990f93
|
调整代码格式
|
2019-06-28 23:06:38 +08:00 |
CalciteM Team
|
ffac849fac
|
新增 config.h 用于宏定义配置
|
2019-06-28 21:58:27 +08:00 |
CalciteM Team
|
0aa7d11ead
|
位置权重计算方法有误故先去除
|
2019-06-27 03:17:46 +08:00 |
CalciteM Team
|
710b52793c
|
动态调整搜索深度
|
2019-06-27 02:47:32 +08:00 |
CalciteM Team
|
8a07970f7d
|
修复之前不慎误修改的判断少于2字即失败的判断方法
|
2019-06-27 02:46:58 +08:00 |
CalciteM Team
|
d1f37c2e6d
|
在 node 的成员中加入 cmd 以方便查看结点的命令
|
2019-06-27 02:45:45 +08:00 |
CalciteM Team
|
8ffcc55bb7
|
增加宏用于不剪枝方便调试 AB 树
|
2019-06-27 00:11:10 +08:00 |
CalciteM Team
|
1feeb914ed
|
node 增加 stage/action/depth 属性以便于调试
|
2019-06-26 02:20:34 +08:00 |
CalciteM Team
|
b21474a475
|
调整分值让部分分值和原始版本一致
|
2019-06-26 00:16:11 +08:00 |
CalciteM Team
|
cfc87be138
|
解决计算 value 时未考虑走子阶段被闷死的问题
并调整分数值
并对不同点位赋予不同分值,以尽量争抢斜线和中央位置
|
2019-06-25 02:09:46 +08:00 |
CalciteM Team
|
a07b300851
|
DOS to Unix format
|
2019-06-25 00:30:27 +08:00 |