这学期上了一门云计算与大数据的课程,课程设计是要求做一个基于大数据的人工智能象棋出来。整体来说还是比较有难度的,平常都是在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,不用换,这个看你是访问服务器上的数据库还是本地的数据库,如果远程访问,需要开放权限,以及这个可能涉及到跨域问题,前端发送的请求路径也不能够写成绝对路径了。

基于大数据的人工智能象棋相关推荐

  1. Py之pyecharts:基于大数据对人工智能进行各种可视化图表分析

    pyecharts:基于大数据对人工智能进行各种可视化图表分析 目录 1. Bar(柱状图/条形图) 2 EffectScatter(带有涟漪特效动画的散点图) 3 .Funnel(漏斗图) 4.Ga ...

  2. 腾讯云交通云总经理冯宇彦:基于大数据与人工智能的智慧交通云

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲人:冯宇彦--腾讯云交通云总经理 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来"峰会 ...

  3. 腾讯冯宇彦:基于大数据与人工智能的智慧交通云

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 演讲人:冯宇彦–腾讯云交通云总经理 背景:5月23-24日,以"焕启"为主题的腾讯"云+未来"峰会在 ...

  4. 基于大数据的人工智能应用-周靖人

    随着互联网的高速发展,数据量爆发式地增长,数据维度越来越丰富,这些都为机器学习.人工智能的发展和应用提供了良好的土壤.同时,人工智能的成果也反过来让数据产生更大的价值,成为真正的"智能数据& ...

  5. 注册消防工程师考试模拟学习系统基于大数据、人工智能、3D系统研发

    Markov Chains 由 state 和 transitions 组成 栗子,根据这一句话 'the quick brown fox jumps over the lazy dog',要得到 m ...

  6. 详解云计算、大数据和人工智能的区别与联系

    今天跟大家讲讲云计算.大数据和人工智能.为什么讲这三个东西呢?因为这三个东西现在非常火,并且它们之间好像互相有关系:一般谈云计算的时候会提到大数据.谈人工智能的时候会提大数据.谈人工智能的时候会提云计 ...

  7. 谷俊丽:基于大数据的深度学习

    嘉宾介绍:谷俊丽,博士学历,毕业于清华大学-美国University of Illinois Urbana-champaign大学,在清华期间作为核心人员研发过超长指令字数字信号处理器,在美期间曾参与 ...

  8. 【转】谷俊丽:基于大数据的深度学习

    对于我这种小白,还比较通俗易懂,顺便也介绍了深度学习一些概况,留着有用! 嘉宾介绍:谷俊丽,博士学历,毕业于清华大学-美国University of Illinois Urbana-champaign ...

  9. 不是技术也能看懂云计算,大数据,人工智能

    我今天要讲这三个话题,一个是云计算,一个大数据,一个人工智能,我为什么要讲这三个东西呢?因为这三个东西现在非常非常的火,它们之间好像互相有关系,一般谈云计算的时候也会提到大数据,谈人工智能的时候也会提 ...

  10. 云计算openstack——云计算、大数据、人工智能(16)

    一.互联网行业及云计算 在互联网时代,技术是推动社会发展的驱动,云计算则是一个包罗万象的技术栈集合,通过网络提供IAAS.PAAS.SAAS等资源,涵盖从数据中心底层的硬件设置到最上层客户的应用.给我 ...

最新文章

  1. 最新!3D目标检测论文汇总(多模态融合)
  2. 结构体、类的成员对齐
  3. java更改包名称_更改Java包名称如何改变我的系统架构
  4. (计算机组成原理)第一章计算机系统概述-第四节:计算机的性能指标
  5. 在生成.net core 3.0程序时不包含nuget库
  6. python画正方形的代码drawingpanel_wxpython编程之 画板(一个不错的研究的完整示例)...
  7. java中的greeting_JAVA基础知识——字符串
  8. STL模板整理 priority_queue
  9. 恭贺武汉大学国际软件学院考生集体通过LPI一级认证
  10. 【Proteus】单片机H桥驱动24V直流有刷电机
  11. 电脑没有“立体声混音”设备怎么办,虚拟声卡安装教程
  12. 解决pycharm下载第三方库失败
  13. 数字信号处理FFT快速傅立叶变换MATLAB实现——实例
  14. 【JS】通过JS实现超市小票打印功能——ActiveX控件
  15. 开始读《C专家编程》
  16. AI人工智能在当前和未来社会的应用领域
  17. Android应用全屏显示
  18. Java实验——定义一个类,该类中包含以下几个方法(静态):实现两个字符串数组的逆序排序,输出结果为字符串数组;求两个整形数组的交集;求两个浮点型数组的并集;
  19. 基于SpringBoot的企业人事管理系统
  20. 易玩通总显示服务器没响应,《魔力宝贝》官方网站|经典魔力 新鲜乐趣

热门文章

  1. ibm 服务器 win7系统安装,最详细thinkpad win7系统重装教程
  2. java开发和android开发_浅谈Java开发和Android开发的不同
  3. JDK与API下载与使用
  4. 第一天:Drools环境搭建配置
  5. 解决Linux下路径过长一行无法显示的问题
  6. mciSendCommand对本地音乐的播放
  7. UNIX环境高级编程习题——第七章
  8. 基于javaweb的银行柜员绩效考核系统
  9. html自动增加vbs代码,vbs烟花代码
  10. 旋风加速浏览器安卓android,旋风加速浏览器