中国象棋人工智能算法的实现vb.net

123工艺品 2020-02-16 03:52:36
自己写了个,博弈树搜索不会alpha/beta剪枝了。。。

哪位大佬讲一下,谢谢!


...全文
596 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
清晨曦月 元老 2020-02-22
  • 打赏
  • 举报
回复
亲,你不能这样写,会非常慢的。去参考一下位棋盘。
你得到招法之后,遍历这些招法,每走一个招法,调用一次当前函数,而后撤销招法,之后得到局面评价并返回。
你这差点还远着呢,还是去看基础知识吧,理解博弈树的递归遍历,学会设计递推函数,位棋盘——招法生成、评价、撤销
123工艺品 2020-02-19
  • 打赏
  • 举报
回复
 
Public Function getZhuiJiaZF() As myZhaoFa '得到当前局面的最佳着法,极大值
Dim listall As List(Of myZhaoFa) = getallzhaofa() ‘得到当前局面所有招法,
Dim zf As New myZhaoFa
If listall.Count > 0 Then
Dim jmfList As New List(Of Point)
For li As Integer = 0 To listall.Count - 1
jmfList.Add(getzfJuMianFen(listall.Item(li)))’将局面分汇总
Next
zf = listall.Item(getJMFListbest(jmfList))‘得到最大的局面分的索引,返回招法
End If
Return zf
End Function
Public Structure myZhaoFa '新结构,着法
Dim v As Integer ' 棋子的值
Dim startedP As Point '着法起点
Dim endedP As Point '着法落点
End Structure


上边代码为极大值搜索,但只能搜一层。
哪位帮改写一下,使其可搜多层。(只用极大值不考虑极小值)
谢谢了!
清晨曦月 元老 2020-02-19
  • 打赏
  • 举报
回复
看了一眼,CSDN博客上我写的不太详细,可以参考一下博客园的。
https://www.cnblogs.com/zcsor/tag/五子棋/
清晨曦月 元老 2020-02-19
  • 打赏
  • 举报
回复
你可以参考一下我的博客上面五子棋的代码,也是用alpha-beta剪裁做的,只是五子棋没有空步剪裁。
如果能看懂C++代码,可以去看一下象棋巫师的源码,是开源的。
github_36000833 2020-02-17
  • 打赏
  • 举报
回复
假设我方有几个备选方案: 1、象三进五 2、左炮进六 3、。。。 方案一,对方有8个应对,搜索全部8个应对后,知道他最佳应对的结果是,我方的局势将差一兵。 现在继续评估方案二,对方还是有8个应对,第二种应对下,我放将损失一个马。 这种情况下,我们无需继续评估对方的3~8种应对,甚至无需知道第4应对还可以将死我方。 因为如果我方【左炮进六】,将至少损失一个马,结果一定比【象三进五】差。 省略方案二对方3~8应对的搜索,就是alpha/beta剪枝。 简单的比喻就是,有白饭和水饺,如果知道水饺馊了,就不要刨根问底全部吃完,就为了知道它有多馊多难吃。

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