团队项目——AI五子棋(小程序)
一、团队展示:
队名:未来的将来的明天在那里等你 小组
队员:
龙天尧(队长)(3116005190),林毓植(3116005188),黄晖朝(3116005178),梁竟(3116005183),林俊博(3116005185),林立新(3116005186)
Github项目地址:https://github.com/holidaysss/AI-Gobang
项目描述:
AlphaGo Zero在世界舞台上取得的巨大成功体现了人工智能算法的快速发展和其蕴含着的应用价值,本团队借鉴AlphaGo Zero算法思想和架构,简单实现五子棋的人工智能棋手,通过人工智能自我的不断下棋,不断训练,并且不断迭代更新自身-自训练模式,从而训练一个水平极高的人工智能棋手,让广大玩家体验一把与“AlphaGo Zero”的感觉。本团队提出的程序-AI五子棋不仅加入人工智能元素,并且以微信小程序的方式部署,为所有微信用户提供简洁方便的模式风格轻松进行五子棋游戏。
需求分析:
面向用户分析:
全体微信用户都可以很便捷地参与游戏,随时随地都可以简单的借助微信小程序的便利发起游戏对战。
功能性需求
a. 正常进行五子棋游戏
b. 基于微信小程序开发
c. 多种游戏模式的选择
d. AI元素的加入
技术需求
a. 微信小程序前端开发
b. 服务器部署
c. python web开发
d. AlphaGo Zero 算法理解和实现
e. python的编程开发
项目分组:
前端:
AI五子棋基于小程序开发,小程序的前端语言用的是JavaScript。前端设计主要从两个角度进行编程开发:游戏设计,信息处理。
游戏设计:
1. 五子棋棋盘,棋子等图像界面的设计
2. 五子棋基础规则设定
a. 棋子可以根据玩家的指定位置落到棋盘的指定位置-坐标
b. 玩家只可以按照规则下棋,不存在连续下棋,未同意下撤回棋子,同个位置下两遍等异常情况
3. 游戏基础功能设定,比如开始游戏,再来一菊,放弃下棋等
4. 可以根据后端指示的游戏状态执行对应操作,特别地,棋盘的胜负状态是由后端判断的。
信息处理:
1. 可以为每一个微信用户生成一个唯一的Token或者标识
2. 可以与后端进行正确的信息通信,并且执行后端要求的请求。同时也可以正常地向后端发送信息
3. 以JSON格式作为数据规范格式,当前数据格式
后端:
采用开发简单且功能强大的Flask作为后端开发语言,由于Flask是python web框架,所以在结合同样是python实现的人工智能算法上的操作上更加方便。后端开发主要从两个角度入手:游戏开发,Web开发
游戏开发:
1. 完整编程开发五子棋游戏,可以正常生成棋盘,并且可以进行三种游戏模式:人机模式,人人模式,鸡鸡模式。
1. 初步理解AlphaGo Zero的算法思想和技术,并且尝试实现算法,训练人工智能模型。
2. 整合训练好的模型和算法逻辑称为一个可实例化的对象 - 称人工智能棋手(AI棋手)
Web开发:
1. 正确与前端进行信息交流
2. 准确每一个用户生成临时棋盘环境,每个用户的棋盘游戏环境互不干扰。
3. 合理存放用户的token标识等数据
4. 同个用户标识可以在不同时间段内生成多个棋盘,但是每一个时间段只能对应一个棋盘环境
5. 服务器web框架的部署,性能,效率,安全和稳定等方面的测试
参考资料
AlphaGo Zero的主要论文文献,互联网上的AlphaGo Zero算法研究文章,AlphaGo Zero 相关的知识文章,微信小程序游戏类型开发知识文章,python后端开发知识文章,服务器搭建配置知识文章,python必要运行环境搭建配置知识文章。
AlphaZero: Mastering Chess and Shogi by Self-Play with a General Reinforcement Learning Algorithm
AlphaGo Zero: Mastering the game of Go without human knowledge
队员风采:天尧:
人设:活泼可爱
擅长:即兴伴奏,python
一句话:“想要成绩好,上课不迟到。”
毓植:
人设:天真浪漫
擅长:唱歌,python
一句话:“百分之五十的见解, 百分之五十的直觉。”
晖朝:
人设:沉着冷静
擅长:太极,python
一句话:“饮一壶浊酒,删了库就走”
竟竟:
人设:拾金不昧
擅长:安卓,Java
一句话:“听立新的。”
俊博:
人设:宠辱不惊
擅长:游戏,python
一句话:“None”
立新:
人设:能说会道
擅长:数学,辩论,python
一句话:“爱你,爱你,爱你,每天都要一起。”
团队合照:
(明天再拍。。。)
团队特色:男团
二、选题要求
- 确立团队选题,确定之后每个团队需要写描述要做的究竟是什么系统,预期的用户量是多少。
- 围绕选题项目内容的 真实、可用、有价值(有情怀 作为加分项)目标来分别阐述。
- 建立和初步熟悉团队git的协作方式。项目后续的代码、文档都要通过Coding.net增量式管理。实现文档的版本化和增量式管理。
- 请立刻建立团队项目的git仓库。
三、团队安排
1. 团队计划
第 6 周 |
1.团队组队、团队博客 |
2.团队介绍、成员展示、角色分配、选题确定 |
|
3.制定团队计划安排,团队贡献分的规定 |
|
第7周 |
1.需求规格说明书 |
2.原型设计,队员估计任务难度并学习必要的技术 |
|
3.编码规范完成、平台环境搭建完成、初步架构搭建 |
|
第8周 |
1.原型改进(给目标用户展现原型,并进一步理解需求) |
2.架构设计,WBS, 团队成员估计各自任务所需时间 |
|
3.测试计划 |
|
第9周 |
1. 团队项目Alpha任务分配计划 |
2. 连续7天的Alpha敏捷冲刺,7 篇 每日Scrum Meeting博客+代码提交 |
|
第10周 |
1.用户反馈+测试计划改进 |
2. 团队Alpha阶段个人总结 |
|
3. 团队项目Alpha博客:发布说明、测试报告、展示博客、项目管理 |
|
第11周 |
1. 团队项目Alpha博客:事后分析 |
2. 每个团队有一人必须离开,自己寻找下一个接纳自己的团队。团队发博客宣布离队和接纳的成员。 |
|
第12周 |
1. 团队项目Beta任务分配计划,介绍新成员 |
2. 连续7天的Beta敏捷冲刺,7 篇 每日Scrum Meeting博客+代码提交 |
|
第13周 |
1. 团队项目Beta博客:发布说明、测试报告、展示博客 |
2. 团队Beta阶段个人总结 |
|
第14周 |
1. 团队项目Beta博客:事后分析, 宣布每人的贡献分 |
第15周 |
1.团队整个阶段总结,分析用户数据,整理文档,保证以后的团队能接手。 |
2. PSP
PSP2.1 | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
· Estimate | · 估计这个任务需要多少时间 | · | · |
Development | 开发 | ||
· Analysis | · 需求分析 (包括学习新技术) | · | · |
· Design Spec | · 生成设计文档 | · | · |
· Design Review | · 设计复审 (和同事审核设计文档) | · | · |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | · | · |
· Design | · 具体设计 | · | · |
· Coding | · 具体编码 | · | · |
· Code Review | · 代码复审 | · | · |
· Test | · 测试(自我测试,修改代码,提交修改) | · | · |
Reporting | 报告 | ||
· Test Report | · 测试报告 | · | · |
· Size Measurement | · 计算工作量 | · | · |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | · | · |
合计 |
3. 团队成员绩效评估方法
成员的绩效 = 团队获得的分数 + 个人的团队贡献分
在项目alpha 和 beta 阶段评审后, 团队会得到一个项目分数(每个成员都会得到同样的分数,做为自己的原始分数的一部分)。团队成员的努力程度不同,达成目标的程度不同,帮助同伴的付出不同,那就要在“团队贡献分” 上有所区分。 所有人贡献分的总和为 20N,其中N为团队的人数。 在alpha/beta 之后,团队按照自己制定的规则,把 (20N)瓜分给每人,这就是 “团队贡献分”。
要求:请每人阅读教材 “人、绩效和职业道德”一章,然后团队开一个讨论会,协商讨论团队贡献分的分配规则。每人得分为自然数,并且每个人分数不能相同。 请写一个团队博客详细说明每个团队的成员计划如何帮助团队完成任务,以及团队贡献分的分配规则。