当前位置:文档之家› 最优路径规划算法设计报告

最优路径规划算法设计报告

最优路径规划算法设计一、 问题概述兵力机动模型的功能是支持实施机动的实体按照指定路线,由作战空间的一点向另外一点的位置移动,并带入实体在移动过程中发生变化的状态信息。

兵力机动模型包括行军模型、战斗转移模型、机动能力评估模型。

涉及的关键算法包括最优路径规划、行军长径计算、行军时间计算、行军所需油料计算、行军方案评估与优选等。

最优路径问题又称最短路问题。

是网络优化中的基本问题,如TSP 问题等。

下面先举例说明该问题。

最短路问题(SPP -shortest path problem )一名货柜车司机奉命在最短的时间内将一车货物从甲地运往乙地。

从甲地到乙地的公路网纵横交错,因此有多种行车路线,这名司机应选择哪条线路呢?假设货柜车的运行速度是恒定的,那么这一问题相当于需要找到一条从甲地到乙地的最短路。

旅行商问题(TSP -traveling salesman problem )一名推销员准备前往若干城市推销产品。

如何为他(她)设计一条最短的旅行路线(从驻地出发,经过每个城市恰好一次,最后返回驻地?)最短路问题是组合优化中的经典问题,它是通过数学方法寻找离散时间的最优编排、分组、次序、或筛选等,这类问题可用数学模型描述为min )(x f..t s 0)(≥x gD x ∈.其中,)(x f 为目标函数,)(x g 为约束函数,x 为决策变量,D 表示有限个点组成的集合。

一个组合最优化问题可用三个参数),,(f F D 表示,其中D 表示决策变量的定义域,F 表示可行解区域}0)(,|{≥∈=x g D x x F ,F 中的任何一个元素称为该问题的可行解,f 表示目标函数,满足}|)(min{)(*F x x f x f ∈=的可行解*x 称为该问题的最优解。

组合最优化的特点是可行解集合为有限点集。

由直观可知,只要将D 中有限个点逐一判别是否满足0)(≥x g 的约束并比较目标值的大小,就可以得到该问题的最优解。

以上述TSP 问题为例,具体阐述组合优化问题:此模型研究对称TSP 问题,一个商人欲到n 个城市推销产品,两个城市i 和j 之间的距离ji ij d d =,用数学模型描述为∑≠ji ij ij x d min1..1=∑=nj ij x t s n i ,,2,1Λ=,1..1=∑=ni ij x t s n j ,,2,1Λ=,},,,2,1{,2||2,1||,n s n s s xsj i ijΛ⊂-≤≤-≤∑∈j i n j i x ij ≠=∈,,,2,1,},1,0{Λ约束条件决策变量1=ij x 表示商人行走的路线包含从城市i 到j 的路,而0=ij x 表示商人没有选择走这条路;j i ≠的约束可以减少变量的个数,使得模型中共有)1(-⨯n n 个决策变量。

每一个组合优化问题都可以通过完全枚举的方法求得最优解。

枚举是以时间为代价的,在TSP 问题中,用n 个城市的一个排列表示商人按这个排列序推销并返回起点。

若固定一个城市为起终点,则需要)!1(-n 个枚举。

以计算机s 1可以完成24个城市所有路径枚举为单位,则25个城市的计算时间为:以第1个城市为起点,第2个到达城市有可能是第2个、第3个、……、第25个城市。

决定前两个城市的顺序后,余下是23个城市的所有排列,枚举这23个城市的排列需要s 1,所以,25个城市的枚举需要24s 。

类似地归纳,城市数与计算时间的关系如表1所示。

表1 枚举时城市数与计算时间的关系通过表1可以看出,随着城市数的增加,计算时间增加非常之快,当城市数增加到30时,计算时间约为10.8年,实际计算中已无法承受。

在城市数较多时,枚举已不可取,我们可以采用一些别的方法缩短计算时间。

TSP 问题是NP 难问题,其可能的路径数目与城市数目n 是成指数型增长的,所以一般很难求出其最优解,因而一般是找出其有效的近似求解算法。

遗传算法可以用来解决一些较为复杂的系统问题,显然旅行商问题是需要编码运算的,而遗传算法本身的特征正好为解决这一问题提供了很好的途径。

NP 问题:是指非确定多项式问题类。

若存在一个多项式函数)(x g 和一个验证算法H ,使得:判定问题A 的任何一个实例I 为“是”实例当且仅当存在一个验证字符串S ,满足其输入长度)(S d 不超过))((I d g ,其中)(I d 为I 的输入长度,且算法H 验证实例I 为“是”实例的计算时间)(H f 不超过))((I d g ,则称判定问题A 是非确定多项式的。

对于判定问题A ,若NP 中的任何一个问题可在多项式时间内归约为判定问题A ,则称A 为NP 难问题。

二、 知识准备根据实际需求,本文拟给出三种算法针对不同的情况做出解答。

分别是基于图论和网络优化的Dijkstra 和Floyd —Warshall 算法。

这两种算法用来解决起点与终点不重合的问题。

最后根据现有智能优化计算中的遗传算法计算哈密尔顿回路问题,即起点与终点重合问题。

1、 图论基本知识有向图的定义:一个有向图G 是由一个非空有限集合)(G V 和)(G V 中某些元素的有序对集合)(G E 构成的二元组,记为))(),((G E G V G =。

其中},...,,{)(21n v v v G V =称为图G 的顶点集,)(G V 中的每一个元素),...,2,1(n i v i =,称为该图的一个顶点;},...,,{)(21m e e e G E =称为图G 的弧集,记为),(j i k v v e =,记有向图),(E V G =(a ) 和(c )是无向图,(b )是有向图 2、 邻接矩阵表示法图),(E V G =的邻接矩阵C 是如下定义的:C 是一个n n ⨯的0-1矩阵,即nn n n ij c C ⨯⨯∈=}1,0{)(,⎩⎨⎧∈∉=A j i Aj i c ij ),(,1),(,0,也就是说,如果两节点之间有一条弧,则邻接矩阵中对应元素为1,否则为0. 图(a )和图(b )的邻接表矩阵即为3、 ⎪⎪⎪⎪⎪⎪⎭⎫⎝⎛0001000100100010000100110y x w v u yx w v u在计算机中用二维数组表示,两节点之间有弧相应的元素为1.必须指出的是:目前为止,一切最短路算法都只对不含负有向圈的网络有效。

实际上,对于含负有向圈的网络,其最短路问题是NP-hard 。

因此,除非特别说明,一律假定网络不包含负有向圈。

此外在实际问题中也会遇到无向网络上的最短路问题,这时原问题一般可以转化为有向网络中上的最短路问题。

如果所有弧上的权ij w 全为非负数,只需将无向图的一条边代之以两条对称的有向弧即可。

如果弧上的权ij w 有负有正,一般来说问题要复杂得多,要具体问题具体分析。

本文中所要解决的问题都取权值为正,无向图皆采取两条对称的有向弧问题。

k k v e e v e v W ...2110=,其中k j G V v k i G E e j i ≤≤∈≤≤∈0),(,1),(,i e 与i i v v ,1-关联,称W 是图G 的一条道路,k 为路长,顶点0v 和k v 分别称为W 的起点和终点,而121,...,,-k v v v 称为他的内部顶点。

若道路W 的边互不相同,则W 称为迹。

若道路W 的顶点互不相同,则W 称为轨。

称一条道路是闭的,如果它有正的长且起点和终点相同。

起点和终点重合的轨叫做圈(cycle)。

若图G 的两个顶点u , v 间存在道路,则称u 和v 连通(connected)。

u , v 间的最短轨的长叫做u , v 间的距离。

记作d (u ,v )。

若图G 的任二顶点均连通,则称G 是连通图。

显然有:(i)图P 是一条轨的充要条件是P 是连通的,且有两个一度的顶点,其余顶点的度为2;(ii)图C 是一个圈的充要条件是C 是各顶点的度均为2 的连通图 三、应用以行军途中各目标为图G 的顶点,两目标之间的连线为图G 相应两顶点间的边,得图G 。

对G 的每一边e ,赋以一个实数w (e )—两目标之间的距离长度,称为e 的权,得到赋权图G 。

G 的子图的权是指子图的各边的权和。

问题就是求赋权图G 中指定的两个顶点00,v u 间的具最小权的轨。

这条轨叫做00,v u 间的最短路,它的权叫做00,v u 间的距离,亦记作),(00v u d 。

四、算法设计 1 Dijkstra 算法 1.1 定义预览:Dijkstra(迪杰斯特拉)算法是典型的单源最短路径算法,用于计算一个节点到其他所有节点的最短路径。

主要特点是以起始点为中心向外层层扩展,直到扩展到终点为止。

Dijkstra算法是很有代表性的最短路径算法,注意该算法要求图中不存在负权边。

1.2算法描述1)算法思想:设G=(V,E)是一个带权有向图,把图中顶点集合V分成两组,第一组为已求出最短路径的顶点集合(用S表示,初始时S中只有一个源点,以后每求得一条最短路径 , 就将加入到集合S中,直到全部顶点都加入到S中,算法就结束了),第二组为其余未确定最短路径的顶点集合(用U表示),按最短路径长度的递增次序依次把第二组的顶点加入S中。

在加入的过程中,总保持从源点v到S中各顶点的最短路径长度不大于从源点v到U中任何顶点的最短路径长度。

此外,每个顶点对应一个距离,S中的顶点的距离就是从v到此顶点的最短路径长度,U 中的顶点的距离,是从v到此顶点只包括S中的顶点为中间顶点的当前最短路径长度。

2)算法步骤:a.初始时,S只包含源点,即S={v},v的距离为0。

