热门标签 | 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,不用换,这个看你是访问服务器上的数据库还是本地的数据库,如果远程访问,需要开放权限,以及这个可能涉及到跨域问题,前端发送的请求路径也不能够写成绝对路径了。


推荐阅读
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了Hyperledger Fabric外部链码构建与运行的相关知识,包括在Hyperledger Fabric 2.0版本之前链码构建和运行的困难性,外部构建模式的实现原理以及外部构建和运行API的使用方法。通过本文的介绍,读者可以了解到如何利用外部构建和运行的方式来实现链码的构建和运行,并且不再受限于特定的语言和部署环境。 ... [详细]
  • flowable工作流 流程变量_信也科技工作流平台的技术实践
    1背景随着公司业务发展及内部业务流程诉求的增长,目前信息化系统不能够很好满足期望,主要体现如下:目前OA流程引擎无法满足企业特定业务流程需求,且移动端体 ... [详细]
  • C++字符字符串处理及字符集编码方案
    本文介绍了C++中字符字符串处理的问题,并详细解释了字符集编码方案,包括UNICODE、Windows apps采用的UTF-16编码、ASCII、SBCS和DBCS编码方案。同时说明了ANSI C标准和Windows中的字符/字符串数据类型实现。文章还提到了在编译时需要定义UNICODE宏以支持unicode编码,否则将使用windows code page编译。最后,给出了相关的头文件和数据类型定义。 ... [详细]
  • 本文介绍了iOS数据库Sqlite的SQL语句分类和常见约束关键字。SQL语句分为DDL、DML和DQL三种类型,其中DDL语句用于定义、删除和修改数据表,关键字包括create、drop和alter。常见约束关键字包括if not exists、if exists、primary key、autoincrement、not null和default。此外,还介绍了常见的数据库数据类型,包括integer、text和real。 ... [详细]
  • Iamtryingtomakeaclassthatwillreadatextfileofnamesintoanarray,thenreturnthatarra ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • 本文介绍了PhysioNet网站提供的生理信号处理工具箱WFDB Toolbox for Matlab的安装和使用方法。通过下载并添加到Matlab路径中或直接在Matlab中输入相关内容,即可完成安装。该工具箱提供了一系列函数,可以方便地处理生理信号数据。详细的安装和使用方法可以参考本文内容。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • Android实战——jsoup实现网络爬虫,糗事百科项目的起步
    本文介绍了Android实战中使用jsoup实现网络爬虫的方法,以糗事百科项目为例。对于初学者来说,数据源的缺乏是做项目的最大烦恼之一。本文讲述了如何使用网络爬虫获取数据,并以糗事百科作为练手项目。同时,提到了使用jsoup需要结合前端基础知识,以及如果学过JS的话可以更轻松地使用该框架。 ... [详细]
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社区 版权所有