6-枚举法下的避障路径寻优(连续性问题求解)
6-枚举法下的避障路径寻优(连续性问题求解)链接:https://pan.baidu.com/s/1Qyv7FurF5sL_puHO3B6rnw 提取码:pxg6
具体链接在halcom.cn论坛,联系人QQ:3283892722
该论坛是一个学习交流平台,我会逐一的和大家分享学习。
欢迎大家录制视频,你可在论坛进行打赏分享。
视频专用播放器:http://halcom.cn/forum.php?mod=viewthread&tid=258&extra=page%3D1
主程序如下:
clc,clear,close all
warning off
% 初始化种群
model = CreateModel();
itermax = 100;% 迭代次数
fitnesszbest = inf;
for i = 1:itermax
disp(['当前迭代次数: ', num2str(i), ' 总迭代次数:', num2str(itermax)])
sol = CreateRandomSolution(model);
% 计算目标函数
= fun(sol, model);
if fitness<fitnesszbest
fitnesszbest = fitness;
fitness_iter(i) = fitnesszbest;
zbest = sol1;
else
fitness_iter(i) = fitnesszbest;
end
figure(1)
PlotSolution(zbest,model)
pause(0.1)
end
figure(2)
plot(fitness_iter, '.-');
axis tight;
xlabel('迭代次数'); ylabel('适应度曲线');CreateModel脚本如下:
function model=CreateModel()
% 起点坐标
xs=0;
ys=0;
% 终点坐标
xt=4;
yt=6;
% 3个障碍圆
triangle_x1 = ;triangle_y1 = ;
triangle_x2 = ;triangle_y2 = ;
triangle_x3 = ;triangle_y3 = ;
xobs=;% 三角形中心横坐标
yobs=;% 三角形中心纵坐标
% 三角形中心 到其它定点 最大距离
for i=1:length(xobs)
d(1,i) = sqrt( (xobs(1)-triangle_x1(i)).^2+(yobs(1)-triangle_y1(i)).^2 );
d(2,i) = sqrt( (xobs(2)-triangle_x2(i)).^2+(yobs(2)-triangle_y2(i)).^2 );
d(3,i) = sqrt( (xobs(3)-triangle_x3(i)).^2+(yobs(3)-triangle_y3(i)).^2 );
end
robs=max(d,[],2)';% 三角形中心 到其它定点 最大距离
n = 3; % 障碍物数量
% 地图大小
xmin=0;xmax= 7;
ymin=0;ymax= 7;
model.xs=xs; % 起点横坐标
model.ys=ys; % 起点纵坐标
model.xt=xt; % 终点横坐标
model.yt=yt; % 终点纵坐标
model.triangle_x1 = triangle_x1; model.triangle_y1 = triangle_y1;
model.triangle_x2 = triangle_x2; model.triangle_y2 = triangle_y2;
model.triangle_x3 = triangle_x3; model.triangle_y3 = triangle_y3;
model.xobs=xobs;% 障碍物横坐标
model.yobs=yobs;% 障碍物纵坐标
model.robs=robs;% 障碍物半径
model.n=n; % 障碍物个数
model.xmin=xmin;% 地图最小横坐标
model.xmax=xmax;% 地图最大横坐标
model.ymin=ymin;% 地图最小纵坐标
model.ymax=ymax;% 地图最大纵坐标
endCreateRandomSolution脚本函数如下:
function sol = CreateRandomSolution(model)
% 中间插值n个点
n = model.n;
% 取值范围
xmin = model.xmin;
xmax = model.xmax;
ymin = model.ymin;
ymax = model.ymax;
sol.x = unifrnd( xmin,xmax, 1,n );% 均匀分布,产生n个点的横坐标
sol.y = unifrnd( ymin,ymax, 1,n );% 均匀分布,产生n个点的纵坐标适应度函数如下:**** Hidden Message *****
画图函数如下:
function PlotSolution(sol,model)
xs=model.xs;
ys=model.ys;
xt=model.xt;
yt=model.yt;
xobs=model.xobs;
yobs=model.yobs;
robs=model.robs;
XS=sol.XS;
YS=sol.YS;
xx=sol.xx;
yy=sol.yy;
% 绘制障碍物
fill(model.triangle_x1,model.triangle_y1,);
hold on;
fill(model.triangle_x2,model.triangle_y2,);
fill(model.triangle_x3,model.triangle_y3,);
plot(xx,yy,'k','LineWidth',2);% 插值的曲线坐标
plot(XS,YS,'r.');% 最优解的点坐标
plot(xs,ys,'bs','MarkerSize',12,'MarkerFaceColor','y');% 起点
plot(xt,yt,'kh','MarkerSize',16,'MarkerFaceColor','r');% 终点
hold off;
grid on;
axis equal;
end
参考:【1】结果动态图
很实用:victory: 学习一下,学习学习。。。。。。 超级实用,感谢楼主~~ 学习路径规划中,谢谢楼主 大爱楼主,毕业设计不用愁了
太好太好太好 谢谢分享,学习了 111111111111111 感谢楼主分享,学习了
页:
[1]