银行 社区服务 每日签到 会员排行 网站地图
  • 1146阅读
  • 35回复

皮卡鱼240302 GitHub网站原版程序不含权重

楼层直达
级别: 上尉
[棋中红钻4级]发帖数量≥1000篇 [棋中黄钻4级]金币数量≥5000枚 [棋中蓝钻3级]乐币数量≥100枚 [棋中粉钻2级]贡献值数量≥5点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
1579
金币
6155
威望
0
贡献值
5
乐币
384
主题
4
只看该作者 20楼 发表于: 03-03
回 14楼(zzhhxxww) 的帖子
级别: 上尉
[棋中红钻3级]发帖数量≥500篇 [棋中黄钻3级]金币数量≥2000枚 [棋中蓝钻1级]乐币数量≥10枚 [棋中粉钻2级]贡献值数量≥5点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
517
金币
3461
威望
0
贡献值
5
乐币
12
主题
62
只看该作者 21楼 发表于: 03-03
回 18楼(棋中莽夫) 的帖子
这个引擎是 国际象棋的吧 中象没法用啊
级别: 三级士官
[棋中红钻1级]发帖数量≥10篇 [棋中黄钻1级]金币数量≥100枚 [棋中蓝钻1级]乐币数量≥10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
63
金币
368
威望
0
贡献值
0
乐币
12
主题
0
只看该作者 22楼 发表于: 03-03
回 21楼(zzhhxxww) 的帖子
  噗,你说的那是仙女鱼中象,那个感觉就不会更新了,因为有皮卡鱼在搞中象了。都是源于鳕鱼引擎。
  我那段话的意思是,鳕鱼更新了权重架构,加了二级神经,听上去对测试成绩有蛮大影响的,看看皮卡鱼会不会也用那个技术。鱼老版0218不是也用了特别的内置权重么,这次新版要是跟上鳕鱼也许能再次创造历史。
  
级别: 上尉
[棋中红钻3级]发帖数量≥500篇 [棋中黄钻3级]金币数量≥2000枚 [棋中蓝钻1级]乐币数量≥10枚 [棋中粉钻2级]贡献值数量≥5点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
517
金币
3461
威望
0
贡献值
5
乐币
12
主题
62
只看该作者 23楼 发表于: 03-03
回 22楼(棋中莽夫) 的帖子
  好的,明白了  感谢指教~~
棋坛流窜犯!欢迎百度《棋软迷》,只收藏最好的棋软!
级别: 中尉
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [棋中蓝钻1级]乐币数量≥10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
379
金币
694
威望
2
贡献值
0
乐币
10
主题
41
只看该作者 24楼 发表于: 03-04
回 15楼(azsaxxx) 的帖子
5k3/9/9/9/2N6/9/1c7/3K5/4A4/3A2B2 b - - 0 157

