首页 > 范文大全 > 正文

五子棋博弈平台的设计与应用

开篇:润墨网以专业的文秘视角,为您筛选了一篇五子棋博弈平台的设计与应用范文,如需获取更多写作素材,在线客服老师一对一协助。欢迎您的阅读与分享!

摘要:棋类游戏是博弈的规则和思想的完美体现,很多算法技术都可以运用在棋类游戏中。五子棋相比其他棋类,规则更简单易学,适合用于博弈算法的研究。一个五子棋博弈平台的搭建,有利于不同博弈算法之间的比较研究以及改进。该文首先介绍了五子棋博弈平台的设计。该平台是包括一个服务器和两个客户端的三层C/S架构平台,主要用于五子棋博弈算法之间的对弈。其次,该文以遗传算法及搜索树算法的对弈为例,展示了该平台的应用

关键词:五子棋;博弈算法;三层C/S架构

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)09-2292-05

Abstract: Chess game is the perfect embodiment of the rules and thought of the game playing algorithm. Many algorithms can be used in it. Since its rules are much easier compared to the other chess games, Gobang is more suitable for the study of game playing algorithm. First of all , my paper shows how this Gobang game platform , which contains a server and two client based on the three-layer C/S architecture , was designed . Then, since it’s mainly used for the comparison of Gobang game algorithms , Genetic algorithms and search tree algorithm were used as examples to show how this platform works.

Key words: gobang;game playing algorithm;three-layer clent/severachitecture

人工智能作为一门正在迅速发展的新兴的综合性很强的边缘科学,与生物工程、空间技术一起被并称为当今世界三大尖端技术。它的中心任务是研究如何使用计算机去做那些过去只能靠人的智力做的工作。机器博弈是人工智能的一个重要研究分支也是研究热点之一。简单来说,机器博弈就是让计算机像人一样从事需要高度智能的博弈活动。它为人工智能提供了一个很好的试验场所[1]。棋类游戏是博弈的规则和思想的完美体现,很多算法技术都可以运用在棋类游戏中。五子棋相比其他棋类,如象棋、围棋,规则更简单易学,适合用于博弈算法的研究。该文出于学术目的详细介绍了五子棋博弈平台的设计与实现,并在测试部分对遗传算法和博弈树算法两个算法在五子棋博弈中的应用进行了比较。从两者的比较可以看出,使用本平台可以直观地比较两个五子棋博弈算法各方面的好坏差异,对五子棋博弈算法的学术研究具有很好地指导意义。

1 平台设计

本平台主要为两个五子棋博弈算法提供博弈平台,是一个包含一个服务器和两个客户

端的三层C/S架构平台。服务器端监听客户端,处理客户端发送的请求。两个客户端上运行客户端决策程序,发送指令给服务器,服务器根据五子棋规则进行判断,控制双方进行比赛,要求服务器端和客户端都可以观看比赛过程。

1.1 架构设计

三层C/S结构是将应用功能分成表示层、业务逻辑层和数据访问层层三部分。其解决方案是:对这三层进行明确分割,并在逻辑上使其独立。区分层次的目的即为了“高内聚,低耦合”的思想。原来的数据层作为DBMS已经独立出来,所以关键是要将表示层和业务逻辑层分离成各自独立的程序,并且还要使这两层间的接口简洁明了。三层架构软件模型如图1所示:

其中,表示层是应用的用户接口部分,它担负着用户与应用间的对话功能。它用于检查用户从键盘等输入的数据,显示应用输出的数据。业务逻辑层相当于应用的本体,它是将具体的业务处理逻辑地编入程序中。数据访问层则负责管理对数据库数据的读写。这种架构的系统基本工作流程如图2所示:

由图3可以看出,三层C/S架构具有以下优点:

1) 扩展性强。不同层负责不同的层面,可以很容易的用新的实现来替换原有层次的实现。

2) 开发人员可以只关注整个结构中的其中某一层,项目结构更清楚,分工更明确,有利于后期的维护和升级。

3) 低耦合。大大降低了层与层之间的依赖。

4) 可复用性强。

5) 安全性高。用户端只能通过逻辑层来访问数据层,减少了入口点,把很多危险的系统功能都屏蔽了。

可以看出,该架构很适合五子棋博弈平台的开发,因此,设计本系统架构如图3所示:

2.2 详细设计

2.2.1 系统层次划分

根据博弈平台的三层C/S架构,设计系统层次如图4所示:

其中,界面层相当于表示层,主要负责显示初始棋盘和棋盘的后续更新;由于本博弈平台不存在数据库部分,因此剩下部分均对应业务逻辑层。其中,控制层负责接受各种信息并交由策略层(或规则层)进行必要的判断处理,然后把处理后的各种信息的更新通知通信层;通信层负责通过网络实现各种信息的交互;Client端的策略层主要由五子棋博弈算法组成,用于通过当前棋盘状态计算得出下棋点;Server端的规则层存放五子棋的各种规则。

为了达到更好的灵活性,策略层和规则层都留有接口,可以实现策略和规则的替换。策略的替换便于各种不同博弈算法的比较;规则的替换则可以把五子棋博弈系统变化成其它游戏的博弈平台。

