热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

基于大数据的人工智能象棋

这学期上了一门云计算与大数据的课程,课程设计是要求做一个基于大数据的人工智能象棋出来。整体来说还是比较有难度的,平常都是在Win10环境下进行开发部署&

这学期上了一门云计算与大数据的课程,课程设计是要求做一个基于大数据的人工智能象棋出来。整体来说还是比较有难度的,平常都是在Win10环境下进行开发部署,现在要求部署到服务器上面,就会遇到各种各样的问题。


文章目录

    • 基于大数据的人工智能象棋
      • 项目简介
      • 实现方案
        • 前端
        • 后端
          • 下棋接口
          • 学习接口
      • 数据库
      • 爬虫+数据处理
      • 部署+整合
          • 购买服务器
          • 安装xftp6和xshell
          • 在服务器上安装java、mysql、tomcat
          • 在阿里云的管理控制台打开防火墙8080的端口
          • 在解压好的tomcat/bin下启动tomcat,./startup.sh,就可以访问服务器了
          • sql脚本导入
          • 用Maven将项目打包成war包,发送到服务器tomcat/webapps下
          • 查看日志文件,tomcat/logs下的catalina.out可以查看tomcat的日志报告。
          • 通过互联即可进行访问
          • 数据库连接问题


基于大数据的人工智能象棋


项目简介

实现一个能够通过互联网访问的,基于大数据的简单的人工智能象棋。


实现方案


前端

前端方面是老师直接给了代码,http://avatarsys.org:8007/chess.html,整个页面是用canvas实现的,代替了用图片表示象棋棋子的传统方式。但是只提供了点击下象棋,限制象棋走法等基本的功能,对于后边提及到的功能均要求自己实现。
在这里插入图片描述
图1 是整个页面的布局,横轴为0-8和纵轴为0-9,图二上的坐标(x,y)标记了每个棋子,它们是独一无二的。这样,通过一段64位的字符串即可代表整个棋盘的即时布局状态,比如,棋盘的初始状态为( - 是让大家方便看清楚,实际上是不存在的):
00102030405060708012720323436383 - 89796959493929190977178666462606

这样页面发生任何变动都可能通过64位的字符串来了解到是如何变化的。上面就是整个页面布局的介绍。所以,用户(默认是红方)每走一步,前端都会发送一个请求,将当前页面的棋局状态(64位的字符串)发送给后端,使得后端能够根据这段字符串进行处理。后端会响应回来一个四位的字符串(后端部分会在下面介绍),这四位字符串代表黑方(即机器人)要怎么走,比如返回 “0001”,即黑方的左上角的车要向下挪一格。那么前端接受到这四位字符串,要更新页面,然后切换控制权给用户,让用户继续下棋。

在下棋的过程中,可能会遇到机器不会走的情况,那是因为我们爬取的数据不够多,不能够覆盖所有情况,所以我们要让机器自己学习。我们小组的想法是这样的。遇到机器不会走的情况,将黑方控制权给用户,让用户帮我们下,学习用户的下法,不同的用户遇到这样的棋局是如何下的,统计该棋局下每个用户的走法,遇到新的走法则记录,遇到同样的走法则其数据库字段的频率+1,后端查询时即根据最高频率进行选择(即选择最多人走的走法)。由于时间关系,我们小组没有做用户登录的功能,所以无法根据用户来学习,只实现了很简单是不懂就学习,学完之后它的频率是一直都是1,不会进行优化学习的。

在这个学习的过程中,前端要做的就是记录红方走前的棋局状态,称为chessStatus1,记录用户控制黑方走之后的棋局状态,称为chessStatus2,将两个棋局状态发送给后端,保存到数据库中。然后再讲控制权切换回给红方。

上面就是前端大概功能和做法了,其实最难的还是生成棋盘状态部分。这部分不是我负责的,所以也不好写。嘿嘿,这里就懒得去理解解释了。狗头保命。


后端

我负责的是后端的部分,用Maven搭建的骨架,语言选择的是JAVA,编译器是IDEA,框架使用了SSM,数据库是MYSQL。后端部分的代码比较少。老师要求用REST风格来写,这里只写了两个API,GET是下棋接口,POST是学习接口。
在这里插入图片描述


下棋接口

前端发送过来的是chessStatus,调用Service到数据库进行查询,如果没有就返回"null",如果找到了最优棋盘status,则要进行处理。其实就是要将两个棋局进行比较,就是一个寻找两个字符串中不同字符的算法(不同的字符最多有两个,最少有一个),因为我们要返回的是某个棋子的变化动作,棋子走一步可能它的(x,y)坐标只有一个变化了,也可能是 x 和 y 都变了,所以有些特殊情况进行处理,代码如下。
在这里插入图片描述


学习接口

这就非常简单了,直接插入数据就行了
在这里插入图片描述


数据库

数据库表(就一张表)及字段
在这里插入图片描述


爬虫+数据处理

嘿嘿,这两部分也是其他人负责的,整个项目就这两部分最重要了。这里就简单贴一下他们写的思路吧。
在这里插入图片描述


部署+整合

部署是部署在阿里云的服务器上边,这个过程还是比较复杂的,有很多坑。


购买服务器

阿里云的地址:https://www.aliyun.com,我买的是轻量级服务器,系统选的是ubuntu18.04,学生认证,一个月10块钱,相当于白嫖,购买完进去之后,设置用户名和密码就可以使用了。
在这里插入图片描述


安装xftp6和xshell

想要通过本地直接访问远程服务器可以使用xshell,想要向服务器传输文件可以使用xftp6,这两款软件都挺好用的,隶属于NetSarang的软件。然后在两款软件上配置一下主机地址即公网ip、用户名和密码就可以访问到我们的服务器了。
在这里插入图片描述


在服务器上安装java、mysql、tomcat

这部分大家上网搜一下教程就可以了。要提醒的一点就是,mysql安装完之后一定要记得取消无密访问的设置,然后配置好用户名和密码,不然后面连接会出问题。


在阿里云的管理控制台打开防火墙8080的端口

在这里插入图片描述


在解压好的tomcat/bin下启动tomcat,./startup.sh,就可以访问服务器了

在这里插入图片描述


sql脚本导入

mysql -u root -p xxx; 进入数据库
use bigdata_aichess;使用该数据库
source ./chessdata.sql 运行脚本文件


用Maven将项目打包成war包,发送到服务器tomcat/webapps下

在这里插入图片描述


查看日志文件,tomcat/logs下的catalina.out可以查看tomcat的日志报告。

通过互联即可进行访问

在这里插入图片描述


数据库连接问题

前端发送请求的路径,要改换成公网的ip,SSM连接数据库的配置文件,例如db.properties要下的jdbc.url还是localhost,不用换,这个看你是访问服务器上的数据库还是本地的数据库,如果远程访问,需要开放权限,以及这个可能涉及到跨域问题,前端发送的请求路径也不能够写成绝对路径了。


推荐阅读
author-avatar
泥泥的春天_565_576
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有