退火算法 matlab,模拟退火算法(MATLAB实现).pdf

退火,算法,实现退火,算法,实现退火,算法,实现

模拟火算法(MATLAB 实现)

实验用例:

用模拟退火算法解决如下10 个城市的TSP 问题,该问题最优解为f opt 2.691 。

表1 10 个城市的坐标

城市 X 坐标 Y 坐标 城市 X 坐标 Y 坐标

1 0.6683 0.2536 6 0.2293 0.7610

2 0.6195 0.2634 7 0.5171 0.9414

3 0.4000 0.4439 8 0.8732 0.6536

4 0.2439 0.1463 9 0.6878 0.5219

5 0.1707 0.2293 10 0.8488 0.3609

编程实现

用MATLAB 实现模拟退火算法时,共编制了5 个m 文件,分别如下

1、swap.m

function [ newpath , position ] = swap( oldpath , number )

% 对 oldpath 进 行 互 换 操 作

% number 为 产 生 的 新 路 径 的 个 数

% position 为 对 应 newpath 互 换 的 位 置

m = length( oldpath ) ; % 城 市 的 个 数

newpath = zeros( number , m ) ;

position = sort( randi( m , number , 2 ) , 2 ); % 随 机 产 生 交 换 的 位 置

for i = 1 : number

newpath( i , : ) = oldpath ;

% 交 换 路 径 中 选 中 的 城 市

newpath( i , position( i , 1 ) ) = oldpath( position( i , 2 ) ) ;

newpath( i , position( i , 2 ) ) = oldpath( position( i , 1 ) ) ;

end

2、pathfare.m

function [ objval ] = pathfare( fare , path )

% 计 算 路 径 path 的 代 价 objval

% path 为 1 到 n 的 排 列 ,代 表 城 市 的 访 问 顺 序 ;

% fare 为 代 价 矩 阵 , 且 为 方 阵 。

[ m , n ] = size( path ) ;

objval = zeros( 1 , m ) ;

for i = 1 : m

for j = 2 : n

objval( i ) = objval( i ) + fare( path( i , j - 1 ) , path( i , j ) ) ;

end

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值