MATLAB 之 模拟退火算法(旅行商问题)

本文介绍了如何使用MATLAB实现模拟退火算法解决旅行商问题(TSP)。通过视频学习,理解算法设计步骤,包括解空间设计、目标函数、新解生成以及Metropolis接受准则。提供了源代码,包括主函数和辅助函数,用于计算TSP路径长度。
摘要由CSDN通过智能技术生成

视频学习

代码来源于清风老师授课时,使用代码,数据来源于小石老师授课资料

小石老师:https://www.bilibili.com/video/BV1Mt411x7CH?t=884&p=7

清风老师:https://www.bilibili.com/video/BV1hK41157JL?t=6961

简介

模拟退火算法,和遗传算法一样,是一种启发性算法,利用之前的数据与现在的数据作比较。

旅行商问题(TSP),是典型的优化问题,在物流配送,计算机网络,电子地图,交通疏导,电气分布等方面都有重要的工程和理论价值。

TSP可以简单的描述为,一个人需要到n个城市走一遍,并且最后回到最初的城市,计算该过程,应该如何选择路径,使得所走的路程最短,或者费用最低。

TSP算法设计步骤

(1)设计解空间

TSP解空间,可以理解为遍历城市的顺序,S (i)={1,2,3,4,5,6,7…}(各个城市

边编号为123456789…),每一个S(i)都表示一个遍历所有城市的一次路径。

最优解与初始路径没有多大的联系,所以初始路径可以随机生成。

(2)目标函数

在TSP中,目标函数就是回路路径长度最短

(3)新解产生

这一步骤很重要,,新解可以通过,交替法,移位法,倒置法等产生新的

解。

(4)Metropolis接受准则
以新解与旧解的差值,以及此时的温度为准则,判断是否接受新解,在这里插入图片描述
这个概率会随着温度T的降低而不断减小,所以接受新解的概率会随着迭代次

数的累加,不断减小,后面几乎不接受新解,会一直找到那个最优,这也是

防止获得的是局部最优的结果,而不是全局最优。

源代码

主函数

%% 模拟退火解决TSP问题
clear;clc
coord = [66.83 25.36;61.95 26.34; 40 44.39;24.39 14.63;17.07 22.93;22.93 76.1;51.71 94.14;87.32 65.36;68.78 52.19;84.88 36.09;50 30;40 20;25 26];
n = size(coord,1);  % 城市的数目

figure(1)  % 新建一个编号为1的图形窗口
plot(coord(:,1),coord(:,2),'o');   % 画出城市的分布散点图
hold on % 等一下要接着在这个图形上画图的

d = zeros(n);   % 初始化两个城市的距离矩阵全为0
for i = 2:n  
    for j = 1:i  
        coord_i = coord(i,:);   x_i = coord_i(1);     y_i = coord_i(2);  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值