测试了你的设置文件很多盘,这盘这里黑将6进1,又自杀送黑炮了
棋坛流窜犯!欢迎百度《棋软迷》,只收藏最好的棋软!
级别: 少校
[棋中红钻4级]发帖数量≥1000篇 [棋中黄钻3级]金币数量≥2000枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
1851
金币
3274
威望
0
贡献值
0
乐币
5
主题
19
只看该作者 25楼 发表于: 03-04
旋风1228三十二核(240秒/步)胜pk240302三十二核(1秒/步)
  1. 炮二平五
     马8进7
  2. 兵三进一
     卒3进1
  3. 马二进三
     马2进3
  4. 车一平二
     车9平8
  5. 马八进九
     卒1进1
  6. 炮八平七
     马3进2
  7. 车九进一
     车1进3
  8. 车九平六
     士6进5
  9. 马三进四
     象3进5
  10. 车二进六
     炮8平9
  11. 车二进三
     马7退8
  12. 马四进三
     炮9平7
  13. 相三进一
     马2进1
  14. 炮七退一
     马1退2
  15. 车六进四
     马8进9
  16. 马三进一
     象7进9
  17. 兵七进一
     马2退3
  18. 车六退一
     卒3进1
  19. 车六平七
     马3进2
  20. 炮七平二
     炮7平8
  21. 炮二进五
     卒5进1
  22. 炮二退一
     马2退4
  23. 车七平四
     车1平3
  24. 车四进二
     卒1进1
  25. 炮二进一
     卒1进1
  26. 马九退八
     卒1平2
  27. 炮二平六
     炮2进7
  28. 炮五进三
     车3进6
  29. 帅五进一
     车3退5
  30. 炮五退一
     车3平5
  31. 炮六平七
     士5退6
  32. 车四进一
     士4进5
  33. 车四平二
     将5平4
  34. 车二退五
     车5平4
  35. 帅五平四
     炮2退1
  36. 炮七平二
     车4进4
  37. 仕四进五
     车4退2
  38. 仕五退四
     车4进2
  39. 仕四进五
     车4退2
  40. 仕五退四
     象9退7
  41. 车二平九
     车4平5
  42. 车九进七
     将4进1
  43. 车九退五
     车5平6
  44. 帅四平五
     车6平5
  45. 帅五平四
     将4退1
  46. 兵三进一
     车5平6
  47. 帅四平五
     车6平5
  48. 帅五平四
     车5平6
  49. 帅四平五
     车6平4
  50. 兵三进一
     卒2平3
  51. 炮二退二
     卒9进1
  52. 车九平八
     炮2平1
  53. 兵三进一
     车4进2
  54. 帅五进一
     车4退1
  55. 帅五退一
     车4进1
  56. 帅五进一
     卒3进1
  57. 车八进五
     将4进1
  58. 炮二进四
     士5进6
  59. 帅五平四
     车4进1
  60. 帅四退一
     车4退3
  61. 兵三进一
     士6退5
  62. 车八平四
     象5进7
  63. 炮五退四
     卒3平4
  64. 相一进三
     车4平8
  65. 车四退三
     车8进2
  66. 帅四进一
     车8退1
  67. 帅四退一
     车8进1
  68. 帅四进一
     炮1退1
  69. 相三退五
     车8退1
  70. 帅四退一
     车8进1
  71. 帅四进一
     车8退1
  72. 帅四退一
     炮1退5
  73. 车四平六
     炮1平4
  74. 仕四进五
     车8进1
  75. 帅四退一
     车8退6
  76. 炮五平六
     将4退1
  77. 仕五进六
     将4平5
  78. 炮六进一
     车8进7
  79. 相五退三
     象7退5
  80. 帅四进一
     车8退4
  81. 炮二平五
     车8平6
  82. 帅四平五
     炮4进5
  83. 炮五平九
     车6平5
  84. 相三进五
     炮4平2
  85. 兵三平四
     车5平6
  86. 车六进二
     车6退4
  87. 车六平四
     炮2平3
  88. 相五进七
     炮3平4
  89. 炮六平九
     炮4退5
  90. 后炮进六
     炮4进7
  91. 后炮平八
     炮4退8
  92. 车四平六
     卒9进1
  93. 炮九进一
     卒9进1
  94. 炮八进二
  旋风1228剩1车,2炮,1相,pk240302剩1卒,2象,两软件分别放在44核和32核电脑上测试的,车炮残棋比较复杂的,这盘棋下了好几个小时!!!!!!比的车炮硬度,下得酣畅淋漓,淋漓尽致,痛快!痛快!
棋坛流窜犯!欢迎百度《棋软迷》,只收藏最好的棋软!
级别: 中尉
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [棋中蓝钻1级]乐币数量≥10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
379
金币
694
威望
2
贡献值
0
乐币
10
主题
41
只看该作者 26楼 发表于: 03-04
引用
引用第7楼azsaxxx于2024-03-03 11:10发表的  :
新建文本文档重新命名为pikafish.toml,用记事本打开文本文档,复制粘贴以下内容:
# Debug Log File type string default
# Threads type spin default 66min 1 max 1024
# Hash type spin default  1024 min 1 max 33554432
# Clear Hash type button false
.......

