前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >遗传算法求解推箱子

遗传算法求解推箱子

作者头像
万木逢春
发布2018-07-24 16:55:55
1.1K0
发布2018-07-24 16:55:55
举报

首先看结果

这里还没有做出求解最短步数的,只是能够完成一次推箱子。

有些想要求解的问题的解是越短越好,或者不同解的长度不同,主要解决这个问题。

在设定种群的时候还是一样的用固定长度,就是以最长的长度作为整体种群的长度。

在适应度函数中做判断——如果个体前段部分就已经满足,来个break跳出并返回适应度就可以。

后续如果想要求得最短个体、需要再配合惩罚因子,比如用前段部分的长度作为系数

适应度=之前计算适应度+前段部分长度*惩罚因子

这样就可以在每次迭代的时候个体当中那些前段就满足的就会被挑出来或者说越短满足就越会被挑出来。

matlab的优化工具箱还是很好用的,不用编写优化算法,只要完成适应度函数就可以求解。

添加绘图参数配置还可以在迭代时观察

调用语句就像这样

fitnessfcn = @Sokaban_fun; % 适应度函数句柄

nvars=numel(map); % 个体变量数目

LB = 0.5*ones(nvars,1)'; % 下限

UB = 4.4*ones(nvars,1)'; % 上限

options=gaoptimset('PopulationSize',40,'PopInitRange',[LB;UB],...

'EliteCount',10,'CrossoverFraction',0.6,'Generations',40,...

'StallGenLimit',20,'TolFun',1e-10,'PlotFcns',...

{@gaplotbestf,@gaplotbestindiv}); % 算法参数设置

[x_best,fval]=ga(fitnessfcn,nvars, [],[],[],[],LB,UB,[],options);

% 运行遗传算法

非常适合确实需要求解最优目标的,其他各种需求还是各显神通的比较好(比如作业、毕业设计什么的,目标不是重点、过程才是)

最开始想要用Android模拟器运行推箱子游戏,主要是搞了很久才把模拟器给装上,特别是虚拟化得问题

想的是获取图像分析出游戏环境就是这个地图,结果没能实现,要在两百多条to-do list上再加一条了。

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

本文分享自 帮你学MatLab 微信公众号,前往查看

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

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

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