U包含除v外的其他顶点,即:U={其余顶点},若v与U中顶点u有边,则<u,v>正常有权值,若u不是v的出边邻接点,则<u,v>权值为∞。

b.从U中选取一个距离v最小的顶点k,把k加入S中(该选定的距离就是v到k的最短路径长度)。

c.以k为新考虑的中间点,修改U中各顶点的距离;若从源点v到顶点u 的距离(经过顶点k)比原来距离(不经过顶点k)短,则修改顶点u的距离值,修改后的距离值的顶点k的距离加上边上的权。

d.重复步骤b和c直到所有顶点都包含在S中。

3)算法实例图1是5个节点的赋权无向图t=dist[j];}}s[u]=true;for (j=1;j<=n;++j)if((!s[j])&&c[u][j]<MAX){int newdist=dist[u]+c[u][j];if (newdist<dist[j]){dist[j]=newdist;prev[j]=u;}}}}输入:以二维数组的形式表示邻接矩阵,即相应的弧及其权值,数组下标表示弧。

输出:最短路径所经过的节点及其距离值运行实例,得到邻接矩阵和最短路径2 Floyd算法2.1 定义预览Floyd-Warshall算法(Floyd-Warshall algorithm)是解决任意两点间的最短路径的一种算法,可以正确处理有向图或负权的最短路径问题,同时也被用于计算有向图的传递闭包。

相关主题