经鉴定此设置文件对楼主发的引擎无效。
棋坛流窜犯!欢迎百度《棋软迷》,只收藏最好的棋软!
级别: 少校
[棋中红钻4级]发帖数量≥1000篇 [棋中黄钻3级]金币数量≥2000枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
1851
金币
3274
威望
0
贡献值
0
乐币
5
主题
19
只看该作者 27楼 发表于: 03-04
回 26楼(蚂蚁大王) 的帖子
contempt 蔑视因子肯定没用,这是旋风专用的
级别: 上尉
[棋中红钻4级]发帖数量≥1000篇 [棋中黄钻2级]金币数量≥1000枚 [棋中蓝钻1级]乐币数量≥10枚 [棋中粉钻1级]贡献值数量≥1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
1075
金币
1094
威望
1
贡献值
2
乐币
10
主题
19
只看该作者 28楼 发表于: 03-04
引用
引用第26楼蚂蚁大王于2024-03-04 09:46发表的  :

经鉴定此设置文件对楼主发的引擎无效。

又被骗了吧,不是提醒过你嘛。
级别: 少校
[棋中红钻4级]发帖数量≥1000篇 [棋中黄钻3级]金币数量≥2000枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
1851
金币
3274
威望
0
贡献值
0
乐币
5
主题
19
只看该作者 29楼 发表于: 03-04
Bing AI皮卡鱼象棋引擎内置参数相关解释
五十铃发表于: 2023-11-04
以下内容来自皮卡鱼2023.04.08

提问:这是一份UCI协议的中国象棋引擎程序的配置文件,你帮我分析一下下列每项参数的含义。

Debug Log File type string default
Threads type spin default 1 min 1 max 1024
Hash type spin default 16 min 1 max 33554432
Clear Hash type button
Ponder type check default false
MultiPV type spin default 1 min 1 max 500
Skill Level type spin default 20 min 0 max 20
Move Overhead type spin default 10 min 0 max 5000
Slow Mover type spin default 100 min 10 max 1000
nodestime type spin default 0 min 0 max 10000
Sixty Move Rule type check default true
Mate Threat Depth type spin default 1 min 0 max 10
Repetition Fold type combo default TwoFold var TwoFold var RootThreeFold var ThreeFold
Repetition Rule type combo default AsianRule uar AsianRule uar ChineseRule var SkyRule
UCI_LimitStrength type check default false
UCI_Elo type spin default 1350 min 1350 max 2850
UCI_WDL Centipawn type check default true
UCI_ShowWDL type check default false
EvalFile type str ing default pikafish.nnue

以下内容来自Bing AI:

这是一份UCI协议的中国象棋引擎程序的配置文件,它包含了一些可以调节引擎性能和行为的参数。下面是每项参数的含义:

- Debug Log File type string default: 这个参数用于设置调试日志文件的路径和名称,如果为空则不生成日志文件。

- Threads type spin default 1 min 1 max 1024: 这个参数用于设置引擎使用的线程数,可以根据硬件性能和操作系统进行调整,一般来说,线程数越多,引擎的搜索速度和深度越快。

- Hash type spin default 16 min 1 max 33554432: 这个参数用于设置引擎使用的置换表的大小,单位是兆字节(MB),置换表是一种缓存机制,用于存储已经搜索过的局面和评估值,以避免重复搜索,提高搜索效率。一般来说,置换表越大,引擎的搜索质量越高,但也要考虑硬件的内存限制,如果设置过大,可能导致内存不足或者搜索速度变慢。

- Clear Hash type button: 这个参数是一个按钮,用于清空置换表中的数据,一般在开始新的对局或者分析时使用,以避免之前的数据对当前的搜索造成干扰。

- Ponder type check default false: 这个参数是一个开关,用于设置引擎是否在对手的回合进行思考,即预测对手的走法并提前搜索,这样可以节省时间,提高搜索深度,但也会增加硬件的负担,如果硬件性能不足,可能导致引擎反应变慢或者崩溃。