2.2.2 系统功能设计

2.2.2.1 服务器端功能设计

A.Server通信层

该层要完成以下功能:

a.建立与Client的通信

b.监听ClientA,随时接收在控制时间内ClientA发来的消息;等待ClientA超时时,向Server控制层发送异常消息。

c.将Server的数据发送给ClientA(或者ClientB)。

B.Server规则层

该层就是存放一些五子棋走棋的规则,在上面五子棋规则中已经说明。

C.Server控制层

a.接收Server通信层发来的消息。

b.根据Server的规则层的规则处理Server通信层发来的消息。

c.向Server通信层和界面层发送处理后的消息。

d.控制ClientA和ClientB的同步。

D.Server界面层

a.接收Server控制层传来的数据。

b.显示棋子坐标和胜负。

c.显示Client负时的形成原因。

2.2.2.2 客户端功能设计

A.Client通信层(以CLientA为例)

a.建立与Server的连接;

b.将每次从Server接收的消息传给Client控制层;

c.发送策略决策的数据包到Server通信层。

B.Client 控制层

a.接收Client通信层的消息;

b.有一个棋盘的状态,对消息进行解析后更新棋盘状态;

c.将这个棋盘状态的更改信息通知Client的界面层和决策层。

C.Client策略层

a.接收Client通信层发来的当前棋盘矩阵状态。

b.根据自己的策略和当前棋盘矩阵状态,必须在限定时间(与Server监听时间相同)内形成下一步棋子行走坐标。

c.判断自己是否是黑方,若是,还要根据禁手规则形成下一步棋子行走坐标。

D.Client界面层

a.接收Client通信层传来的数据。

b.显示Client行走的坐标和胜负信息。

2.2.3 系统流程图

根据博弈平台的功能,设计系统流程图如图5所示。

2.2.4 平台实现

根据以上设计,用C#语言实现该平台。五子棋博弈平台的交互过程总结如下:

A.服务器开启服务,等待客户端连接。

B.一方客户端连接服务器,若连接成功,则更改此方客户端的连接状态为已连接,同时服务器控制层新建一个线程A,将当前客户端数目加1。

C.另一方客户端连接服务器,若连接成功,则更改此方客户端的连接状态为已连接,同时服务器控制层新建一个线程B,将当前客户端数目加1。

D.此时服务器控制层判断当前已连接的客户端数目是否为2,若是,则服务器给A,B发送一个可以开始游戏的信息,此信息中包含棋子的颜色,A为黑色,B为白色。服务器要等待双方客户端都点击开始游戏后才发送一个信息给所有客户端,客户端控制层解析此信息后才能运行策略,发送坐标信息。

E.客户端控制层发送策略决定的坐标前,要检查_myTurn的值,若为true,则可以发送,发送坐标后,要把_myTurn改为false。此后,只有当服务器发送给该客户端的信息是坐标时,才可以把_myTurn的值更改为true。

F.服务器接收到某客户端发来的坐标信息后,将其交给规则库中的规则去检测,如果全部通过,说明该客户端发来的走棋坐标是合法的,控制层就要更改State对象的Panel数组对应的坐标值为该客户端棋子颜色对应的数值。并发送给该客户端一个OK信息,表示该走棋合法,同时要把此坐标发送给另一个客户端,让其作出相应的决策。这样依次循环,进行博弈。

G.若根据规则判断该步走法的坐标不合法,则控制层可以发送该方输信息,另一方赢信息。

H.若该步走后已形成5子连珠,则服务器控制层要发送该方赢信息,另一方输信息。

3 平台应用

本平台的主要作用提现在对五子棋博弈算法的研究中。下面在本平台上用遗传算法[2]、[3]分别与传统博弈树算法(下称算法1)和网络上流行的另一五子棋博弈算法(下称算法2),进行博弈,应用结果如下。

3.1 实验结果对比

1)各算法落子时间比较

各算法走一步需要的平均时间如表1所示,其中i为遗传算法收敛条件中的参数,其意义为:如果连续i代适应度函数值都不再增加或连续i代求出的落子点都不再变化,则算法收敛。

2)每局平均落子数比较

遗传算法与算法1、算法2对弈时每局平均落子数如表2所示:

3)胜率比较

遗传算法与算法1、算法2对弈时胜率比较如表3所示:

4)实验结果截图

4 结束语

通过以上分析可以看出,本平台在五子棋博弈算法的研究比较中具有很大的意义。首先,本平台应用简单,不同的五子棋博弈算法可以轻松导入应用在该平台上。使用者不用过多关注平台的搭建,只用将注意力集中在算法上即可。其次,通过这些算法在平台上的多次运行,可以简单分析出博弈算法实际运行时的各种参数,以此评判算法的优劣。最重要的是,算法设计者可以依据所得算法参数有针对性的对算法进行改进。

参考文献:

[1] 人工智能――复杂问题求解的结构和策略[M].史忠植,译.北京:机械工业出版社,2004:101-131.

[2] 王小平,曹立明.遗传算法:理论、应用于软件实现[M].西安:西安交通大学出版社,2002.

[3] 马占欣,李亚,陆玉晶.用遗传算法解决博弈问题[J].河南科学,2007,25(2):273-277.