模拟退火算法_Matlab 二维模拟退火算法最优路径(主程序)

该博客介绍了如何使用Matlab实现二维模拟退火算法寻找起点到终点的最优路径。首先,通过Dijkstra算法计算单源最短路径,然后将路径细化并利用模拟退火算法不断迭代优化,找到更短的路径。博客提供了主程序代码,并展示了算法过程和结果比较,指出算法仍有优化空间。
摘要由CSDN通过智能技术生成

这部分承接Dijkstra算法的基础之上,先算出单源最短路径(绿线),

之后把经过的每个虚线段分成1000份,它们的基准点分别是b1、b2等

随机产生一系列1000的数字排列成1*6的矩阵代入模拟退火算法

利用这些坐标计算出每个线段上的分点,然后计算距离找到更短的路径不断迭代,最后画出结果(蓝线)

360396f63629594d798417e872666544.png

NO.1  主程序代码如下所示,子函数的放在另外一篇文章中

----------------------------------

%% 二维模拟退火算法寻优

clc;

clear all

tic;

%% 初始作图

position = load('barrier.txt'); %障碍物顶点和边界点

%描述起点和终点

S = [20,180];

T = [160,90];

scatter([S(1),T(1)],[S(2),T(2)],'filled','d','LineWidth',1.5);

set(gca,'xtick',0:20:200)   %横坐标刻度

title('Dijkstra算法演示','fontsize',12)

hold on

grid on

% 图形标注

text(S(1)+2,S(2),'S');

text(T(1)+2,T(2),'T');

%% 描绘障碍物图形填充

fill(position(1:4,1),position(1:4,2),[1,0.87059,0.67843]);  

fill(position(5:8,1),position(5:8,2),[1,0.87059,0.67843]);

fill(position(9:12,1),position(9:12,2),[1,0.87059,0.67843]);

fill(position(13:15,1),position(13:15,2),[1,0.87059,0.67843]);

% 下载链路端点数据

L = load('lines.txt');   

%L矩阵根据position里面的端点编号来,第一行是编号1和16坐标的点相连

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值