- MultiPV type spin default 1 min 1 max 500: 这个参数用于设置引擎输出的候选走法的数量,即多重主变量(Multi-PV),一般来说,引擎只会输出最佳的走法和对应的评估值,但有时候,用户可能想要看到其他的走法和评估值,以便进行比较和分析,这时候就可以通过调节这个参数来实现,但要注意,这个参数的增加会降低搜索的速度和深度,因为引擎需要花费更多的时间和资源来搜索和排序多个走法。

- Skill Level type spin default 20 min 0 max 20: 这个参数用于设置引擎的技能水平,即人工降低引擎的强度,以便和不同水平的用户进行对弈或者分析,这个参数的范围是0到20,0表示最低的水平,20表示最高的水平,一般来说,这个参数越低,引擎的搜索深度越浅,评估值越不准确,走法越不理想,反之亦然。

- Move Overhead type spin default 10 min 0 max 5000: 这个参数用于设置引擎的走法开销,即引擎在每次走棋时预留的时间,单位是毫秒(ms),这个参数的目的是为了防止引擎因为网络延迟或者其他原因而超时,一般来说,这个参数越大,引擎的走棋速度越慢,但也越安全,反之亦然。

- Slow Mover type spin default 100 min 10 max 1000: 这个参数用于设置引擎的走棋速度,即引擎在每次走棋时使用的时间百分比,这个参数的范围是10到1000,100表示正常的速度,即按照时间控制来分配时间,如果大于100,表示引擎会走得更慢,如果小于100,表示引擎会走得更快,一般来说,这个参数越大,引擎的搜索深度越深,走法越理想,但也越容易超时,反之亦然。

- nodestime type spin default 0 min 0 max 10000: 这个参数用于设置引擎的节点时间,即引擎在每次走棋时使用的固定的节点数,这个参数的单位是毫秒(ms),如果设置为0,表示不使用这个参数,而是按照时间控制来分配时间,如果设置为非零的值,表示引擎会在每次走棋时搜索固定的节点数,不管时间控制如何,这样可以使引擎的走棋速度更稳定,但也可能导致引擎的搜索质量不均匀,因为不同的局面的节点数可能差别很大。

- Sixty Move Rule type check default true: 这个参数是一个开关,用于设置引擎是否遵守六十回合和棋规则,即如果双方在六十回合内没有吃子或者移动兵,则判定为和棋,这个规则是国际象棋的规则,但是中国象棋没有这个规则,所以如果想要模拟中国象棋的规则,可以关闭这个参数,但要注意,这样可能导致引擎陷入无尽的循环,或者错过和棋的机会。

- Mate Threat Depth type spin default 1 min 0 max 10: 这个参数用于设置引擎的杀棋威胁深度,即引擎在搜索时是否考虑对手的杀棋威胁,以及考虑的深度,这个参数的范围是0到10,0表示不考虑对手的杀棋威胁,只考虑自己的杀棋威胁,这样可以提高搜索的速度,但也可能导致引擎忽略对手的致命的杀棋,如果大于0,表示引擎会考虑对手的杀棋威胁,以及对应的深度,这样可以提高搜索的质量,但也会降低搜索的速度,一般来说,这个参数越大,引擎的防守能力越强,但也越慢,反之亦然。

- Repetition Fold type combo default TwoFold var TwoFold var RootThreeFold var ThreeFold: 这个参数用于设置引擎的重复局面的处理方式,即引擎在搜索时遇到重复局面时如何评估,这个参数有三个选项,分别是TwoFold,RootThreeFold和ThreeFold,TwoFold表示引擎会折叠两次重复的局面,即如果一个局面出现两次,就认为是和棋,这样可以避免引擎陷入无尽的循环,但也可能导致引擎错过有利的局面,RootThreeFold表示引擎会折叠根节点三次重复的局面,即如果一个局面在根节点出现三次,就认为是和棋,这样可以避免引擎错过有利的局面,但也可能导致引擎陷入无尽的循环,ThreeFold表示引擎会折叠任意节点三次重复的局面,即如果一个局面在任意节点出现三次,就认为是和棋,这样可以避免引擎陷入无尽的循环,但也可能导致引擎错过有利的局面,一般来说,这个参数的选择要根据对局的目的和风格来决定,如果想要追求最佳的结果,可以选择TwoFold,如果想要模拟真实的对局,可以选择RootThreeFold,如果想要避免重复局面的影响,可以选择ThreeFold。

