diff --git a/content/zh/post/winter/.keep b/content/zh/post/winter/.keep new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git "a/content/zh/post/winter/\345\237\272\344\272\216openGauss\347\232\204\344\272\224\345\255\220\346\243\213AI\351\241\271\347\233\256.md" "b/content/zh/post/winter/\345\237\272\344\272\216openGauss\347\232\204\344\272\224\345\255\220\346\243\213AI\351\241\271\347\233\256.md" new file mode 100644 index 0000000000000000000000000000000000000000..cf3db8984e780bbb1665c3b135936e81e71acacc --- /dev/null +++ "b/content/zh/post/winter/\345\237\272\344\272\216openGauss\347\232\204\344\272\224\345\255\220\346\243\213AI\351\241\271\347\233\256.md" @@ -0,0 +1,74 @@ ++++ + +title = "基于openGauss的五子棋AI项目" + +date = "2022-10-07" + +tags = ["OpenGauss技术文章征集"] + +archives = "2022-10" + +author = "winter" + +summary = "基于openGauss的五子棋AI项目" + ++++ + +1 前言 +==== + +openGauss是一款全面友好开放的企业级开源关系型数据库。openGauss采用木兰宽松许可证v2发行,提供面向多核架构的极致性能、全链路的业务、数据安全、基于AI的调优和高效运维的能力。本文采用`openGauss`设计一个AI小demo。 + +# 2 方案意义 + +人工智能被广泛用于棋类对弈的主要原因是: +- 棋类对弈自古以来就被认为是人类智力活动的象征,若人工智能成功达到、甚至高于人类水平,则就代表AI的发展潜力,从而吸引更多研究者关注并投身其中; +- 棋类很适合作为新AI算法的标杆。棋类游戏规则简洁、输赢都在盘面,适合计算机求解。理论上只要在计算能力和算法上有新的突破,任何新的棋类游戏都有可能得到攻克。而在棋类游戏上的表现也可以直观体现出AI之间计算能力与算法的高低,是促进AI算法发展的有效途径。 + +就本五子棋智能对弈系统而言,其服务对象为同局域网下的多个终端,讲求联机互动、互相限制、互相博弈,打破了传统二人对弈五子棋规则中,“若无禁手,先手易胜;若为后手,十堵九输”的说法,是AI算法设计、网络通信、数据库等技术的综合应用。 + +# 3 架构设计 + +![image.png](https://oss-emcsprod-public.modb.pro/image/editor/20221007-e21fa4f1-c633-47cb-a345-2c87b7257919.png) + +其中对弈数据库采用`openGauss`数据库 + +# 4 数据表设计 + +棋盘数据表的表头如图所示 + +![image.png](https://oss-emcsprod-public.modb.pro/image/editor/20221007-b18f5306-099e-4b41-9f6b-2b0a7282642a.png) + +为将二维棋盘状态存入数据库中,令棋盘按 轴方向展开为一维序列 + + +玩家数据表的表头如图所示 + +![image.png](https://oss-emcsprod-public.modb.pro/image/editor/20221007-07fb082b-837a-4b2f-bc8f-82161c2d41e9.png) + +走子数据表的表头如图所示 + +![image.png](https://oss-emcsprod-public.modb.pro/image/editor/20221007-65eed40c-1330-492f-9b9d-a2ed9f573142.png) + +# 5 代码结构 + +如图所示,依据模块化程序设计的基本思想,将整个项目按照功能划分为若干个小程序模块,每个小程序模块完成一个确定的功能,自顶向下、逐步分解、分而治之,各模块相对独立、功能单一、结构清晰。同时,在这些模块之间建立必要的联系,通过模块的互相协作完成整个功能的程序设计 + +![image.png](https://oss-emcsprod-public.modb.pro/image/editor/20221007-890ae16a-bb3e-4f38-a8f7-739654d4ab42.png) + +各模块具体设计如下: +- main.py:启动文件。 +- config.py:变量管理文件。管理所有跨文件的全局变量。 +- settings.py:配置文件。开发环境配置、第三方扩展插件参数配置、数据库的链接路径及其他配置等。 +- apps:主体文件包。其初始化文件包括Flask类的实例创建以及工厂函数。该文件包下设三个子文件包,分别对应架构设计中的三张蓝图。 +- exts:扩展文件包。第三方扩展插件的例化,创建映射对象等。 + +项目采用高度模块化设计的优点有:控制了程序设计的复杂性;提高了代码的重用性;易于维护和功能扩充;有利于团队开发等。 + +# 6 项目演示 + +![cc86c5f031564851a11ce8cbc347e083.gif](https://oss-emcsprod-public.modb.pro/image/editor/20221007-8a282f4c-6bf0-404a-af7c-7eb0205edd1e.gif) + +# 7 总结 + +基于`openguass`开发AI应用相当方便,也使我进一步掌握了数据库的常用技术,提高工程开发能力和面对未知问题的临场解决能力,对设计、创新、分析水平都有很大的帮助 \ No newline at end of file