遗传算法求解推箱子

遗传算法求解推箱子

首页休闲益智推箱子模拟器更新时间:2024-04-29

首先看结果

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

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

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

在适应度函数中做判断——如果个体前段部分就已经满足,来个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上再加一条了。

查看全文
大家还看了
也许喜欢
更多游戏

Copyright © 2024 妖气游戏网 www.17u1u.com All Rights Reserved