多旅行商问题综述

多旅行商问题综述
多旅行商问题综述

2.旅行商TSP问题(1.1)

旅行商问题 旅行商问题(Traveling Salesman Problem,TSP)又译为旅行推销员问题、货郎担问题,简称为TSP问题,是最基本的路线问题,该问题是在寻求单一旅行者由起点出发,通过所有给定的需求点之后,最后再回到原点的最小路径成本。最早的旅行商问题的数学规划是由Dantzig(1959)等人提出。 目录 目录 旅行商问题 (1) 目录 (1) 1.简介 (1) 2.研究历史 (2) 3.问题解法 (2) 4.解法思路 (2) 途程建构法 (2) 途程改善法 (2) 合成启发法 (3) 5.研究进展 (3) 6.问题分析 (3) 1.简介 “旅行商问题”常被称为“旅行推销员问题”,是指一名推销员要拜访多个地点时,如何找到在拜访每个地点一次后再回到起点的最短路径。规则虽然简单,但在地点数目增多后求解却极为复杂。以42个地点为例,如果要列举所有路径后再确定最佳行程,那么总路径数量之大,几乎难以计算出来。多年来全球数学家绞尽脑汁,试图找到一个高效的算法。TSP问题在物流中的描述是对应一个物流配送公司,欲将n个客户的订货沿最短路线全部送到。如何确定最短路线。TSP问题最简单的求解方法是枚举法。它的解是多维的、多局部极值的、趋于无穷大的复杂解的空间,搜索空间是n个点的所有排列的集合,大小为(n-1)。可以形象地把解空间看成是一个无穷大的丘陵地带,各山峰或山谷的高度即是问题的极值。求解TSP,则是在此不能穷尽的丘陵地带中攀登以达到山顶或谷底的过程。

2.研究历史 旅行商问题字面上的理解是:有一个推销员,要到n个城市推销商品,他要找出一个包含所有n个城市的具有最短路程的环路。 TSP的历史很久,最早的描述是1759年欧拉研究的骑士周游问题,即对于国际象棋棋盘中的64个方格,走访64个方格一次且仅一次,并且最终返回到起始点。 TSP由美国RAND公司于1948年引入,该公司的声誉以及线性规划这一新方法的出现使得TSP成为一个知名且流行的问题。 3.问题解法 旅行推销员的问题,我们称之为巡行(Tour),此种问题属于NP-Complete 的问题,从距离矩阵中产生一个近似最佳解的途径,有以下几种解法: 1、途程建构法(Tour Construction Procedures) 2、途程改善法(Tour Improvement Procedure) 先给定一个可行途程,然后进行改善,一直到不能改善为止。有以下几种解法:如果成本降低(距离减少),则取代之,直到无法改善为止,K通常为2或3。 3、合成启发法(Composite Procedure) 有以下几种解法:起始解求解+2-Opt:起始解求解+3-Opt: 4.解法思路 旅行推销员的问题,我们称之为巡行(Tour),此种问题属于NP完全问题(NP-Complete),所以旅行商问题大多集中在启发式解法。Bodin(1983)等人将旅行推销员问题的启发式解法分成三种: 途程建构法 从距离矩阵中产生一个近似最佳解的途径,有以下几种解法:如 1、近邻点法(Nearest Neighbor Procedure):一开始以寻找离场站最近的需求点为起始路线的第一个顾客,此后寻找离最后加入路线的顾客最近的需求点直到最后。(像贪婪算法) 2、节省法(Clark and Wright Saving):以服务每一个节点为起始解,根据三角不等式两边之和大于第三边之性质,其起始状况为每服务一个顾客后便回场站,而后计算路线间合并节省量,将节省量以降序排序而依次合并路线,直到最后。(像Dijstra算法) 3、插入法(Insertion procedures):如插入法、最省插入法、随意插入法、最远插入法、最大角度插入法等。 途程改善法 先给定一个可行途程,然后进行改善,一直到不能改善为止。有以下几种解法:

旅行商问题概述_郭靖扬

