# Reversi-based-RL
呐~ 是吧
我又回来了,依旧是你熟悉的黑白棋,依旧秦时明月的故事背景~
不同的,是你看不到的,用心去感受吧~
啦啦啦~
---
## 开箱教程
### 环境配置
- python == 3.6
- keras-gpu == 2.2.4
- tensorflow-gpu == 1.14.0
### 主要文件说明
- src/config.py 参数配置文件,**其中 `project_root_path` 设置为项目路径,需更改**
- src/coach.py 为强化学习 self-play 训练类
- src/referee.py 为指挥者,指挥两个 player 的交互
- src/web 为一个简单的客户端/服务端,有着更好的体验玩耍该游戏,demo:[https://www.dreamwings.cn/reversi-based-rl](https://www.dreamwings.cn/reversi-based-rl)
- 服务端启动:`python -m src.web.server.web_ssl_server`,可能需更改 config.py 下的 web_ssl_cert_file、web_ssl_key_file 等参数
- 客户端启动:使用浏览器打开 `src/web/client/index.html`
- src/main.py 为程序执行文件,可参照 main 下的说明执行相应的命令
- 查看帮助:`python -m src.main --help`
- 训练模型:`python -m src.main train --simu 5 --lr 0.0001 --bs 128 --epochs 20 --use_multiprocessing`,具体参数可参看 src/config.py 中的说明
- 测试模型:`python -m src.main run --vs random_player rl_player`
- tutorial/slide/im0qianqian.pdf 为毕设答辩时所用,毕业论文暂未上传
- data/best.h5 是提供的模型训练好的参数文件
### something
- 本项目是我的本科毕业设计,可能一些细节还没有仔细完善好,也欢迎大家积极提出 pr
- 因为时间原因,可能这一份 README 组织的并不是很好,也没有去其他地方宣传本份作品,若觉得本项目对你有所帮助,欢迎点一个 star
- 在项目配置中遇到什么问题也欢迎提交 issue
- 大一时的课程设计链接,虽然是同一个游戏,但有了不同的内涵:[https://github.com/im0qianqian/Reversi](https://github.com/im0qianqian/Reversi)
---
## 进程计划
- [x] 开题报告(2019.02.25 - 2019.03.10)
- [x] 中期检查(2019.04.20 - 2019.04.30)
- [x] 作品验收(2019.05.16 - 2019.05.19)
- [x] 毕业论文(2019.05.20 - 2019.05.29)
- [x] 毕业答辩(2019.05.30 - 2019.06.06)
---
## To-Do
### Web
#### client
- [x] 游戏逻辑
- [x] AI (Minimax + Alpha–beta pruning)
- [x] 交互接口
#### server
- [x] 简易的 web 服务器,用来和客户端进行交互
### Python
- [x] Reversi 游戏逻辑,感谢 Eric P. Nichols 的实现,不过里面有点 bug 千千还是去仔细读懂并修复了QAQ,同时也支持了 Python3
- [x] 不同 AI 参与的指挥者 referee
- [x] Player
- [x] Human 手动操作
- [x] 基于随机策略的 AI
- [x] Botzone 本地 AI 配置(可使用本地 AI 与平台进行对战)
- [x] 基于贪心策略的 AI
- 可贪心使得当前转换棋子数量最大
- 可贪心使得对方行动力最小
- [x] **基于深度强化学习的 AI(最重要)**
- [x] MCTS
- [x] Keras NNet
- [x] 多进程 self-play
- [x] TPU 支持(差一个谷歌云存储 QAQ)
- [x] Botzone
- [x] 本地 AI 配置
- [x] 可参与天梯对局的 AI
---
## 记录
好难啊啊啊啊啊啊啊,没有进展 QAQ
by im0qianqian 2019.04.04
---
前些天一直在学习如何用强化学习设计 AI,之后想了想后端的游戏逻辑也要实现,于是这两天开工终于差不多完成了,与 Botzone 的本地 AI 配置交互也差不多可以用了,或许也有隐藏的 bug 等待发现,先这样吧~ 接下来继续学习强化学习~
by im0qianqian 2019.04.09
---
看了一下午的 MCTS,似懂非懂的样子,那一堆概率上的公式理解起来虽然不难,但却不知道如何推到这一步的 QAQ,明天继续看,早点手动实现进行下一步。
嗯~今天一拳超人第二季也更新了,坐在机房里看了一集,下午吃完饭回来以后一直不想继续看书,刷了几道 HackerRank AI 部分的题目,还是有点无聊~
旁边的位置,依旧空空的,快点回来好不好,都是千千的错,心情越来越奇怪了,还是虚拟一场 cf 打打吧。
by im0qianqian 2019.04.10
---
感冒了,有点难受,可能是前天淋雨的关系吧!
今天看完了 MCTS,照着步骤应该可以手动实现出来了,但是读了读别的论文发现在 MCTS 中可以结合神经网络进行预测,之前我一直以为这两个是相互独立的关系,唔~再去看看神经网络这块的内容返回来写。
by im0qianqian 2019.04.11
---
完成了 MCTS 部分,接下来便是神经网络了,不清楚这一块实现起来会不会非常麻烦,今天一直很困想睡觉
哦对,林老师中午给千千打电话了,看样子智能所完挂了???不过一开始就联系的林老师,也希望能够成为他的学生,保佑千千呀~
by im0qianqian 2019.04.12
---
嗯~这两天没有继续做毕设,一来呢 botzone 上不去了,二来剩下的部分需要深度学习的知识,所以千千想去学学基础啦~就这样~
然后,千千有新导师啦~开心~
by im0qianqian 2019.04.15
---
坐等今晚天梯上分,哒哒……
by im0qianqian 2019.04.17
---
五一放假了,然而今天是停电的一天,只能待在宿舍了 QAQ
早晨去了渔人码头做完了 ingress 银牌子的 link,坐等明天到账~
by im0qianqian 2019.04.30
---
唔,好多好多天没有在这里写过记录了欸~
前几天呀,千千突然对如何训练这个 AI 有了思路,我们呐,可以使用两个 NNet AI 模拟对局,对局结束以后将赢家所有走过的局面赋值 1,输家走过的局面赋值 -1,然后扔到 neural network 里训练,随着 model 的迭代,这种局面会变得越来越好的对吧!
然后便写完了第一个版本的 coach,设置 `simulation_count=20`,模拟 20 次对局,使用 10 × 2 次双方交战进行测试,当新的 model 胜率超过阈值 0.55 时便迭代版本。
但是呢~ 真正执行起来感觉大部分时间都用在了 self-play 上面欸,真正的 fit 只占了很少的时间。
怎么办呢?Python 多线程是假的,那我们多进程来实现吧!
于是用了一天的时间把原先的 coach 重构为多进程的版本,然后在本地测试了一番~
**以下是本地多进程测试,执行 8 次 self-play**
| 进程数目 | 每次 self-play 时间(单位:秒) | 总时间 |
| -------- | ------------------------------- | ------ |
| 1 | 15 | 136 |
| 2 | 20 | 90 |
| 4 | 55 | 135 |
| 8 | 120 | 未知 |
可以发现,进程数目增加时每次 self-play 时间会变长,当然这是正常现象咯~ 好多个进程在争夺显卡资源,如果有再好一点的配置就好啦 QAQ
千千的电脑只有 `Intel Core i7-6700HQ` + `NVIDIA GeForce GTX 960M` 的配置 QAQ
嗯~ 很早之前 lsx 推荐了 Google 的 colab,然后把自己的程序部署上去试了试,发现执行好慢呀,每次 self-play 需要 50s,fit 起来更慢(感觉是 CPU 在跑的那样子),于是弃坑,继续本地训练
前天的时候想再去 colab 上试试,咦,发生了什么,为什么这么快,那我们就先测试一下吧!
**以下是 colab 多进程测试,执行 12 次 self-play**
| 进程数目 | 每次 self-play 时间(单位:秒) | 总时间 |
| -------- | ------------------------------- | ------ |
| 1 | 10 | 132 |
| 2 | 15 | 98 |
| 4 | 33 | 106 |
| 8 | 80 | 未知 |
可以发现,这个速度比千千本地好多了,那就放在它上面训练吧!
可是昨天再测试的时�
没有合适的资源?快使用搜索试试~ 我知道了~
毕业设计: 黑白棋游戏源码
共66个文件
py:21个
png:8个
pdf:7个
需积分: 0 9 下载量 180 浏览量
2023-02-03
07:33:32
上传
评论 2
收藏 64.72MB ZIP 举报
温馨提示
毕业设计: 黑白棋游戏源码 环境配置 python == 3.6 keras-gpu == 2.2.4 tensorflow-gpu == 1.14.0 主要文件说明 src/config.py 参数配置文件,其中 project_root_path 设置为项目路径,需更改 src/coach.py 为强化学习 self-play 训练类 src/referee.py 为指挥者,指挥两个 player 的交互 src/web 为一个简单的客户端/服务端,有着更好的体验玩耍该游戏,demo:https://www.dreamwings.cn/reversi-based-rl 服务端启动:python -m src.web.server.web_ssl_server,可能需更改 config.py 下的 web_ssl_cert_file、web_ssl_key_file 等参数 客户端启动:使用浏览器打开 src/web/client/index.html src/main.py 为程序执行文件,可参照 main 下的说明执行相应的命令
资源推荐
资源详情
资源评论
收起资源包目录
(new)Reversi-based-RL-master.zip (66个子文件)
Reversi-based-RL-master
generate_zip_for_botzone.sh 153B
tutorial
slide
ecnu.sty 5KB
ytu_title.psd 4.48MB
ytu_background.psd 1.44MB
ytu_background.png 206KB
im0qianqian.tex 18KB
ytu_title.png 449KB
im0qianqian.synctex.gz 36KB
ytu_logo.png 1.21MB
img
组图.pptx 302KB
nn.svg 16KB
board.pdf 39KB
othello_init.jpg 31KB
othello.jpg 39KB
Figure_1.pdf 19KB
CoreRLconcepts2.svg 123KB
othello_end.jpg 32KB
board.svg 31KB
test.png 737KB
NNetStructure2.pdf 116KB
othello1.jpg 26KB
loop.svg 3KB
CoreRLconcepts2.pdf 119KB
NNetStructure2.svg 61KB
RL.png 178KB
LOSS.pdf 23KB
CoreRLConcepts.pdf 31KB
RL1.png 161KB
LOSS.svg 87KB
im0qianqian.snm 0B
ytu_logo4.png 528KB
im0qianqian.nav 3KB
ytu_logo3.png 514KB
im0qianqian.pdf 1.29MB
README.md 176B
generate_zip_for_botzone.bat 169B
.github
FUNDING.yml 852B
src
__init__.py 0B
lib
utils.py 411B
__init__.py 0B
mcts.py 4KB
main.py 6KB
web
client
js
main.js 11KB
img
background.jpg 149KB
css
style.css 4KB
index.html 2KB
server
__init__.py 0B
web_server.py 2KB
web_ssl_server.py 3KB
exec_request.py 2KB
referee.py 8KB
coach.py 11KB
games
__init__.py 0B
game.py 2KB
player.py 676B
nnet_agent.py 485B
reversi
reversi_player.py 11KB
reversi_game.py 4KB
reversi_nnet.py 6KB
reversi_logic.py 8KB
config.py 2KB
data
best.h5 61.26MB
LICENSE 1KB
__main__.py 3KB
.gitignore 4KB
README.md 10KB
共 66 条
- 1
资源评论
三季人G
- 粉丝: 134
- 资源: 2369
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 【java毕业设计】员工在线知识培训考试平台源码(ssm+mysql+说明文档).zip
- 【java毕业设计】演出道具租赁管理系统源码(ssm+mysql+说明文档).zip
- ScanMaster RPP3 脉冲放大器手册
- 【java毕业设计】社区医院儿童预防接种管理系统源码(ssm+mysql+说明文档).zip
- 【java毕业设计】企业台账管理平台源码(ssm+mysql+说明文档+LW).zip
- 【java毕业设计】面向品牌会员的在线商城源码(ssm+mysql+说明文档).zip
- 【java毕业设计】消防物资存储系统源码(ssm+mysql+说明文档+LW).zip
- 【java毕业设计】高校课程评价系统源码(ssm+mysql+说明文档+LW).zip
- 【java毕业设计】大健康老年公寓管理系统源码(ssm+mysql+说明文档).zip
- 【java毕业设计】小雨杂志在线投稿网站源码(ssm+mysql+说明文档+LW).zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功