- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
觉醒程序设计说明
全国大学生计算机博弈大赛暨全国锦标赛
参赛程序设计说明
所在单位(院校) 沈阳航空航天大学
参赛项目(棋类) 爱恩斯坦棋
软件名称(中文) 觉醒
软件名称(英文) waraness of future
软件第一作者(签名)
软件其他作者
填表日期: 2013 年 8月 9 日
一、软件成长历程
二、软件参考文献(包括纸质或电子)
1. 朱福喜 编著,人工智能基础教程, 北京:清华大学出版社,2011.06
2.徐心和, 邓志力等. 机器博弈研究面临的各种挑战[J],智能系统学报,2008, 3(4):288-293.
3.徐心和, 王艳, 刘纪红, 张雪峰. 博弈论的里程碑成果与局限性分析[A],中国控制与决策会议[C],2008:1214-1219.
4人工智能/丁世飞编著, 北京:清华大学出版社,2011.01
5知识发现/史忠植著,北京:清华大学出版社,2011.01
6人工智能/王万森编著, 北京:人民邮电出版社,2011.03 三、软件技术要点或创新性工作
1.“觉醒”蒙特卡洛算法流程
1)随机掷出下一次要走的棋子,ChessX
2)假设棋子向某一方向移动如向左移动,Move(ChessX,Left)
3)虚拟给对方掷出棋子,NextChess
4)调用极大极小算法估计对方走哪一方向最有利,MaxDir(NextChess)
5)虚拟对方走我所估计的那个方向,Move(NextChess,MaxDir)
6)判断此时棋局是否已,GameOver(ChessTxt)
7)如果,14),GameOver=True, Goto 14)
8)虚拟给自己掷棋子,NextChess9) 调用极大极小算法估计我方走哪个方向最有利,MaxDir(NextChess)
10) 虚拟我方走估计的那一步,Move(NextChess,MaxDir)
11)判断是否已,GameOver(ChessTxt)12)如果,进入14),GameOver=True, Goto 14)
13) 重复3)到13)N次
14)调用评估函数ChessTxtVa评估当前局面ChessTxt的价值Val累加向左走的价值到ValLeft中ValLeft=ValLeft+Val),重复第2步到第14步M次
(上述过程中M表示棋子在某个方向上模拟运算的次数,N表示每次模拟运算的模拟深度如M=100,N=7,表示棋子在每个方向上模拟运算100次,模拟走7步棋为一次模拟运算。)
15) 用上述算法分别计算出棋子走不同方向的价值,如蓝方棋子的ValRightValTop,
ValBevel。找出三个方向价值最大方为最优下棋方向BestDir(ValRightValTop,ValBevel)
16)移动棋子Move(ChessX,BestDir)。
2.极大极小算法
模拟的每颗棋子走哪个方向较好,需要进行评估。虚拟出三步内所有可能出现的棋局,用局面评估函数评估出每种局面的权值,由第三层的棋局权值推出第二层棋局的权值,再由第二层的棋局权值推出第一层局面的权值。找出第一层中权值最大的局面,即可找出该棋子下哪个方向较好。算法如下:
1)掷出我方要下的棋子(MoveChess)
2)模拟走每个它能走的方向(MoveDir),走不同方向作为不同棋局(ChessTxt)保存在第一层棋局库中(ExpandChess1())
3)从第一层棋局库中取出一个棋局,模拟该棋局中对方所有存在的棋子(LiveChess)走其所能走的所有方向(MoveDir)作为不同棋局保存在第二层棋局库中(ExpandChess2())
4)如果第一层棋局库中棋局没有被取完继续第3步
5)从第二层棋局库中取出一个棋局,模拟该棋局中我方所有存在的棋子走其所能走的所有方向作为不同棋局保存在第三层棋局库中(ExpandChess3())
6)如果第二层棋局库中棋局没有被取完继续第5步
7)调用局面评估函数ChessTxtVal评估出第三层棋局库ExpandChess3()中所有棋局ChessTxt的权值
8) 由第三层的棋局权值推出第二层每个棋局的权值
9) 再由第二层的棋局权值推出第一层每个局面的权值
10)找出权值最大的局面以及其下棋方向MoveDir
11) 虚拟下棋,Move(MoveChess,MoveDir)
3.局面价值评估
一个棋局的价值(ChessTxtVal)由其存在棋子(LiveChess)的价值(Chess
文档评论(0)