遗传算法解决TSP问题

一.原理及问题描述

1.遗传算法原理

遗传算法的概念简单来说,就是利用种群搜索技术将种群作为一组问题解,通过对当前种群施加类似生物遗传环境因素的选择、交叉、变异等一系列的遗传操作来产生新一代的种群,并逐步使种群优化到包含近似最优解的状态。

2.TSP问题描述

TSP问题,即旅行商问题,是指对于给定的n个城市,旅行商从某一城市出发不重复的访问其余城市后回到出发城市,要求找出一条路线,路程最短。

3.用遗传算法解决TSP问题思路

3.1 问题的表示
路径表示是表示旅程对应的基因编码的最自然,最简单的表示方法。它在编码,解码,存储过程中相对容易理解和实现。例如:旅程(5-1-7-8-9-4-6-2-3)可以直接表示为(5 1 7 8 9 4 6 2 3)
3.2 交叉运算

一般有以下三种交叉方式
  1. Partial-Mapped Crossover(部分映射交叉)

在这里插入图片描述

  1. Order Crossover(顺序交叉)

在这里插入图片描述

  1. Position-based Crossover(基于位置的交叉)

在这里插入图片描述

本算法

  1. 先确定两个城市序列中进行交换的城市
  2. 交换城市时,若城市序列中包含重复城市,则增加一个交换操作

交叉函数

function [A,B]=cross(A,B)
L=length(A);
if L<10
W=L;
elseif ((L/10)-floor(L/10))>=rand&&L>10
 W=ceil(L/10)+8;
else
    W=floor(L/10)+8;
    end
%%W为需要交叉的位数
p=unidrnd(L-W+1);%随机产生一个交叉位置
%fprintf('p=%d ',p);%交叉位置
for i=1:W
x=find(A==B(1,p+i-1));
    y=find(B==A(1,p+i-1));
    [A(1,p+i-1),B(1,p+i-1)]=exchange(A(1,p+i-1),B(
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值