教程 | 基于遗传算法的拼图游戏解决方案

2017 年 11 月 12 日 机器之心

选自GitHub

机器之心编译

参与:林川、刘晓坤


这是一个GitHub项目,介绍了一种基于遗传算法的带有板块尺寸自动检测功能的拼图游戏解决方案。



GitHub链接:https://github.com/nemanja-m/gaps


安装


把 repo 下载到本地


$ git clone https://github.com/nemanja-m/gaps.git
$ cd gaps


安装要求


$ pip install -r requirements.txt
$ sudo apt-get install python-tk


以可编辑模式安装项目:


$ pip install -e .


从图像中创建拼图


使用 create_puzzle 脚本从图像中创建拼图。


亦即


$ create_puzzle images/pillars.jpg --size=48 --destination=puzzle.jpg

[SUCCESS] Puzzle created with 420 pieces


将从 images/pillars.jpg 创建分割成 420 块的拼图,每块拼图像素为 48x48px。


运行 create_puzzle --help 可以获得详细帮助。


注意:我们创建出来的拼图尺寸可能会比原图小,这取决于设置的拼图块的大小。最大的可能是以矩形从原始图像随机裁剪出来。


解决拼图问题


为了解决这个拼图问题,我们会用到 gaps 脚本。


亦即


$ gaps --image=puzzle.jpg --generations=20 --population=600


这将启动初始群体为 600 个(populations)和 20 代(generations)的遗传算法。

提供下列选项:


Option Description
--image 指向拼图的路径
--size 拼图块的像素尺寸
--generations 遗传算法的代的数量
--population 个体数量
--verbose 每一代训练结束后展示最佳结果
--save 将拼图还原为图像


运行 gaps --help 获得详细帮助。


尺寸检测


如果你不能明确的给 gaps 提供 --size 的参数,拼图块尺寸将自适应。


其实给 gaps 提供 --size 的具体参数总是可行的:


$ gaps --image=puzzle.jpg --generations=20 --population=600 --size=48


注意:尺寸检测功能适用于大多数图像,但是在某些边缘情况下尺寸检测会失效,并给出一个错误的尺寸。在这种情况下,你可以明确的给定一个尺寸。


终止条件


遗传算法的终止条件对于确定它的运行何时结束是很重要的。人们观察到在最初的时候,遗传算法进展非常快,每几次迭代都会产出更好的解决方案,但是在后期的改进非常小的时候,往往会趋于饱和。


gaps 将终止的情况:


  • 当经过 X 次迭代在全量中没有改善的时候

  • 当它演化到了某个绝对的代(generations)数的时




本文为机器之心编译,转载请联系本公众号获得授权

✄------------------------------------------------

加入机器之心(全职记者/实习生):hr@jiqizhixin.com

投稿或寻求报道:content@jiqizhixin.com

广告&商务合作:bd@jiqizhixin.com

登录查看更多
109

相关内容

【清华大学】低资源语言:回顾综述和未来的挑战,14页pdf
《代码整洁之道》:5大基本要点
专知会员服务
49+阅读 · 2020年3月3日
【强化学习】深度强化学习初学者指南
专知会员服务
178+阅读 · 2019年12月14日
【ICIP2019教程-NVIDIA】图像到图像转换,附7份PPT下载
专知会员服务
53+阅读 · 2019年11月20日
谷歌足球游戏环境使用介绍
CreateAMind
31+阅读 · 2019年6月27日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
开发、调试计算机视觉代码有哪些技巧?
AI研习社
3+阅读 · 2018年7月9日
强化学习初探 - 从多臂老虎机问题说起
专知
10+阅读 · 2018年4月3日
Python NLP 入门教程
大数据技术
19+阅读 · 2017年10月24日
机器学习算法实践:Platt SMO 和遗传算法优化 SVM
Python开发者
7+阅读 · 2017年10月21日
解决机器学习问题有通法!看这一篇就够了!
大数据文摘
4+阅读 · 2017年9月18日
Arxiv
3+阅读 · 2018年6月14日
VIP会员
相关资讯
谷歌足球游戏环境使用介绍
CreateAMind
31+阅读 · 2019年6月27日
渗透某德棋牌游戏
黑白之道
12+阅读 · 2019年5月17日
开发、调试计算机视觉代码有哪些技巧?
AI研习社
3+阅读 · 2018年7月9日
强化学习初探 - 从多臂老虎机问题说起
专知
10+阅读 · 2018年4月3日
Python NLP 入门教程
大数据技术
19+阅读 · 2017年10月24日
机器学习算法实践:Platt SMO 和遗传算法优化 SVM
Python开发者
7+阅读 · 2017年10月21日
解决机器学习问题有通法!看这一篇就够了!
大数据文摘
4+阅读 · 2017年9月18日
Top
微信扫码咨询专知VIP会员