- Repetition Rule type combo default AsianRule var AsianRule var ChineseRule var SkyRule: 这个参数用于设置引擎的重复局面的判定规则,即引擎在对局时遇到重复局面时如何判定胜负,这个参数有四个选项,分别是AsianRule,ChineseRule,SkyRule和None,AsianRule表示引擎遵守亚洲规则,即如果一个局面出现三次,就判定为和棋,如果一个局面出现四次,就判定为先手输,这个规则是亚洲国际象棋联合会的规则,ChineseRule表示引擎遵守中国规则,即如果一个局面出现三次,就判定为先手输,这个规则是中国象棋协会的规则,SkyRule表示引擎遵守天天规则,即如果一个局面出现三次,就判定为后手输,这个规则是天天象棋的规则,None表示引擎不遵守任何规则,即不判定重复局面的胜负,只判定是否有杀棋,这样可以模拟无限循环的局面,但也可能导致引擎无法结束对局。

- UCI_LimitStrength type check default false: 这个参数是一个开关,用于设置引擎是否限制自己的强度,即人工降低引擎的强度,以便和不同水平的用户进行对弈或者分析,如果关闭这个参数,表示引擎不限制自己的强度,即使用最大的搜索深度和评估值,如果开启这个参数,表示引擎会根据另一个参数UCI_Elo来限制自己的强度,即模拟相应的等级分的水平。

- UCI_Elo type spin default 1350 min 1350 max 2850: 这个参数用于设置引擎的等级分,即引擎模拟的水平,这个参数的范围是1350到2850,1350表示最低的水平,2850表示最高的水平,一般来说,这个参数越高,引擎的水平越高,反之亦然,这个参数只有在UCI_LimitStrength开启时才有效,否则无效。

- UCI_WDL Centipawn type check default true: 这个参数是一个开关,用于设置引擎的评估值的单位,即引擎输出的评估值是以什么为单位,如果开启这个参数,表示引擎的评估值是以厘兵为单位,即每个棋子的价值是以兵为基准,一般来说,兵的价值是100厘兵,车的价值是900厘兵,马的价值是450厘兵,炮的价值是500厘兵,相的价值是250厘兵,士的价值是250厘兵,将的价值是无穷大,如果关闭这个参数,表示引擎的评估值是以胜率为单位,即每个局面的胜率是以百分比为基准,一般来说,胜率越高,表示局面越有利,反之亦然。

- UCI_ShowWDL type check default false: 这个参数是一个开关,用于设置引擎是否显示胜率,即引擎在输出评估值时是否同时输出胜率,如果开启这个参数,表示引擎会显示胜率,即每个评估值后面会跟着一个百分比,表示该评估值对应的胜率,如果关闭这个参数,表示引擎不显示胜率,即只输出评估值,不输出百分比,这个参数只有在UCI_WDL Centipawn开启时才有效,否则无效。

- EvalFile type string default pikafish.nnue: 这个参数用于设置引擎的评估文件的路径和名称,即引擎使用的评估函数的文件,评估函数是一种用于评估局面优劣的算法,一般来说,评估函数越准确,引擎的水平越高,这个参数的默认值是pikafish.nnue,这是一种基于神经网络的评估函数,它的优点是评估速度快,评估质量高,缺点是文件较大,需要较高的硬件性能,如果想要使用其他的评估函数,可以修改这个参数,但要注意,评估函数必须和引擎的版本和协议相匹配,否则可能导致引擎无法正常工作。
级别: 四级士官
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
130
金币
106
威望
0
贡献值
0
乐币
0
主题
1
只看该作者 30楼 发表于: 03-04
回 27楼(azsaxxx) 的帖子
旋风的contempt 蔑视因子只是个噱头!!!!!!!!!!!!!!!!!!!!!!!!!!!!




