Halcom 发表于 2019-10-8 22:48:09

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】结果动态图




侯一心 发表于 2019-10-20 10:40:54

很实用:victory:

wasd789 发表于 2019-11-6 09:26:40

学习一下,学习学习。。。。。。

siyecao1996 发表于 2020-1-12 15:43:06

超级实用,感谢楼主~~

weki 发表于 2020-2-1 13:49:46

学习路径规划中,谢谢楼主

Reborn 发表于 2020-2-26 09:56:05

大爱楼主,毕业设计不用愁了

江南哥 发表于 2020-8-8 17:25:41

太好太好太好

operator321 发表于 2020-10-20 22:45:49

谢谢分享,学习了

wwmwwmwwm 发表于 2021-1-9 22:29:47

111111111111111

summer9931 发表于 2021-9-30 19:51:28

感谢楼主分享,学习了
页: [1]
查看完整版本: 6-枚举法下的避障路径寻优(连续性问题求解)