遗传算法求解TSP问题(matlab实现)

一、问题描述

旅行商问题(TSP)解决的是,假设有一个人要拜访N个城市,要求他从一个城市出发,每个城市都要拜访一次,最后再回到最初的城市,保证所选择的路径长度最短。这是一个典型的NP难问题。用数学的方式表示,其目标函数如下所示:

T_{d}=\sum_{i=1}^{n-1}d(V_{i},V_{i+1})+d(V_{n},V_{1})

其中d(V_{i},V_{i+1})表示城市V_{i}到城市V_{i+1}的距离。

二、算法介绍

1.遗传算法

遗传算法是模拟达尔文生物进化论的自然选择和遗传学机理的生物进化过程的计算模型,通过模拟自然进化选择的过程搜索最优解并进行保留。遗传算法是从代表问题可能潜在的解集的一个种群开始的,而一个种群则由经过基因编码的一定数目的个体组成。每个个体实际上是染色体带有特征的实体。染色体作为遗传物质的主要载体,即多个基因的集合,其内部表现是某种基因组合,它决定了个体的形状的外部表现。因此,在一开始需要实现从表现型到基因型的映射即编码工作。由于仿照基因编码的工作很复杂,我们往往进行简化,如二进制编码,初代种群产生之后,按照适者生存和优胜劣汰的原理,逐代演化产生出越来越好的近似解,在每一代,根据问题域中个体的适应度大小选择个体,并借助于自然遗传学的遗传算子进行组合交叉和变异,产生出代表新的解集的种群。这个过程将导致种群像自然进化一样的后生代种群比前代更加适应于环境,末代种群中的最优个体经过解码,可以作为问题近似最优解。

2.基本概念

  • 种群:不同生物个体形成的种群,生物的进化以种群的形式进行,这样的群体称为种群;
  • 个体:组成种群的单个生物;
  • 基因:带有遗传信息的DNA片段,在遗传算法中用编码的方式来体现;
  • 适应度:表示某一个体对环境的适应能力,也表示该个体繁殖后代的能力,适应度越强,后代存活概率越大,在遗传算法中会通过一个映射函数进行量化处理;
  • 遗传:通过繁殖过程,自带将从父母双方各获取一部分基因,形成新的自己的基因,这个过程中会发生基因的复制、交叉,也会以较低的概率发生基因突变,在遗传算法中会通过编码后的基因,依据交叉算子、变异算子来进行处理,得到新的基因编码,来模拟遗传的过程。
  • 自然选择:环境适应度高的个体参与繁殖的机会比较多,相应的后代会越来越多,而适应度较低的个体繁殖的机会比较少,后代就会越来越少,在遗传算法中通过选择算子对适应度较高的个体进行选择,来模拟自然选择的过程。

3.基本步骤

  1. 种群初始化:根据问题特征设计合适的初始化操作(初始化操作应尽量简单,时间复杂度不易过高)对种群中的N个个体进行初始化操作;
  2. 个体评价:根据优化的目标函数计算种群中个体的适应值;

你可能感兴趣的:(TSP问题,算法,matlab,启发式算法)