旋风象棋软件开了contempt 蔑视因子。遇到某些陌生的残局照样算不出正招。(排局也一样)!!!!!!!!!

因为现在的象棋软件主要缺陷都在中残局攻杀方面!!!!!!!!!

这就是为什么旋风名手等等收费软件要带残局库或审局库的原因。!!!!!!!!!!!!!!!!!!


2b1kar2/4a4/nr1cb1c2/1N1RC3p/C4Rp2/9/P1P3P1P/9/9/2BAKAB2 w - - 0 1
红车四平七绝杀正招。(纯人眼光招)多数软件短时间内都 是走炮九平三的平庸招!!!!!!!!!!!

上面这个是我看网上别人下棋的实战局面别人纯人秒走绝杀正招。可是软件要花好久才能算出正招。皮卡鱼更是要花一百多秒才算出正招。

注意皮卡鱼有怪问题。单独算这个局面多核可能 十几秒算出正招(我的机器要40多秒才能算到正招分)(这个局面皮卡鱼非常不稳定有时.算得快些。有时候却算得非常慢几百秒都算不到 正招)。但是前面加几步后再走到这个局面鱼就会卡很久才能算到绝杀正招。
级别: 少校
[棋中红钻4级]发帖数量≥1000篇 [棋中黄钻3级]金币数量≥2000枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
1851
金币
3274
威望
0
贡献值
0
乐币
5
主题
19
只看该作者 31楼 发表于: 03-04
中国象棋评估函数建模
  ⼀.简介:
    最近在做⼀个lua版的象棋(使⽤lua也没有考虑性能的问题,主要是想练习⼀下lua的使⽤),在象棋的PVE模式玩法中,AI的落⼦处理打算采⽤经典的alpha-beta算法(之后的博客会详细记录),采⽤这种算法的棋类游戏AI的核⼼是对象棋局⾯的评估(打分),以便AI能⾃⼰计算每种⾛法得到的结果好坏,⽐较得到最好的⾛法,因此必须有⼀个局⾯的评估函数。这⾥记录⼀下评估函数的建模⽅案的学习总结。评估函数的建模⽅案来⾃于论⽂:《中国象棋计算机博弈数据结构与评估函数的研究和实现》,作者谢艳茹,读者可以⾃⾏搜索这篇论⽂。
    评估函数:在象棋、围棋、军旗等等棋类游戏中,⼀个⾛法的优劣不是由⾛法单⼀决定的,如中国象棋中⾛了⼀步炮7平4,这⼀步可能就将对⽅将死,也可能刚好将炮送给对⽅等等。所以评估某⼀步棋的好坏时,不是评估这步棋本⾝,⽽是评估在⾛完这步棋后形成的局⾯中双⽅的实⼒对⽐,这个实⼒对⽐和双⽅棋⼦数量及种类、棋⼦灵活度(可⾛范围)、棋⼦的威胁值(棋⼦下⼀步可以吃对⽅棋⼦)、棋⼦的保护值(棋⼦下⼀步可以⾛到的位置刚好是⼰⽅棋⼦,就保护了这个棋⼦)等等有关,评估函数就是根据当前棋盘上的这些情况给棋盘打分的函数,这个分数就是评估值。评估函数建模的⽬的就是建⽴⼀个根据棋盘棋⼦分布情况得到评估值的函数公式,接下来我们就可以根据这个数学模型(公式)写出我们的评估函数代码。
  ⼆.评估函数建模
    1.评估函数和性能。参考:
      在建⽴评估函数模型前,有必要了解评估函数和性能的关系。评估函数模型并不是涉及到的变量越多越好(这种评估函数模型中运⽤到的各种变量和修正等我们可以称为知识),因为知识的增长会导致评估函数的计算时间变长,但是我们要直到AI的聪明程度不⽌和评估函数有关,还和搜索的深度(计算的步骤)有关,如果单个评估函数占⽤时间变长,相同时间内,搜索的深度就可能降低(可以这样理解,在不精简的情况下,在象棋中假如⼀个当前步骤我⽅棋⼦总共有35种⾛法,那么如果搜索深度为1时就需要评估35种棋盘;如果搜索深度为3时,即预测AI-玩家-AI可能的⾛法,就有35*35*35种棋盘需要评估,这是指数增长的运算量,因此当搜索深度⾜够深时,评估函数的运⾏时间的微⼩改变会被放⼤到不能忽视的地步,导致运⾏效率降低,要在相同时间内完成⾛法的选择,知识的增长就会导致搜索深度的降低)。所以在知识量增长到⼀定程度后,再增加知识量对AI的效率的提⾼就不再显著甚⾄负相关,所以有必要选择合适的知识量。
      这部分建模实际上是学习已有的建模⽅案然后对其的总结梳理,因此对知识量的选择上我不会下功夫,但是了解这部分内容我还是觉得很有必要。
    2.固定⼦⼒值。
      玩过象棋的⼈都知道,在下棋时,我们对有些棋⼦是格外在意的,如车、马、炮等,⽽有些棋⼦直到棋局的中后部分才开始动,我们开始是很少注意的,甚⾄会为了其他棋⼦增加可活动范围⽽主动送掉,如兵卒,这和我们对于棋⼦重要程度的评估有关。在象棋中,不同棋⼦的存在对棋局的影响是不⼀样的,我们⽤固定⼦⼒值来量化每⼀种棋⼦存在对棋局的影响,如将帅应该是⽆穷⼤的(⼀般使⽤⼀个远⼤于其他棋⼦⼦⼒值的值),⽽车是除将帅外最重要的棋⼦,所以数值也应该是最⼤的等。下⾯是论⽂中给出的各棋⼦的固定⼦⼒值:车950、马450、炮450、相200、⼠200、兵130、帅65536。最终的单⽅的⼦⼒值总分是将其所有棋⼦的⼦⼒值相加。
    3.棋⼦位置值
      在象棋中,⼀个棋⼦的存在会对局⾯造成影响,它的位置也同样对局⾯有影响,⽽且棋⼦在不同位置对局⾯的影响差别甚⾄可能⾮常⼤,如兵卒在未过河前和过河后、在地⽅九宫格附近和离九宫格较远时对对⽅的威胁程度就差别较⼤,因此不同棋⼦都有⼀个位置值得数组来评价其在不同位置对局⾯得影响。
      下⾯是棋⼦的位置值修正,我这⾥只采⽤兵的位置值修正,因为兵的位置对局势影响⽐较⼤,没有采⽤其他棋⼦的修正(主要为了精简算法,因为写这个项⽬的主要⽬的还是练习lua语⾔,⽽不是做AI或者⼈⼯智能之类的)


    4.棋⼦灵活度
      棋⼦的灵活度指棋⼦的可移动范围。在象棋中,棋⼦的可移动范围⼤⼩对于棋⼦能否发挥能⼒很重要,如蹩马腿、蹩象腿等操作都会降低对⽅棋⼦的灵活度。每⼀个棋⼦灵活度的计算就是计算棋⼦可⾛的格⼦数量,然后乘上这个棋⼦的灵活度系数(权重,每个棋⼦的重要程度不⼀样,所以提供⼀个系数对灵活度进⾏修正)。单⽅的棋⼦总灵活度是将所有棋⼦的灵活度相加。下⾯是各棋⼦的灵活度系数参考值:车7、马13、炮7、象1、⼠1、兵1.5、帅0。
    5.被威胁值
      被威胁值是指当前这个棋⼦处在多少个对⽅棋⼦的可移动位置上,也就是可能被吃,同样地,根据当前棋⼦的重要程度,它应该有⼀个权重修正,可以使⽤⼦⼒值进⾏修正。
    6.被保护值
      被保护值是指当前棋⼦处在多少个⼰⽅棋⼦地可移动位置上,也就是说这个棋⼦被吃后有多少个⼰⽅棋⼦能为⾃⼰“报仇”,这个值同样可以根据⾃⾝的⼦⼒值进⾏修正(同样被保护或者威胁,棋⼦的重要程度会对这种威胁或保护有影响)。
    7.棋盘范例
      在开局的过程中,有⼀些常⾛的棋盘范例(如当头炮,马先跳等),这些范例可以将棋盘保存下来,并保存⼀个主观赋予的评估值,然后在遇到相关棋盘时优先调取。也可以采⽤动态规划的思想,将已经计算过的棋盘评估值保存下来等。这⼀类的⽅法我都没有给予考虑。
    8.其他
  三.总结
    1.在⼆中我们讨论了⼏种评估棋盘的⽅式,实际求得的评估值可以将单⽅的这些量化数据求和或求差(如威胁值就有必要求差),然后将红⿊⽅的单⽅评估值做差,即可得到⼀个数值作为评估值⽤于代表当前局⾯是优于红⽅还是⿊⽅的,计算机可以据此作出着法的取舍;
    2.上⾯列出的评估项⽬还⽐较简要,评估所⽤的各种数值修正也仅作参考。这些数据往往是⼀个象棋游戏AI的核⼼部分,需要⼤量的实践让计算机⾃⼰修正或者⼈⼯修正,这就涉及到⼈⼯智能⽅⾯的内容了,所以我觉得没有必要深⼊。因为模型的粗糙,所以实际完成的AI很可能会出现智障⾏为,尽管如此,我也觉得可以了;
    3.我在模型中做了很多精简,主要考虑到做项⽬的⽬的是为了练习lua,没有必要在这⽅⾯耗费太多时间,因此这篇⽂章仅作为参考⽂章,也没有粘贴具体的实现代码,实际上就是我对于这部分内容理解的⼀个记录,所有内容仅供参考。如果您有兴趣了解更多关于中国象棋的知识,这个⽹站中的资料很不错,我也是主要看这个⽹站的资料理解象棋AI的算法实现的。
