PSO应用TSP(引入交换子)

文章介绍了退火算法在解决简单优化问题,如旅行商问题(TSP)时的核心策略。关键点包括构造目标函数以衡量路径耗费,使用randperm生成初始解,以及借助BBS方法动态生成新解。BBS通过特定顺序的交换子操作逐步接近最优解,速度由变量v控制。
摘要由CSDN通过智能技术生成

退火算法解决简单优化问题一文中提到在一般智能算法应用于实际问题时,需要着重注意以下几个方面,并根据具体问题决定实现思路。

  1. 构造初始解
  2. 目标函数最优
  3. 产生新解(重点)

目标函数

即商人行进耗费也可称之为适应度。根据邻接矩阵以及行进路径得到行进耗费

function [tsp_ans] = calculate_ans(path,d)
tsp_ans =  0;
n = size(path,2);
for i = 2:n
    tsp_ans = tsp_ans+ d(path(i-1),path(i));
end
end

构造初始解

randperm函数可生成随机排列

新解的产生

与连续区间不同,tsp的新解(离散)产生需借助BBS来实现

SS = (SO1+SO2+SO3+SO4+SO5+……+SON)

SON表示交换的第N步

例SON为(1,2)表示解的1,2位置元素互换。可知交换子的顺序不可变换即B+SS=A。若SS中的交换子顺序变换则最后结果也很可能发生变化。

以X = 3 4 2 1 5, pbest = 1 2 3 4 5 为例

定义SS = [(1,4),(2,3),(3,4),(1,1)] (1,1)可忽略

3 4 2 1 5 + SS1 = 1 4 2 3 5

1 4 2 3 5 + SS2 = 1 2 4 3 5

1 2 4 3 5 + SS3 = 1 2 3 4 5

1 2 3 4 5 + SS4 = 1 2 3 4 5

则B+ SS = A实现

交换子求解代码请参考本文

由上面B + SS = A求解过程可知

设 BB = B+ [SS1+SS2+……+SSK] (K<=N)

K越大BB越接近A的状态

定义 v (0.0<v<1.0);L = round(v*N);

BBS[1:L]则为此次选出交换子序列使得x接近pbest;

可知v越大x越接近pbest,可根据v来调整x接近最优值的速度。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值