目录

  • 1 前言
  • 2 方案意义
  • 3 架构设计
  • 4 数据表设计
  • 5 代码结构
  • 6 项目演示
  • 7 总结

1 前言

openGauss是一款全面友好开放的企业级开源关系型数据库。openGauss采用木兰宽松许可证v2发行,提供面向多核架构的极致性能、全链路的业务、数据安全、基于AI的调优和高效运维的能力。本文采用openGauss设计一个AI小demo。

2 方案意义

人工智能被广泛用于棋类对弈的主要原因是:

棋类对弈自古以来就被认为是人类智力活动的象征,若人工智能成功达到、甚至高于人类水平,则就代表AI的发展潜力,从而吸引更多研究者关注并投身其中;
棋类很适合作为新AI算法的标杆。棋类游戏规则简洁、输赢都在盘面,适合计算机求解。理论上只要在计算能力和算法上有新的突破,任何新的棋类游戏都有可能得到攻克。而在棋类游戏上的表现也可以直观体现出AI之间计算能力与算法的高低,是促进AI算法发展的有效途径。
就本五子棋智能对弈系统而言,其服务对象为同局域网下的多个终端,讲求联机互动、互相限制、互相博弈,打破了传统二人对弈五子棋规则中,“若无禁手,先手易胜;若为后手,十堵九输”的说法,是AI算法设计、网络通信、数据库等技术的综合应用。

3 架构设计

其中对弈数据库采用openGauss数据库

4 数据表设计

棋盘数据表的表头如图所示

为将二维棋盘状态存入数据库中,令棋盘按 轴方向展开为一维序列

玩家数据表的表头如图所示

走子数据表的表头如图所示

5 代码结构

如图所示,依据模块化程序设计的基本思想,将整个项目按照功能划分为若干个小程序模块,每个小程序模块完成一个确定的功能,自顶向下、逐步分解、分而治之,各模块相对独立、功能单一、结构清晰。同时,在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能的程序设计

image.png

各模块具体设计如下:

main.py:启动文件。
config.py:变量管理文件。管理所有跨文件的全局变量。
settings.py:配置文件。开发环境配置、第三方扩展插件参数配置、数据库的链接路径及其他配置等。
apps:主体文件包。其初始化文件包括Flask类的实例创建以及工厂函数。该文件包下设三个子文件包,分别对应架构设计中的三张蓝图。
exts:扩展文件包。第三方扩展插件的例化,创建映射对象等。
项目采用高度模块化设计的优点有:控制了程序设计的复杂性;提高了代码的重用性;易于维护和功能扩充;有利于团队开发等。

6 项目演示

7 总结

基于openguass开发AI应用相当方便,也使我进一步掌握了数据库的常用技术,提高工程开发能力和面对未知问题的临场解决能力,对设计、创新、分析水平都有很大的帮助。

作者:杨皓冬
openGauss: 一款高性能、高安全、高可靠的企业级开源关系型数据库。