级别: 少尉
[棋中红钻1级]发帖数量≥10篇 [棋中黄钻2级]金币数量≥1000枚 [未点亮棋中蓝钻]乐币数量<10枚 [棋中粉钻2级]贡献值数量≥5点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
95
金币
1760
威望
0
贡献值
9
乐币
2
主题
1
只看该作者 32楼 发表于: 03-04
回 26楼(蚂蚁大王) 的帖子
肯定的,这个功能在2023年3月底已经取消了
棋坛流窜犯!欢迎百度《棋软迷》,只收藏最好的棋软!
级别: 中尉
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [棋中蓝钻1级]乐币数量≥10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
379
金币
694
威望
2
贡献值
0
乐币
10
主题
41
只看该作者 33楼 发表于: 03-04
回 28楼(唯此为大) 的帖子
哈哈,我是故意这么啰啰嗦嗦的,让大家多了解。这问题以前佳佳引擎身上表演过。
棋坛流窜犯!欢迎百度《棋软迷》,只收藏最好的棋软!
舟遥遥以轻扬  风飘飘而吹衣
级别: 少尉
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [棋中蓝钻1级]乐币数量≥10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
265
金币
739
威望
0
贡献值
0
乐币
18
主题
5
只看该作者 34楼 发表于: 03-04
如果您有兴趣了解更多关于中国象棋的知识,这个⽹站中的资料很不错
舟遥遥以轻扬  风飘飘而吹衣
级别: 四级士官
[棋中红钻2级]发帖数量≥100篇 [棋中黄钻1级]金币数量≥100枚 [未点亮棋中蓝钻]乐币数量<10枚 [未点亮棋中粉钻]贡献值数量<1点 [未点亮棋中彩钻]精华帖数量<1篇
发帖
196
金币
253
威望
0
贡献值
0
乐币
0
主题
0
只看该作者 35楼 发表于: 04-20
感谢艰辛付出5,棋中有你更精彩。
快速回复

限56 字节
请不要在回贴只采用字母:“ PP、asdfhjkl、HAO、OK、ddddddd ......”。  请不要在回贴过于简单的内容:“不错、顶、支持、厉害、呵呵、靠、晕........”
 
验证问题: 本站网址是?不带http://
上一个 下一个