大家好,欢迎来到IT知识分享网。
首先看结果
这里还没有做出求解最短步数的,只是能够完成一次推箱子。
有些想要求解的问题的解是越短越好,或者不同解的长度不同,主要解决这个问题。
在设定种群的时候还是一样的用固定长度,就是以最长的长度作为整体种群的长度。
在适应度函数中做判断——如果个体前段部分就已经满足,来个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上再加一条了。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/72866.html