基于openGauss的五子棋AI项目相关推荐

  1. 基于 openGauss 的五子棋 AI 项目,openGauss 设计一个 AI 小 demo

    目录 1 前言 2 方案意义 3 架构设计 4 数据表设计 5 代码结构 6 项目演示 7 总结 1 前言 openGauss 是一款全面友好开放的企业级开源关系型数据库.openGauss 采用木兰 ...

  2. 基于博弈树的五子棋 AI 算法及其 C++ 实现

    基于博弈树的五子棋 AI 算法及其 C++ 实现 摘要 一   五子棋的游戏规则 二   五子棋对弈的算法描述 2.1 博弈树搜索算法 2.2 α ─ β 剪枝 2.3 估价函数 三   五子棋对弈的 ...

  3. 基于C++实现五子棋AI算法思想

    更多精彩,请点击上方蓝字关注我们! 今天我想要分享一下我做五子棋AI的思路.因为在做这个之前,我没有接触过任何像这种类似的东西.通过这一次,我也算是有所了解,我的思路也是来自很多网络上的博客,看了很多 ...

  4. 基于Kaggle的经典AI项目二—数据清洗

    文章目录 1 数据类型 修改 2 重复样本处理- 删除重复样本 3 缺失值处理 3.1 行列--缺失值>40%删除处理 3.2 统一填充 缺失率少于1%的列 3.3 相关性高的 连续型变量业务填 ...

  5. Java 五子棋AI博弈树算法实现

    实际上现在的棋类AI都是采用了效率更高的算法(如蒙特卡洛树搜索)+Deep Learning实现.今天我们只探讨较简单的五子棋AI,大致有两种算法:五元组和博弈树. Java学习笔记 第一节 Java ...

  6. AI:基于计算机视觉和语音识别案例项目打包过程记录20181226-19

    AI:基于计算机视觉和语音识别案例项目打包过程记录20181226-19 基于计算机视觉和语音识别案例项目打包过程 521 INFO: PyInstaller: 3.3.1 521 INFO: Pyt ...

  7. 一个基于区块链的AI平台即将ICO:这可以说是今年最潮的项目了

    李林 编译自 Wired 量子位 出品 | 公众号 QbitAI 这个项目,看起来就是个年度科技热词全家桶: 一家创业公司即将进行ICO,来为基于区块链的人工智能平台SingularityNET筹集资 ...

  8. C++程设实验项目三:黑白棋与基于UCT算法的AI

    在这篇博客里,我将总结一下在这次实验中学到的UCT算法实现原理. 首先是参考文章: https://blog.csdn.net/u014397729/article/details/27366363 ...

  9. 基于 Blazor 开发五子棋小游戏

    今天是农历五月初五,端午节.在此,祝大家端午安康! 端午节是中华民族古老的传统节日之一.端午也称端五,端阳.此外,端午节还有许多别称,如:午日节.重五节.五月节.浴兰节.女儿节.天中节.地腊.诗人节. ...

最新文章

  1. 备份CSDN博客正文到本地存档
  2. java线程组 线程池_JAVA多线程(三)-----线程组、线程池和线程相关类
  3. Python中的高阶函数reduce
  4. 通过添加HTTP Header实现上下文数据在WCF的自动传递
  5. html5仪表板可调节,使用HTML5画布实现的超棒javascript动画仪表板:gauge.js
  6. 每月分享github上有意思的项目
  7. how to verify that Listener is entry point of application
  8. java delegate怎么写_美团面试官:你说你们公司的Mybatis分页插件是你写的,给我说说它的设计原理?...
  9. matlab 归一化_机器学习中如何用Fscore进行特征选择(附Matlab代码)
  10. DBUtils的概述
  11. Jetty提交数据时报java.lang.IllegalStateException: Form too large270468>200000问题解决
  12. 集腋成裘-13-git使用-02进阶篇
  13. MySQL客户端安装
  14. 弘辽科技:拼多多DSR动态评分有多么的重要
  15. pixi.js淘宝小程序快速上手指南
  16. 日记|自2021-11-08始
  17. 各项异性扩散滤波 -- OpenCV实现
  18. c++在csv写入汉字_python-opencv表格识别转csv
  19. 奇特的一生:柳比歇夫坚持56年的“时间统计法”
  20. iOS开发—音视频入门学习必看

热门文章

  1. linux echo命令做运算,linux常用计算命令
  2. python库源码分析_python第三方库Faker源码解读
  3. 美版t430笔记本win8系统下装Ubuntu的一些尝试和遇到的问题
  4. LSTM和循环网络RNN学习简记
  5. ❤️大学三年沉淀,把我的学习经验分享给你,爆肝万字带你走进编程世界!❤️
  6. 被老婆赶出家门,男子嚎啕大哭:击垮一个成年人,一次失业就够了
  7. Javascript 中 atob/btoa
  8. 超级详细Window10安装Java JDK 和配置开发环境
  9. 公众号运营必备三大神器,满足你的所有需求
  10. Ubuntu Desktop - Disks