旅行商问题(TravelingSalesmanProblem,简称TSP)是一个著名的组合优化问题:给定n个城市,有一个旅行商从某一城市出发,访问每个城市各一次后再回到原出发城市,要求找出的巡回路径最短。如果用图论来描述,那就是已知带权图G= (C,L),寻出总权值最小的Hamilton圈。其中C={c1,c2,…,cn}表示n个城市的集合,L={lij|ci,cj∈C}是集合C中元素(城市)两两连接的集合,每一条边lij,都存在与之对应的权值dij,实际应用中dij可以表示距离、费用、时间、油量等。 TSP的描述虽然简单, 解决起来却很困难。最简单思路是用穷举法把所有可能的巡回路径全部列出来,最短的一个就是最优解,但这样只能处理很小规模的问题。旅行商问题属于 NP-complete问题, 是NP(non-deterministicpoly-nominal)问题中最难的一类,不能在多项式时间内求解。如果有n座城市,那么巡游路径共有(n-1)!/2条,计算的时间和(n-1)!成正比。当 城市数n=20,巡回路径有1.2×1018种,n=100, 巡回路径就有多达4.6×10155种,而据估计宇宙中基本粒子数“仅仅只有”1087个。 尽管如此,随着算法研究的逐步深入和计算机技术飞速提高,对TSP问题的研究不断取得进展。70年来,被征服的TSP规模从几十个城市增加到上万个城市。目前的最高记录是在2004年5月,找到的巡游瑞典24978个城镇的最优路径 (sw24978), 花费了84.8个CPU年。图1展示了TSP的研究进展,最近的二三十年时间里,被攻克的TSP规模高速增长,差不多是每十年增加一个数量级。照这样发展下去的话,再过20年就能解决上百万个城市的TSP,有专家甚至已经为此准备好了数据:全球190,4711个城市的坐标。当然,能不能达到这 个目标,有赖于未来计算技术的发展。 图1TSP的发展 字母后面的数字表示城市数,“sw24978”就是瑞典的 24978个城镇。 一、应用 旅行商问题具有重要的实际意义和工程背景。它一开始 是为交通运输而提出的,比如飞机航线安排、送邮件、快递服务、设计校车行进路线等等。实际上其应用范围扩展到了许多其他领域,下面举几个实例。 印制电路板转孔是TSP应用的经典例子,在一块电路板上打成百上千个孔,转头在这些孔之间移动,相当于对所有的孔进行一次巡游。把这个问题转化为TSP,孔相当于城市,孔到孔之间的移动时间就是距离。 为了避免大气干扰,使光学系统达到其衍射极限分辨率,欧美发达国家提出发展空间光干涉仪和综合孔径望远镜的计划。美国航空航天局有一个卫星群组成空间天文台(Space-basedObservatories)的计划, 用来探测宇宙起源和外星智慧生命。欧洲空间局也有类似的Darwin计划。对天体成像的时候,需要对两颗卫星的位置进行调整,如何控制卫星,使消耗的燃料最少,可以用TSP来求解。这里把天体看作城市,距离就是卫星移动消耗的燃料。 美国国家卫生协会在人类基因排序工作中用TSP方法绘制放射性杂交图。把DNA片断作为城市,它们之间的相似程度作为城市间的距离。法国科学家已经用这种办法作出了老鼠的放射性杂交图。 此外,旅行商问题还有电缆和光缆布线、晶体结构分析、数据串聚类等多种用途。更重要的是,它提供了一个研究组合优化问题的理想平台。很多组合优化问题,比如背包问题、分配问题、车间调度问题,和TSP同属NP-complete类,它们都是同等难度的,如果其中一个能用多项式确定性算法解决,那么其他所有的NP-complete类问题也能用多项式确定性算法解决。很多方法本来是从TSP发展起来的,后来推广到其他NP-complete类问题上去。 二、TSP求解方法 求解旅行商问题的方法可以分为两大类,一类是精确算法,目的是要找到理论最优解;另一类是近似算法,不强求最优解,只要找到“足够好”的满意解就可以了。 (一)精确算法 如前面所述,穷举法和全局搜索算法属于精确算法,但 旅行商问题概述 郭靖扬 (电子科技大学光电信息学院, 四川成都610054) 【摘要】旅行商问题是组合优化的经典问题,应用广泛,而且长期以来被作为NP-complete问题的理想研究平台。文章介绍 了旅行商问题的基础知识、应用,以及常用的求解方法。 【关键词】旅行商问题;组合优化;NP-complete;k-opt;智能算法【中图分类号】TP182【文献标识码】A【文章编号】1008-1151(2006)08-0229-02大众科技 DAZHONGKEJI2006年第8期(总第94期) No.8,2006 (CumulativelyNo.94) 【收稿日期】2006-03-18【作者简介】郭靖扬(1980-),四川宜宾人,电子科技大学光电信息学院硕士研究生。 229--

旅行商问题数学建模

黄石理工学院 数学建模大型作业2011—2012 学年第1学期

目录 一.摘要 二.旅行问题 1.问题描述 2.符号说明 3.模型设计 4.建模求解 5.模型分析 6. 三.建模过程及心得体会 四.参考文件

一.摘要 本文是一个围绕旅行商问题和背包问题这两个经典问题的论文。问题一,是一个依赖与每个城市去一次且仅去一次的路线确定问题,问题二类似于问题一。问题三是一个依赖于可背重量限制的背包问题。 关键词:HAMILTON回路 LINGO 最优旅行路线 0-1模型 二.旅行问题 问题描述 某人要在假期内从城市A出发,乘火车或飞机到城市B,C,D,E,F 旅游购物。他计划走遍这些城市各一次且仅一次,最后返回城市A。已知城市间的路费数据见附表1,请你设计一条旅行路线使得他的总路费最少。如果临行他因故只能去4个城市,该怎样修订旅行路线? 在城市间旅游时他计划购买照相机,衣服,书籍,摄像机,渔具,白酒,食品,而受航空行李重量的限制以及个人体力所限,所买物品的总重量不能超过15kg,各种物品的价格见附表2.请你为他决策买哪些物品,使所买物品价值最大。

