首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >教程 | 基于遗传算法的拼图游戏解决方案

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

作者头像
机器之心
发布2018-05-10 15:31:14
1.5K0
发布2018-05-10 15:31:14
举报
文章被收录于专栏:机器之心机器之心

选自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)数的时

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-11-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 机器之心 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档