多旅行商问题模型
- 格式:docx
- 大小:36.16 KB
- 文档页数:2
关于旅行商问题的数学模型旅行商问题(TravelingSalesmanProblem,TSP)是著名的组合优化问题,它的目标是找到一条路径,使得一个旅行商可以经过所有给定的城市,路径总长度最短。
这个问题在实际生活中有着广泛的应用,例如物流配送、电路板布线、DNA序列比对等领域。
本文将介绍旅行商问题的数学模型和解法。
1. 问题描述假设有n个城市,它们的位置分别为(xi,yi),i=1,2,...,n。
旅行商要从一个城市出发,经过所有城市恰好一次,最后回到出发城市。
城市之间的距离可以用欧几里得距离表示:d(i,j) = sqrt((xi-xj)^2 + (yi-yj)^2)旅行商问题的目标是找到一条路径,使得路径总长度最短。
2. 数学模型2.1 定义变量我们定义变量xij表示从城市i到城市j的路径是否被选择,如果被选择则xij=1,否则xij=0。
例如,x12表示从城市1到城市2的路径是否被选择。
2.2 目标函数旅行商问题的目标是找到一条路径,使得路径总长度最短。
因此,我们可以定义目标函数为:minimize ∑i∑j d(i,j)xij其中,i,j表示城市的编号,d(i,j)表示城市i和城市j之间的距离,xij表示从城市i到城市j的路径是否被选择。
2.3 约束条件旅行商需要经过所有城市恰好一次,因此我们需要添加以下约束条件:1. 每个城市只能被经过一次:∑j xij = 1, i=1,2,...,n2. 每个城市离开后只能到达一个城市:∑i xij = 1, j=1,2,...,n3. 不能出现子回路:∑i∈S ∑j∈S xij ≤ |S|-1, S{1,2,...,n}, |S|≥2其中,第一个约束条件表示每个城市只能被经过一次,第二个约束条件表示每个城市离开后只能到达一个城市,第三个约束条件表示不能出现子回路。
3. 解法旅行商问题是一个NP难问题,没有多项式时间算法可以求解。
因此,我们需要使用一些启发式算法来求解这个问题。
Microcomputer Applications V ol.27,No.7,2011开发应用微型电脑应用2011年第27卷第7期5文章编号:1007-757X(2011)07-0045-03基于并行遗传算法多旅行商问题的求解吴云,姜麟,刘强摘要:以往求解多旅行商问题的研究仅局限于以各旅行商路程总和最小为优化标准的传统遗传算法,而没有考虑他们的速度和所花时间。
在MPI 并行环境下,用C++语言实现了粗粒度模型的并行遗传算法。
结合并行遗传算法的特点,提出了解决多旅行商问题的策略以及给出相应的算法过程,并进行了有效验证。
通过研究结果表明,与传统遗传算法相比,并行遗传算法提高了运算速度,降低了平均开销时间并且最小总路径值更理想。
关键词:并行遗传算法;多旅行商问题;消息传递中图分类号:CN 31-1634/TP 文献标志码:A0引言旅行商问题(Traveling Salesman Problem,简称TSP),又称为货郎担问题,这是一个古老而又困难的问题,至今尚未彻底解决。
经过几十年的发展TSP 取得了一些显著成果,除了经典旅行商问题外还引申出它的扩展形式:多旅行商问题(Multiple Traveling Salesman Problem ,简称MTSP)。
多旅行商问题就是有N 个城市,M 个旅行商从同一城市(或不同城市)出发,访问所有城市,使得每个城市有且仅有一个旅行商经过(出发城市除外),且总旅行路程最短。
近年来MTSP 问题已经吸引了大量的研究者和探索者。
它是一个典型、易描述却难处理的NP 组合优化问题[1],组合优化是遗传算法最基本的研究应用领域之一。
遗传算法是一种基于自然选择和群体遗传进化机理的随机搜索迭代算法,具有良好的全局寻优能力。
以往求解旅行商问题只考虑总路程和最短,而没有考虑所花时间。
本文结合并行优化方法,以便确定各个旅行商的行走路线使所花时间更小速度更快路径最短。
1多旅行商问题的数学描述多旅行商问题实际上就是寻找加权图中的最短回路问题。
图算法--旅⾏商问题旅⾏商问题的描述试想⼀下,⼀个业务员因⼯作需要必须访问多个城市。
他的⽬标是每个城市只访问⼀次,并且尽可能地缩短旅⾏的距离,最终返回到他开始旅⾏的地点,这就是旅⾏商问题的主要思想。
在⼀幅图中,访问每个顶点⼀次,并最终返回起始顶点,这个访问的轨迹称为哈密顿圈。
要解决旅⾏商问题,需要⽤图G=(V,E)作为模型,寻找图中最短的哈密顿圈。
G是⼀个完整的、⽆⽅向的带权图,其中V代表将要访问的顶点的集合,E为连接这些顶点的边的集合。
E中每条边的权值由顶点之间的距离决定。
由于G中⼀个完整的、⽆⽅向的图,因此E包含V(V-1)/2条边。
事实上,旅⾏商问题是⼀种特殊的⾮多项式时间问题,称为NP完全问题。
NP完全问题是指那些多项式时间算法未知,倘没有证据证明没有解决的可能性的问题。
考虑到这种思想,通常⽤⼀种近似算法来解决旅⾏商问题。
最近邻点法的应⽤⼀种近似的计算旅⾏商路线的⽅法就是使⽤最近邻点法。
其运算过程如下:从⼀条仅包含起始顶点的路线开始,将此顶点涂⿊。
其他顶点为⽩⾊,在将其他顶点加⼊此路线中后,再将相应顶点涂⿊。
接着,对于每个不在路线中的顶点v,要为最后加⼊路线的顶点u与v之间的边计算权值。
在旅⾏商问题中,u与v之间边的权值就是u到v 之间的距离。
这个距离可以⽤每个顶点的坐标计算得到。
两个点(x1,y1)与(x2,y2)之间距离的计算公式如下:r = √(x2 - x1)2 + (y2 - y1)2 (注意是求和的平⽅根)利⽤这个公式,选择最接近u的顶点,将其涂⿊,同时将其加⼊路线中。
接着重复这个过程,直到所有的顶点都涂成⿊⾊。
此时再将起始顶点加⼊路线中,从⽽形成⼀个完整的回路。
下图展⽰了使⽤最近邻点法来解决旅⾏商问题的⽅法。
通常,在为旅⾏商问题构造⼀个图时,每个顶点之间相连的边不会显⽰表⽰出来,因为这种表⽰会让图不清晰了,也没有必要。
在图中,每个顶点旁边都显⽰其坐标值,虚线表⽰在此阶段需要⽐较距离的边。
以点0表示旅行商的出发城市,称为源点,点1,2,,l 表示m 个旅行商需访问的城市。
MTSP 问题的数学模型可以表示为: 令10ij x ⎧=⎨⎩弧(i,j)在线路上 弧(i,j)不在线路上模型表示如下:0000min 10,1,,10,1,,()01,0,1,,R R ij iji j R ij i R ij j ij ij z d x x j R x i R X x Sx 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的途径。
走遍全中国方案的研究摘要本文通过对走遍中国各省会城市、直辖市和港澳台的最优路径选择问题进行分析,发现这是一个十分典型的旅行商问题(Traveling Salseman Problem ),即寻找一条遍历n 个城市(在本文中为34个城市)的最短路径。
我们搜索了这34个城市的经纬度和部分列车、航班时刻表等各方面信息,综合省钱、省时、方便等因素,进一步深入并细化,从而得到判断各订票方案的准则。
针对问题一,我们利用欧几里得平面知识,由公式0002901800290A B x R A y R ππ+⎧=⋅⎪⎪⎨-⎪=⎪⎩将该34个城市的经纬度转化为平面直角坐标,从而将其简化成二维平面问题。
目前,解旅行商问题(tsp 问题)的方法有许多种,本文采用了较为先进的遗传算法。
遗传算法是目前解决组合优化问题最有效的工具之一,本文介绍了遗传算法的基本原理,讨论了遗传算法中的有关遗传算子设计等方面的技术。
由于该算法在搜索空间中同时考虑了许多点,这样就减少了收敛于局部极小的可能,也增加了处理的并行性。
同时,我们利用MATLAB 软件编辑了相关程序,计算出了遍历该34个城市的最短路径,其路径长度为14661km 。
对于问题二,在只考虑旅行路线最经济的前提下,结合第一问得出的最优路径,我们收集了这34个城市的列车和航班时刻表等信息,从而找出最经济的订票方案,并得其花费为11426元。
针对问题三,在综合考虑省时、省钱、方便等诸多因素的前提下制定订票方案的评价准则,我们运用了层次分析法对其进行研究。
根据对旅行过程中省时,省钱及方便的偏重程度,我们相应地给出了判断矩阵111571513731⎡⎤⎢⎥⎢⎥⎢⎥=⎢⎥⎢⎥⎢⎥⎢⎥⎣⎦A ,然后对其进行一致性检验,发现其不一致程度在容许范围内。
因此我们利用其最大特征根max λ对应的特征向量w 作为比较因素的权向量,并得到以下评价表达式:12120.0740.2830.643*(0.8330.167)C x x x x =+++。
旅⾏商问题+背包问题--经典问题问题描述:旅⾏商问题(Traveling Salesman Problem,TSP)是旅⾏商要到若⼲个城市旅⾏,各城市之间的费⽤是已知的,为了节省费⽤,旅⾏商决定从所在城市出发,到每个城市旅⾏⼀次后返回初始城市,问他应选择什么样的路线才能使所⾛的总费⽤最短?此问题可描述如下:设G=(V,E)是⼀个具有边成本cij的有向图,cij的定义如下,对于所有的i和j,cij>0,若<i,j>不属于E,则cij=∞。
令|V|=n,并假设n>1。
G的⼀条周游路线是包含V中每个结点的⼀个有向环,周游路线的成本是此路线上所有边的成本和。
旅⾏商问题(Traveling Saleman Problem,TSP)⼜译为旅⾏推销员问题、货郎担问题,简称为TSP问题,是最基本的路线问题,该问题是在寻求单⼀旅⾏者由起点出发,通过所有给定的需求点之后,最后再回到原点的最⼩路径成本。
最早的旅⾏商问题的数学规划是由Dantzig(1959)等⼈提出。
TSP问题在物流中的描述是对应⼀个物流配送公司,欲将n个客户的订货沿最短路线全部送到。
如何确定最短路线。
TSP问题最简单的求解⽅法是枚举法。
它的解是多维的、多局部极值的、趋于⽆穷⼤的复杂解的空间,搜索空间是n个点的所有排列的集合,⼤⼩为(n-1)。
可以形象地把解空间看成是⼀个⽆穷⼤的丘陵地带,各⼭峰或⼭⾕的⾼度即是问题的极值。
求解TSP,则是在此不能穷尽的丘陵地带中攀登以达到⼭顶或⾕底的过程。
问题分析旅⾏商问题要从图G的所有周游路线中求取最⼩成本的周游路线,⽽从初始点出发的周游路线⼀共有(n-1)!条,即等于除初始结点外的n-1个结点的排列数,因此旅⾏商问题是⼀个排列问题。
排列问题⽐⼦集合的选择问题通常要难于求解得多,这是因为n个物体有n!种排列。
通过枚举(n-1)!条周游路线,从中找出⼀条具有最⼩成本的周游路线的算法,其计算时间显然为O(n!)。
一、问题描述TSP ,即Traveling Saleman Problem ,也就是旅行商问题,又译为旅行推销员问题、货郎担问题,简称为TSP 问题,是最基本的路线问题。
TSP 的历史很久,最早的描述是1759年欧拉研究的骑士周游问题,即对于国际象棋棋盘中的64个方格,走访64个方格一次且仅一次,并且最终返回到起始点。
TSP 问题指一个旅行商,n 个城市。
旅行商要从这一个出发地出发,择一条路径(哈密顿回路),对n 个城市中的每一个城市进行一次且仅一次的访问,最后回到出发地.其目标是得到所有可行路径之中的最小路径,或旅行时间最短,或旅行费用最少等。
如图1,图2所示,为一个5个城市的TSP 问题描述(仅画出两种方案),显然图1和图2的路线都满足遍及所有城市的要求,但是图2的路线长度要远小于图1的路线长度,而解TSP 问题的目的就是求出遍及所有城市的长度最短的路线方案。
该问题的模型可以表示为下述0/1整数规划模型:2 4 1 图13 5 1 24 35 图2{}(,j)A {:(,)}{j:(,)}{(,):,}min(1)..1(2)1(3)||12|U |||2(4)0,1ij ij i ij i i j A ij i j A ij i j A i U j U ij c x st x j Vx i Vx U V x ∈∈∈∈∈∈=∈=∈≤-≤≤-∈∑∑∑∑n :所要访问的城市数目。
V :所有访问的城市集。
.U :所有访问的城市集的真子集,即V U ⊂。
A :连接任意两个点的弧组成的集合。
()j i :所要访问的第()j i 个城市,即V j i ∈,。
ij c :相邻两个城市间距离。
如果 j i =,则0=ij c 。
()⎩⎨⎧=其他城市城市后紧接着访问如果访问01,j i j i X二、总结和展望禁忌搜索算法是对人类思维过程本身的一种模拟,其特点是采用了禁忌技术,它通过对一些局部最优解的禁忌达到接纳一部分较差解,从而跳出局部搜索的目的。
TSP的几种求解方法及其优缺点一、什么是TSP问题旅行商问题,简称TSP,即给定n个城市和两两城市之间的距离,要求确定一条经过各城市当且仅当一次的最短路线。
其图论描述为:给定图G=(V,A),其中V为顶点集,A 为各顶点相互连接组成的边集,设D=(dij)是由顶点i和顶点j之间的距离所组成的距离矩阵,要求确定一条长度最短的Hamilton回路,即遍历所有顶点当且仅当一次的最短距离。
旅行商问题可分为如下两类:1)对称旅行商问题(dij=dji,Πi,j=1,2,3,⋯,n);2)非对称旅行商问题(dij≠dji,ϖi,j=1,2,3,⋯,n)。
非对称旅行商问题较难求解,我们一般是探讨对称旅行商问题的求解。
若对于城市V={v1,v2,v3,⋯,v n}的一个访问顺序为T={t1,t2,t3,⋯,t i,⋯,t n},其中t i∈V(i=1,2,3,⋯,n),且记t n+1=t1,则旅行商问题的数学模型为:minL=。
TSP是一个典型的组合优化问题,并且是一个NP完全难题,是诸多领域内出现的多种复杂问题的集中概括和简化形式,并且已成为各种启发式的搜索、优化算法的间接比较标准。
因此,快速、有效地解决TSP有着重要的理论价值和极高的实际应用价值。
二、主要求解方法基于TSP的问题特性,构造型算法成为最先开发的求解算法,如最近邻点、最近合并、最近插入、最远插入、最近添加、贪婪插入等。
但是,由于构造型算法优化质量较差,迄今为止已开发了许多性能较好的改进型搜索算法,主要有:1)模拟退火算法2)禁忌搜索算法3)Hopfield神经网络优化算法4)蚁群算法5)遗传算法6)混合优化策略2.1模拟退火算法方法1)编码选择:采用描述TSP解的最常用的一种策略——路径编码。
2)SA状态产生函数的设计:对于基于路径编码的SA状态产生函数操作,可将其设计为:①互换操作(SW AP);②逆序操作(INV);③插入操作(INS)。
3)SA状态接受函数的设计:min{1,exp(-△/t)}>random[0,1]准则是作为接受新状态的条件最常用的方案,其中△为新旧状态的目标值差,t为”温度”。
多目标旅行商问题(MO-TSP)是指在多个目标地点之间找到最优路径,使得旅行商能够同时满足多个旅行目标的问题。
这是一个复杂的组合优化问题,涉及到时间、成本、距离等多个目标的平衡。
针对这一问题,已经有许多算法被提出,比如遗传算法、模拟退火算法、蚁群算法等。
在本文中,我将针对用于解决多目标旅行商问题的算法进行深入剖析和讨论。
1. 遗传算法遗传算法是一种模仿自然选择和遗传机制的优化方法,通过种群的进化来寻找问题的最优解。
在解决MO-TSP问题时,遗传算法可以通过不断进化种群中的路径来寻找最佳的解决方案。
在每一代进化中,选择、交叉和变异等操作都会对种群进行改进,直到找到最优的解。
2. 模拟退火算法模拟退火算法是一种启发式算法,模拟金属退火过程中的晶粒结构变化来寻找问题的最优解。
在解决MO-TSP问题时,模拟退火算法可以通过接受较差解的概率来跳出局部最优解,并在搜索空间中进行全局搜索,以找到更好的解。
3. 蚁群算法蚁群算法是一种基于蚁群寻食行为的启发式算法,模拟蚂蚁在搜索食物时释放信息素的过程。
在解决MO-TSP问题时,蚁群算法可以通过蚂蚁在路径上释放信息素的方式来寻找最优路径,蚁群不断更新信息素浓度,并通过信息素浓度来选择下一步的移动方向。
在实际应用中,这几种算法都有其优缺点,如何选择最合适的算法取决于实际问题的复杂度、目标要求和算法的性能。
在我看来,遗传算法在求解MO-TSP问题时具有良好的全局搜索能力,但对于大规模问题的收敛速度可能较慢;模拟退火算法适用于局部搜索和全局搜索的结合,但在处理多目标问题时需要合理设定参数;蚁群算法在求解路径优化问题时具有较好的鲁棒性和稳健性,但对于问题解空间的探索可能会存在过早收敛的问题。
MO-TSP问题是一个复杂的组合优化问题,需要综合运用各种启发式算法和元启发式算法,以及结合实际问题的特点和要求,才能找到最佳的解决方案。
通过对算法的深入理解和灵活运用,我们可以在实际问题中取得较好的优化效果。
3 旅行商问题3.1 旅行商问题概述3.1.1 旅行商问题的定义和数学模型① 定义旅行商问题(Traveling Salesman Problem ,简记TSP)是组合数学中一个古老而又困难的问题,它易于描述但至今尚未彻底解决,现己归入所谓的NP 完全问题类,经典提法为:有一货物推销员要去若干个城市推销货物,从城市1出发,经其余各城市一次,然后回到城市1,问选择怎样的行走路线,才能使总行程最短(各城市间距离为己知)。
该问题在图论的意义下就是所谓的最小Hamilton 圈问题,由于在许多领域中都有着广泛的应用,因而寻找其实际而有效的算法就显得颇为重要了。
遗憾的是,计算复杂性理论给予我们的结论却是,这种可能性尚属未知。
若设城市数目为n 时,那么组合路径数则为(n-1)!。
很显然,当城市数目不多时要找到最短距离的路线并不难,但随着城市数目的不断增大,组合路线数将呈指数级数规律急剧增长,以至达到无法计算的地步,这就是所谓的“组合爆炸问题”。
假设现在城市的数目增为20个,组合路径数则为(20-1)! ,如此庞大的组合数目,若计算机以每秒检索1000万条路线的速度计算,也需要花上386年的时间。
尽管现在计算机的计算速度大大提高,而且已有一些指数级的算法可精确地求解旅行商问题,但随着它们在大规模问题上的组合爆炸,人们退而求其次,转向寻找近似算法或启发式算法,经过几十年的努力,取得了一定的进展。
② 数学模型设(,)G V E =为赋权图,{1,2,}V n ="为顶点集,E 为边集,各顶点间距离为ij c ,已知(0,,,)ij ij c c i j V >=+∞∈,并设则旅行商问题的数学模型可写成如下的线性规划形式:ij ij i jMinZ c x ≠=∑1,(,)0,ij i j x ⎧=⎨⎩边在最优路线上其它,1,1,.1,{0,1},ij j i ij i jij i j S ij x i V x j V s t x K K V x i j V ≠≠∈⎧=∈⎪⎪=∈⎪⎨⎪≤−⊂⎪⎪∈∈⎩∑∑∑这里,K 为V 的所有非空子集,K 为集合K 中所含图G 的顶点个数。
多旅行商问题研究综述一、问题定义与数学模型多旅行商问题(Multiple Traveling Salesman Problem,MTSP)是旅行商问题(Traveling Salesman Problem,TSP)的扩展,是组合优化领域中的经典问题之一。
在MTSP中,有多个旅行商需要遍历各自的销售区域,并在有限的时间内完成各自的旅程。
每个旅行商的旅程起点和终点固定,且每个旅行商的路径不能交叉,也不能重复。
MTSP的目标是在满足约束条件下,最小化所有旅行商行走的总距离。
数学模型通常采用整数规划或图论表示。
对于一个具有n个顶点的完全图,每个顶点代表一个城市或客户,边代表城市之间的道路。
MTSP可以转化为在图中寻找n个哈密尔顿回路(Hamiltonian Cycle)的问题。
由于图论表示方法具有一定的局限性,近年来研究者们提出了更复杂的数学模型,如超图、混合图等。
二、求解方法与算法设计MTSP是一个NP-hard问题,求解非常困难。
因此,研究者们提出了许多近似算法和启发式方法。
这些方法大致可以分为两类:基于贪婪策略的方法和基于元启发式的方法。
1. 基于贪婪策略的方法:这类方法通常采用局部搜索策略,从当前解出发,通过不断地进行局部搜索和改进来寻找最优解。
代表性的方法包括:最小生成树法、分支定界法、回溯法等。
2. 基于元启发式的方法:这类方法采用一些启发式策略来指导搜索过程,如遗传算法、模拟退火、粒子群优化等。
这些方法能够在较短的时间内找到可接受的解,但并不能保证找到全局最优解。
此外,近年来还出现了一些新的求解方法,如深度学习、强化学习等人工智能算法也被应用于MTSP的求解。
这些方法通常需要大量的数据和计算资源,但可以处理更大规模和更复杂的MTSP问题。
三、特定场景下的多旅行商问题随着应用领域的不断扩展,MTSP已经应用于许多特定场景中,如供应链管理、物流配送、城市规划等。
在这些场景中,MTSP需要考虑更多的实际因素和约束条件,如车辆路径限制、时间窗限制等。
热轧生产调度的多旅行商问题模型及求解摘要:传统对于热轧调度的研究,往往采用的是串行策略,实质是一种贪婪方法,可能导致局部最优。
本文从全局最优观点提出能够同时产生一个班次中的M 个轧制单元计划的并行策略,并且根据实际生产约束,可以热轧调度问题归结为多旅行商问题模型。
为了求解,将MTSP变换为单旅行商问题模型,并适用改进遗传算法能有效搜索出最优解。
关键词:热轧生产;调度;旅行商问题;改进遗传算法钢铁企业在实际编制热轧生产调度时,一般都是从合同订单预选池中挑选订单,依次编制出M个轧制计划单元[1]。
这种策略模拟人工编制计划的思想,采用串行策略建立了单旅行商模型[2]。
但是这种策略类似于贪婪方法,有可能陷入局部最优。
一种合理的办法是并行方法,即从订单池中同时编制出M个轧制单元计划。
并行方法可以归结为MTSP。
1热轧生产调度的问题描述1.1问题描述将全部订单看成一个个节点(相当于TSP中的城市),一个轧制生产单元看成是经过一定数目节点的一条旅行路径,节点之间的距离(评价值)可定义为轧制规范的评价值(如相邻板坯的宽度、厚度、硬度等必须满足一定的约束条件),则热轧生产调度问题可归结为非对称旅行商模型[3]。
由于热轧生产调度问题中的轧制单元计划是一条开放路径,每一个订单只能轧制一次。
如果一个热轧调度包括M条轧制单元计划,则存在M个开放路径,并且任意两个轧制单元计划的开始和结束点的订单都不相同。
这意味着任意两个轧制单元计划之间没有相同的点(订单),开始订单也不确定,所以必须建立全新的模型。
1.2 热轧调度问题进入标准MTSP问题的变换为了将热轧调度问题转换为MTSP问题,引进了M个虚拟节点(定单) 其编号为N+1,N+2,…,N+M。
通过两个步骤:第一步是一个虚拟节点被引进热轧调度问题当中,要求所有的轧制单元计划都从这个虚拟节点出发。
这个虚拟节点既是源点也是收点,这样就构成了闭合回路。
第二步是M-1个附加节点被引进,这样可以保证M个闭合回路的形成,同时满足每个节点正好被访问一次,也就是每一个生产定单正好被轧制一次[4]。
TSP的⼏种求解⽅法及其优缺点TSP的⼏种求解⽅法及其优缺点⼀、什么是TSP问题旅⾏商问题,简称TSP,即给定n个城市和两两城市之间的距离,要求确定⼀条经过各城市当且仅当⼀次的最短路线。
其图论描述为:给定图G=(V,A),其中V为顶点集,A 为各顶点相互连接组成的边集,设D=(dij)是由顶点i和顶点j之间的距离所组成的距离矩阵,要求确定⼀条长度最短的Hamilton回路,即遍历所有顶点当且仅当⼀次的最短距离。
旅⾏商问题可分为如下两类:1)对称旅⾏商问题(dij=dji,Πi,j=1,2,3,?,n);2)⾮对称旅⾏商问题(dij≠dji,?i,j=1,2,3,?,n)。
⾮对称旅⾏商问题较难求解,我们⼀般是探讨对称旅⾏商问题的求解。
若对于城市V={v1,v2,v3,?,v n}的⼀个访问顺序为T={t1,t2,t3,?,t i,?,t n},其中t i∈V(i=1,2,3,?,n),且记t n+1=t1,则旅⾏商问题的数学模型为:minL=。
TSP是⼀个典型的组合优化问题,并且是⼀个NP完全难题,是诸多领域内出现的多种复杂问题的集中概括和简化形式,并且已成为各种启发式的搜索、优化算法的间接⽐较标准。
因此,快速、有效地解决TSP有着重要的理论价值和极⾼的实际应⽤价值。
⼆、主要求解⽅法基于TSP的问题特性,构造型算法成为最先开发的求解算法,如最近邻点、最近合并、最近插⼊、最远插⼊、最近添加、贪婪插⼊等。
但是,由于构造型算法优化质量较差,迄今为⽌已开发了许多性能较好的改进型搜索算法,主要有:1)模拟退⽕算法2)禁忌搜索算法3)Hopfield神经⽹络优化算法4)蚁群算法5)遗传算法6)混合优化策略2.1 模拟退⽕算法⽅法1)编码选择:采⽤描述TSP解的最常⽤的⼀种策略——路径编码。
2)SA状态产⽣函数的设计:对于基于路径编码的SA状态产⽣函数操作,可将其设计为:①互换操作(SWAP);②逆序操作(INV);③插⼊操作(INS)。
令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 —样与其他
MTSP 线路就分解成m 个分 点相连,而m 个源点互相不连接,这样在结点集 0,1丄,1,1 1丄,1 m 1上, 可得到TSP 线路,然后各源点合并成一个点。
这样 线路。
初始化路径矩阵D 确
定实际问题参数
工 对参数进仃编码
工
初始化群体X (0) 工
进行代数加1。