模型设计 首先给出一个定义:设v1,v2,......,vn 是图G 中的n 个顶点,若有一条从某一顶点v1出发,经过各节点一次且仅一次,最后返回出发点v1的回路,则称此回路为HAMILTON 回路。 问题1. 分析:这个优化问题的目标是使旅行的总费用最少,要做的决策是如何设定旅行路线,决策受的约束条件:每个城市都必须去,但仅能去一次。按题目所给,将决定变量,目标函数和约束条件用数学符号及式子表示出来,就可得一下模型。 模型建立: 对于6个城市的旅行问题设A,B,C,D,E,F 六个城市分别对应v1,v2,v3,v4,v5,v6。假设ij d 表示从城市i 到城市j 的费用。定义0-1整数型变量ij x =1表示从城市i 旅行到城市j ,否则 ij x =0。则旅行问题的数学模型可表示为一个整数规划问题。 min z=66 1 ij ij i j d x =∑∑ (i ≠j) s.t. 6 1ij i x =∑=1 (i ≠j ;j=1,2, (6) 6 1 ij j x =∑=1 (i ≠j ;i=1,2, (6) 1i j ij u u nx n -+≤- (i ≠j;i=2,3,……,6;j=2,3,……6) 其中辅助变量i u (i=2,3,……,6)可以是连续变化的,虽然这些变量在最优解中取普通的整数值(从而在约束条件中,可以限定这些变量为整数)。事实上,在最优解中,i u =访问城市的顺序数。 模型求解 运用LINGO ,输入程序: MODEL : !Traveling Sales Problem for the cities of six city; SETS :

多旅行商问题模型

以点0表示旅行商的出发城市,称为源点,点1,2, ,l 表示m 个旅行商需访 问的城市。MTSP 问题的数学模型可以表示为: 令10ij x ?=??弧(i,j)在线路上 弧(i,j)不在线路上 模型表示如下: 0000min 10,1,,10,1,,()01,0,1,,R R ij ij i j R ij i R ij j ij ij z d x x j R x i R X x S x i j R ====?=?? ?==????==??=∈??==?∑∑∑∑或 式中:1;ij R m l d =+-为增广费用。若用(,1,,)ij c i j l =表示旅行商经过对应弧度(,)i j 所花的费用,如时间、距离、花费等,那么给ij c 增加(1)m -行和(1)m -列,每一新的行或列是ij c 的最后一行或列的复制,增广矩阵的其他元素为无穷大,由此构成了增广费用ij d 。 一般MTSP 中,旅行商访问l 个城市必须满足以下2个条件。 条件1:从指定城市出发,对其他所有城市严格访问一次后返回原出发城市。 条件2:一条有效路径严格由m 条非平凡子路径(Nontrivial Subtours)组成。所谓非平凡子路径是指该路径中除出发城市外,至少访问一个其他城市。 用遗传算法求解MTSP ,可通过附加虚拟城市的方法把MTSP 转化为TSP 。将另外(1)m -个旅行商理解为(1)m -个虚拟城市,这(1)m -个虚拟城市标号分别为1,2,,1,l l l m +++-,它们与城市0具有相同的坐标(即相同位置)。在旅行商访问路径中出现的每一个虚拟城市均表示旅行商返回出发城市,从而组成一个回路。每个回路表示MTSP 中一个旅行商的旅行路径。需注意的是,为了避免出现平凡子路径,必须假设(1)m -个虚拟城市到原点的距离为 00(,0,1,,1),ij c M i j l l m M ==++-为一无穷大的正数(即永远不能达到),到其他各点距离与原点一致,这样遗传算法就不会出现0-0-0的途径。将源点0复制(1)m -个,m 个源点编号为0,1,1,l l m ++-每一个同源点0一样与其他

多旅行商问题的matlab程序

多旅行商问题的 m a t l a b程序 Document serial number【NL89WT-NY98YT-NC8CB-NNUUT-NUT108】

%多旅行商问题的m a t l a b程序 function varargout = mtspf_ga(xy,dmat,salesmen,min_tour,pop_size,num_iter,show_prog,show_r es) % MTSPF_GA Fixed Multiple Traveling Salesmen Problem (M-TSP) Genetic Algorithm (GA) % Finds a (near) optimal solution to a variation of the M-TSP by setting % up a GA to search for the shortest route (least distance needed for % each salesman to travel from the start location to individual cities % and back to the original starting place) % % Summary: % 1. Each salesman starts at the first point, and ends at the first % point, but travels to a unique set of cities in between % 2. Except for the first, each city is visited by exactly one salesman % % Note: The Fixed Start/End location is taken to be the first XY point % % Input: % XY (float) is an Nx2 matrix of city locations, where N is the number of cities % DMAT (float) is an NxN matrix of city-to-city distances or costs % SALESMEN (scalar integer) is the number of salesmen to visit the cities % MIN_TOUR (scalar integer) is the minimum tour length for any of the % salesmen, NOT including the start/end point % POP_SIZE (scalar integer) is the size of the population (should be divisible by 8) % NUM_ITER (scalar integer) is the number of desired iterations for the algorithm to run % SHOW_PROG (scalar logical) shows the GA progress if true % SHOW_RES (scalar logical) shows the GA results if true % % Output:

[精品文档]旅行商问题

算法设计与分析实验报告实验三旅行商问题 院系: 班级:计算机科学与技术 学号: 姓名: 任课教师: 成绩: 湘潭大学 2016年5月

实验三旅行商问题 一. 实验内容 分别编程实现回溯法和分支限界法求TSP问题的最优解,分析比较两种算法的时间复杂度并验证分析结果。 二.实验目的 1、掌握回溯法和分支限界法解决问题的一般步骤,学会使用回溯法和分支限界法解决实际问题; 2、理解回溯法和分支限界法的异同及各自的适用范围。 三. 算法描述 旅行商问题的回溯法算法可描述如下: Template Class Traveling{ friend Type TSP(int ** , int[],int ,Type); Private; Void Backtrack(int i); Int n, //图G的顶点数 *x; //当前解 *bestx; //当前最优解 Type **a, //图G的邻接矩阵 cc, //当前费用 bestc,//当前最优解 NoEdge; //无边标记 }; Template Void Traveling : : backtrack(int i) {if(i ==n){

if(a[x[n-1]][x[n]]!=NoEdge&&a[x[n]][1]!=NoEdge&& (cc+a[x[n-1]][x[n]]+a[x[n]][1] +a[x[n]][1] Type TSP(Type**a, int v[], int n, Type NoEdge) {Traveling Y; //初始化Y Y.x = new int [n+1]; //置x为单位排列 For(int i = 1;i <= n;i++) Y.x[i] = i; Y.a = a; Y.n = n;

旅行商问题

旅行商问题: 问题描述:已知一个由n个城市(顶点)组成的有向网G , n个城市为v1, v2,…, v n , G的邻接矩阵为D=(d ij)nxn , d ij为边< v i, v j>上的权(表示城市v i到v j的耗费)。一个旅行商从v1开始,巡回访问每个城市一次且仅一次,最后返回v1, 这个旅行商该如何选择旅行线路,使得整个行程耗费最小? ● 分析: 可利用求一般问题的所有解的回溯算法得到解最优化问题的回溯算法。 (1) 该问题是求最短的哈密顿回路。 (2) 用min表示当前最优值,s[1..n]表示当前最优解。 (3) 除了解的约束条件,用如下剪枝条件进一步剪枝: 当前路径长度>=min (4) 设置一个标记数组tag[1..n]: tag[i]=1, 顶点i在当前路径上 tag[i]=0, 顶点i不在当前路径上 当一个顶点退出当前路径时,该顶点的标记应复原为0。 ● 回溯算法: 算法 TRAVELING_SALESMAN 输入:正整数n和含n个顶点的有向网G的邻接矩阵D。 输出:关于G的旅行商问题的一条最短旅行线路和最小耗费, 若问题无解,则输出no solution。 min=∞ x[1]=1 //用x[1..n]表示当前搜索路径, 从顶点1开始。 len=0 //len表示当前路径的长度 tag[1]=1; tag[2..n]=0 //设顶点标记初值。 salesman( 2 ) if min<∞ then output (min, s[1..n]) //输出最优值和最优解。 else output (“no solution”)//输出无解 end if end TRAVELING_SALESMAN 过程 salesman(k) //在已得到当前路径x[1..k-1]的情况下,求G的长度

多旅行商问题模型

令x ij 弧(i,j)在线路上 弧(i,j) 不在线路上 以点0表示旅行商的出发城市,称为源点,点1,2丄,1表示m个旅行商需访 问的城市。MTSP问题的数学模型可以表示为: 模型表示如下: RR min z d ij x ij i0j0 R x ij 1 j 0,1,L ,R i0 R x ij 1 i 0,1,L ,R j0 X (x ij ) S x ij 0或1 i, j 0,1,L ,R 式中:R m l 1;d ij为增广费用。若用C ij (i,j 1,L ,1)表示旅行商经过对应弧度(i, j)所花的费用,如时间、距离、花费等,那么给q增加(m 1)行和(m 1)列,每一新的行或列是c ij 的最后一行或列的复制,增广矩阵的其他元素为无穷大,由此构成了增广费用d ij 。 一般MTSP中,旅行商访问I个城市必须满足以下2个条件。 条件 1:从指定城市出发,对其他所有城市严格访问一次后返回原出发城市。 条件2:一条有效路径严格由m条非平凡子路径(Nontrivial Subtours)组成。所谓非平凡子路径是指该路径中除出发城市外,至少访问一个其他城市。 用遗传算法求解MTSP,可通过附加虚拟城市的方法把 MTSP转化为TSP。 将另外(m 1)个旅行商理解为(m 1)个虚拟城市,这(m 1)个虚拟城市标号分 别为l 1,l 2,L ,l m 1,,它们与城市0具有相同的坐标(即相同位置)。在旅 行商访问路径中出现的每一个虚拟城市均表示旅行商返回出发城市,从而组成一个回路。每个回路表示MTSP中一个旅行商的旅行路径。需注意的是,为了避免出现平凡子路径,必须假设(m 1)个虚拟城市到原点的距离为 c ij M0(i, j 0,l 1,L ,l m 1 ) , M 0为一无穷大的正数(即永远不能达到) ,到其他各点距离与原点一致,这样遗传算法就不会出现 0-0-0 的途径。将源点 0 复制(m 1)个,m个源点编号为0,1 1,L l m 1,每一个同源点0 —样与其他

求解旅行商问题的几种解法

2010年第5期(总第77期) 边疆经济与文化 THE BORDER ECONOMY AND CULT URE No 1512010General 1No 177 10  B I A N J I A N G J I N G J I Y U W EN HUA 【旅游经济】 求解旅行商问题的几种解法 高春涛 (哈尔滨商业大学基础科学学院,哈尔滨150028) 摘 要:旅行商问题(TSP )是一个典型的NP 完全问题,现在还没有找到有效的解法。目前比较热门的求解TSP 问题的方法主要有四种:神经网络算法;模拟退火算法;遗传算法;蚁群算法。 关键词:旅行商问题;组合优化;解法 中图分类号:F 592 文献标志码:A 文章编号:167225409(2010)0520010202 收稿日期:2010201222作者简介:高春涛(1973 ),女,黑龙江拜泉人,讲师,硕士,主要从事混沌神经网络研究。 一、引言 旅行商问题(Traveling Sales man Pr oble m ),是指给定n 个城市,任何两城市之间皆有路连通,其距离为已知,某旅行商从其中某城市出发,要经过每城市一次,且只能一次,最后又必须返回出发城市,要求找出最短的巡回路径。由于在很多实际问题中,如印刷电路板的铅孔路线方案、连锁店的货物配送路线等问题经过简化处理,均可建模为旅行商问题,因而对旅行商问题求解方法的研究具有重要的应用价值。旅行商问题是运筹学中有代表性的组合优化问题,也是典型的NP 完全问题。虽然它陈述起来很简单,但求解却很困难,对于具有n 个城市的TSP 问题,其可能的路径数目为(n -1)!/2,至今尚未找到有效的求解方法,在理论上枚举法可以解决这一问题,但是当n 较大时,解题的时间消耗会使枚举法显得没有任何实际价值。因此寻求一种求解时间短,能满足实际问题精度要求的解,成为解决该问题的主要途径。 二、TSP 求解方法 求解旅行商问题的方法可以分为两大类,一类是精确算法,目的是要找到理论最优解;另一类是近似算法,其算法简单,计算量小,大多数情况下求得的满意解能满足要求。 1.Hopfield 神经网络算法 1982年,Hopfield 开创性地在物理学、神经生物学和计算机科学等领域架起了桥梁,提出了Hopfield 反馈神经网络模型(HNN )。Hopfield 网络是典型的全连接网络,通过在网络中引入能量函数以构造动力学系统,并使网络的平衡态与能量函数 的极小解相对应,从而将求解能量函数极小解的过程转化为网络向平衡态的演化过程。尤其是通过对TSP 问题的成功求解,开辟了神经网络模型在计算机科学应用中的新天地,动态反馈网络从而受到广泛的研究和关注,被广泛应用于优化问题中,且已 设计出了专用的硬件电路。 [1] Hopfield 网络是一种非线性动力学模型,通过引入类似Lyapunov 函数的能量函数概念,把神经网络的拓扑结构(用连接矩阵表示)与所求问题(用目标函数描述)对应起来,转换成神经网络动力学系统的演化问题。因此,在用Hopfield 网络求解优化问题之前,必须将问题映射为相应的神经网络。对TSP 问题的求解,首先将问题的合法解映射为一个置换矩阵,并给出相应的能量函数,然后将满足置换矩阵要求的能量函数的最小值与问题的最优解相对应。 2.模拟退火算法 模拟退火算法最初的思想由Metr opolis 在1953 年提出,[2] Kirkpatrick 在1983年成功地将其应用在组合最优化问题中。模拟退火算法的出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。模拟退火算法在某一初温下,伴随温度参数的不断下降,结合概率突跳特征在解空间中随机寻找目标函数的全局最优解,即在局部优解能 概率性地跳出并最终趋于全局最优。[1] 用固体退火模拟组合优化问题,将内能E 模拟为目标函数f,温度T 演化成控制参数t,即得到解组合优化问题的模拟退火算法:有初始解i 和控制参数初值t 开始,对当前解重复“产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t 值,算法终止时的当前解即为所得近似最优解。

数学建模--运输问题

运输问题 摘要 本文主要研究的是货物运输的最短路径问题,利用图论中的Floyd算法、Kruskal 算法,以及整数规划的方法建立相关问题的模型,通过matlab,lingo编程求解出最终结果。 关于问题一,是一个两客户间最短路程的问题,因此本文利用Floyd算法对其进行分析。考虑到计算的方便性,首先,我们将两客户之间的距离输入到网络权矩阵中;然后,逐步分析出两客户间的最短距离;最后,利用Matlab软件对其进行编程求解,运行得到结果:2-3-8-9-10总路程为85公里。 关于问题二,运输公司分别要对10个客户供货,必须访问每个客户,实际上是一个旅行商问题。首先,不考虑送货员返回提货点的情形,本文利用最小生成树问题中的Kruskal算法,结合题中所给的邻接矩阵,很快可以得到回路的最短路线:-9-10-2;然后利用问题一的Floyd算法编程,能求得从客户2到客户1(提货点)的最短路线是:2-1,路程为50公里。即最短路线为:-9-10-2-1。但考虑到最小生成树法局限于顶点数较少的情形,不宜进一步推广,因此本文建立以路程最短为目标函数的整数规划模型;最后,利用LINGO软件对其进行编程求解,求解出的回路与Kruskal算法求出的回路一致。 关于问题三,是在每个客户所需固定货物量的情况下,使得行程之和最短。这样只要找出两条尽可能短的回路,并保证每条线路客户总需求量在50个单位以内即可。因此我们在问题二模型的基础上进行改进,以货车容量为限定条件,建立相应的规划模型并设计一个简单的寻路算法,对于模型求解出来的结果,本文利用Kruskal算法结合题中所 给的邻接矩阵进行优化。得到优化结果为:第一辆车:-1,第二辆车:,总路程为280 公里。 关于问题四,在问题一的基础上我们首先用Matlab软件编程确定提货点到每个客户点间的最短路线,然后结合一些限定条件建立一个目标模型,设计一个较好的解决方案进行求解可得到一种很理想的运输方案。根据matlab运行结果分析得出4条最优路线分别为:1-5-2,1-4-3-8,1-7-6,1-9-10。最短总路线为245公里,最小总费用为645。 关键词: Floyd算法 Kruskal算法整数规划旅行商问题 一、问题重述 某运输公司为10个客户配送货物,假定提货点就在客户1所在的位置,从第i个客 户到第j个客户的路线距离(单位公里)用下面矩阵中的(,) i j(,1,,10) i j=L位置上的数表示(其中∞表示两个客户之间无直接的路线到达)。 1、运送员在给第二个客户卸货完成的时候,临时接到新的调度通知,让他先给客户10 送货,已知送给客户10的货已在运送员的车上,请帮运送员设计一个到客户10的尽可能短的行使路线(假定上述矩阵中给出了所有可能的路线选择)。 2、现运输公司派了一辆大的货车为这10个客户配送货物,假定这辆货车一次能装满10 个客户所需要的全部货物,请问货车从提货点出发给10个客户配送完货物后再回到提货点所行使的尽可能短的行使路线?对所设计的算法进行分析。 3、现因资源紧张,运输公司没有大货车可以使用,改用两辆小的货车配送货物。每辆小

TSP问题的概述

TSP问题的概述 旅行商问题,即TSP问题(Traveling Salesman Problem)是数学领域中著名问题之一。假设有一个旅行商人要拜访N个城市,他必须选择所要走的路径,路径的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市。路径的选择目标是要求得的路径路程为所有路径之中的最小值。 TSP问题的由来 TSP的历史很久,最早的描述是1759年欧拉研究的骑士周游问题,即对于国际象棋棋盘中的64个方格,走访64个方格一次且仅一次,并且最终返回到起始点。 TSP由美国RAND公司于1948年引入,该公司的声誉以及线形规划这一新方法的出现使得TSP成为一个知名且流行的问题。 TSP在中国的研究 同样的问题,在中国还有另一个描述方法:一个邮递员从邮局出发,到所辖街道投邮件,最后返回邮局,如果他必须走遍所辖的每条街道至少一次,那么他应该如何选择投递路线,使所走的路程最短?这个描述之所以称为中国邮递员问题(Chinese Postman Problem CPP)因为是我国学者管梅古教授于1962年提出的这个问题并且给出了一个解法。 人工智能上的旅行商问题,以下给出的是算法,只是理解算法之用。 for detail contact me QQ: 413309082 /****************算法总框架*****************************/ int i; gs.search_init(adaptee.list_place.getSelectedIndex(),adaptee.list_fun.getSelectedI ndex()); do{ i=gs.search_step(); }while(i==0); /***************searchinit**************************/ public void search_init(int startindex,int strategy) { this.strategy = strategy; AStar.graph= G; G.setSize(AStar.len); start.index = startindex; Vertex s =new Vertex(); s.index = start.index; s.parent = -1; n =null; s.value =f(s.index); //s的估价函数值 G.add(s); start.parentpos = -1; start.value = s.value;

用遗传算法解决旅行商问题

用遗传算法解决旅行商问题 姓名:王晓梅 学号:1301281 班级:系统工程6班

一、问题背景 有一个销售员,要到n 个城市推销商品,他要找出一个包含所有n 个城市的具有最短路程的环路。 现在假设有10个城市,他们之间的距离如下。 { 0, 107, 241, 190, 124, 80, 316, 76, 152, 157}, { 107, 0, 148, 137, 88, 127, 336, 183, 134, 95}, { 241, 148, 0, 374, 171, 259, 509, 317, 217, 232}, { 190, 137, 374, 0, 202, 234, 222, 192, 248, 42}, { 124, 88, 171, 202, 0, 61, 392, 202, 46, 160}, { 80, 127, 259, 234, 61, 0, 386, 141, 72, 167}, { 316, 336, 509, 222, 392, 386, 0, 233, 438, 254}, { 76, 183, 317, 192, 202, 141, 233, 0, 213, 188}, { 152, 134, 217, 248, 46, 72, 438, 213, 0, 206}, { 157, 95, 232, 42, 160, 167, 254, 188, 206, 0} 将这10个城市分别编码为0,1,2,3,4,5,6,7,8,9。要求走完这10个城市,目标是使走的距离最短。 二、建立模型 ),...,1,(1) ,...,1,(1. .)(min 11 11n j j i n i j i t s j i n j ij n i ij ij n i n j ij x x d x =≠==≠=≠∑∑∑∑==== 三、设计算法 1、种群初始化 (1)一条染色体的初始化 10个城市分别对应0~9这十个数,每个染色体代表一个解决方法,即0~9这十个数的一种排序方式,可随机产生一个数,用取余的方法得到一个0~9的数,依次得到与前面不重复的十个数,构成一个染色体。 (2)种群的初始化 这里假设种群有100个染色体,也就是循环100次染色体的初始化可得到一个种群。

利用Hopfield神经网络求解旅行商问题研究

文章编号:1007-757X (2006)11-0001-03 利用Hopfield 神经网络求解旅行商问题研究 杨秀梅,a 陈洪亮,a 董得义a 摘 要:本文主要研究利用连续的Hopfield 网络求解TSP 问题,从连续的Hopfield 神经网络原理出发,结合TSP 问题的要求,在给定参数要求下求得问题的最优解。并分析了实际算法的弱点,给出分析改进算法,加快了算法的收敛速度,改善有效解并提高最优解的比例。 关键词:连续的Hopfield 网络;旅行商问题;改进算法;优化 中图分类号:TP 301 文献标识码:A 1 概述 用神经网络解决组合优化问题是神经网络应用的一个重 要方面。所谓组合优化问题,就是在给定约束条件下,使目标 函数极小(或极大)的变量组合问题。将Hopfield 网络应用于 求解组合优化问题,把目标函数转化为网络的能量函数,把问 题的变量对应到网络的状态。这样,当网络的能量函数收敛于 极小值时,问题的最优解也随之求出。由于神经网络是并行计 算的,其计算量不随维数的增加而发生指数性“爆炸”,因而对 于优化问题的高速计算特别有效。。本文针对将Hopfield 理论 应用于实践给出了研究性方法。2 问题的提出TSP 问题,即所谓的旅行商问题。问题的提法:在N 个城市中各经历一次后回到出发点,使所经过的路程最短。其不同选择方案有(N -1)!/2种,在城市数较少的情况下可以用枚举等方法,但如果城市数量较大,例如,N=33时,使用枚举法求解就要考虑的情况是1025数量级,计算量如此之大是不可想象的。将Hopfield 网络应用于求解TSP 问题,效果是显著的。下面就利用连续的Hopfield 网络求解T SP 问题进行探讨。3 Hopfield 神经网络及求解TSP 问题算法1)Hopfield 神经网络主要是模拟生物神经网络的记忆机理,是一种全连接型的神经网络,对于每个神经元来说,自己 输出的信号通过其他神经元又反馈到自身,所以Hopfield 神 经网络是一种反馈型神经网络。连续的Hopfield 神经网络状 态的演变过程是一个非线性动力学系统,可以用一组非线性 微分方程来描述。系统的稳定性可用所谓的“能量函数”(即李雅普诺夫或哈密顿函数)进行分析。在满足一定条件下,某种“能量函数”的能量在网络运行过程中不断地减小,最后趋于稳定的平衡状态。反馈网络达稳定状态时可以使系统的能量达极小,因而可用于一些最优化问题的计算,能量公式如下:E =-126N i =16N j =1T ij v i v j -6N i =1H i v i =-12v T Tv -v T 在实践中,Hopfield 神经网络理论可应用于很多领域。但实际中由于将理论转化为实践存在一些技术难点需要解决,导致实际中很少用。下面以TSP 问题进行连续的Hopfield 神经网络理论应用研究。 2)求解TSP 问题算法 实例:本实验中采用Hopfield 网络的方法实现以5个城市 为例的TSP 问题。设有5个城市A,B,C,D,E,用d xy (x,y ∈{A, B,C,D,E})表示城市x 和城市y 之间的距离(d xy >0)。有一推 销员从某一城市出发(如从城市C 出发)访问各城市一次且仅 一次后再回到原出发城市,要求找出一条最短的巡回路线, 即:I =d CA +d AE +d E B +d BD +d DC →m in 。 建模:在5-T SP 中,如城市1在第3个被访问,则对应的 向量为V (1)=00100。5个城市TSP 问题需用5*5个神经元 来实现,而每行每列都只能有一个1,其余为0,该阵称为换位 矩阵。换位矩阵中1的和为5,所构造的函数极小值对应于最 短路径。 式中取S =1.0;u 0为符号函数的参量,u 0越小,符号函数 的离散化程度越高。在进行迭代前,要对uxi 赋初值,不妨令 u xi,init =-0.5*u 0*1n (N-1)*(1+D ),D 是在(-0.1,0.1) 的随机数。在迭代时,u t+1xi =u t xi +du xi dt *D t 为运算步长。因为能量在极小值时变化最慢,所以将能量函数E 变化小到一定程度作为结束标变化小到一定程度作为结束标志,即$E F Min_value 。如果超过了一定的迭代次数仍没有收 a a a 董得义,上海交通大学电信学院,上海 200240 陈洪亮,上海交通大学电信学院,上海 200240 作者简介:杨秀梅,上海交通大学电信学院,硕士研究生,上海 200240

多旅行商问题的matlab程序

%多旅行商问题的matlab程序 function varargout = mtspf_ga(xy,dmat,salesmen,min_tour,pop_size,num_iter,show_prog,show_res) % MTSPF_GA Fixed Multiple Traveling Salesmen Problem (M-TSP) Genetic Algorithm (GA) % Finds a (near) optimal solution to a variation of the M-TSP by setting % up a GA to search for the shortest route (least distance needed for % each salesman to travel from the start location to individual cities % and back to the original starting place) % % Summary: % 1. Each salesman starts at the first point, and ends at the first % point, but travels to a unique set of cities in between % 2. Except for the first, each city is visited by exactly one salesman % % Note: The Fixed Start/End location is taken to be the first XY point % % Input: % XY (float) is an Nx2 matrix of city locations, where N is the number of cities % DMAT (float) is an NxN matrix of city-to-city distances or costs % SALESMEN (scalar integer) is the number of salesmen to visit the cities % MIN_TOUR (scalar integer) is the minimum tour length for any of the % salesmen, NOT including the start/end point % POP_SIZE (scalar integer) is the size of the population (should be divisi ble by 8) % NUM_ITER (scalar integer) is the number of desired iterations for the algorithm to run % SHOW_PROG (scalar logical) shows the GA progress if true % SHOW_RES (scalar logical) shows the GA results if true % % Output: % OPT_RTE (integer array) is the best route found by the algorithm % OPT_BRK (integer array) is the list of route break points (these specify the indices % into the route used to obtain the individual salesman routes) % MIN_DIST (scalar float) is the total distance traveled by the salesmen % % Route/Breakpoint Details: % If there are 10 cities and 3 salesmen, a possible route/break % combination might be: rte = [5 6 9 4 2 8 10 3 7], brks = [3 7] % Taken together, these represent the solution [1 5 6 9 1][1 4 2 8 1][1 10 3 7 1], % which designates the routes for the 3 salesmen as follows: % . Salesman 1 travels from city 1 to 5 to 6 to 9 and back to 1 % . Salesman 2 travels from city 1 to 4 to 2 to 8 and back to 1 % . Salesman 3 travels from city 1 to 10 to 3 to 7 and back to 1 % % 2D Example: % n = 35;

相关文档
最新文档