运筹学

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

(ps :老师,我们最后解决从终点回到起点的最短问题存在瑕疵,从大区间之间

最短问题,请多多指教,谢谢)

问题的提出

利用附件P2中所列的陕西区县公路里程表,寻求旅行者由碑林区出发的路线,并绘制线路图:

1. 仅有一个旅行者,在拜访每个区县一次且仅一次后再回到起点碑林区的最短路径。

2. 有两个旅行者,合计拜访每个区县一次且仅一次的最短路径。

问题的分析

1.总共有107个地区,以每个区的区中心为一个小点,则有107个点,但是这样的话计算量工作量太大,所以我们尝试把每个区中心相互距在某一范围内看作是一个大点,然后整个所有区域可以看成是若干个大点(大点有若干个小点组成)

2.初步设想使用动态规划跟神经网络线法,并且逐个尝试“某个范围”的距离指标长度,因为动态规划是适用于小数目点数的问题,最后选择80公里。然后把107个区划分为9个大点,这样就可以使用动态规划来解决问题了

3.货郎担问题

对于货郎担问题的一个解序列,可以通过换位、移位和倒位三种基本的次序变换操作,改变原来解序列的排列次序,得到新的解序列。其它游路改进的启发

式操作.都可以

由这三种基本操作组合而成。

设旅行商问题中的个城市为f 1I f 2I ,,用d 表示q和cj之间的距离。一条游

路表示为解序列f : {C1,f 2' , l ,q表示解序列c中的第个元素。

1.1.1换位操作(exchange)如图1所示,将解序列中第个元素C。与第J个元

素c,的

位置交换。换位操作的性能指标为:

△D换位=(d(c,一1,C,)+d(f。,Ci+1)+d(勺1,ci)+d(勺,q+1))一(d(c,

一1,cj)+d(cj,cf+1) +d(cj一1,c,)+d(C,,f,+1))(1)其中,D表示游

路的长度,下同。

图1 换位操作示意图如对一个10城市解

序列进行换位操作:

8—35672—94O1 城市C2与城市c7的位置交换8—95672—3401则

△l D换位=( d( f l ,2) +d( 2, 3) +d( 6,C7) +d( 7, 8) )一

( d( f l ,f 7) +d( C7.3) +d( 6,C2) +d( f 2, 8) )=

(d8.3+d3。5+d2。9+d9.4)一(d8。9+d9。5+d2.3+d3.4)

1.1.2 移位操作move 移位操作相当于选择( O r.opt ) 操作,如图2所示,列

中第个元素q移动到第j个元素c,之后的位置上。移位操作的性能指标为:

△D咎位=( d( C。一l ,f 。) +d( C C 1) +d( c j ,c =f +1) )一

7

7 10 10

6 10

13

C

5 9

6

(d(Ci—l,q+1)+d(ci,C)+d(C。,q+1))图2 移

位操作示意图如对一个10城市解序列进行

移位操作t

程序说明

任给一个城市与城市间的道路图,求一个旅行商访问每个城市并回到出发

点的最短路程。

如本实验中, 城市间均有道路的五个城市的地图可以表示成下面的图1:

B

A

E

D

图1 城市间均有道路的五个城市的地图在旅行商的地图中, 五个城市用节点表示, 两城市间的距离用弧线上的数字表

示。设旅行商从A 城市出发, 到B、C、D、E 等城市去推销商品,要寻找一条从A

出发, 包括B、C、D、E, 且仅包含一次, 最后回到A 的一条最短路径。

A* 算法是N. Ni l l s on于1971年提出的一种有序搜索算法,该算法被认为是

求解人工智能问题的最成功的技术理论之一。

N i l l s on指出对于某一已到达的现行状态, 如已到达图中的n节点,它是否

可能成为最佳路径上的一点的估价, 应由估价函数f ( n)值来决定。

假设g*( n) 函数值表示从起始节点s 到任意一个节点n的一条最佳路径上的实际耗散值。h*(n)函数值表示从任意节点n 到目标节点ti的最佳路径的实际耗散值。其中t i 是一个可能的目标节点。f *( n) 函数值表示从起始s ,通过某一指定的n到达目标节点ti的一条最佳路径的实际耗散值,并有f*(n)=g*(n)+h*(n)。

假设f 函数是对f * 函数的一种估计, 并有f ( n) =g( n) +h( n) ,其中g函数是

对g*的估计,h函数是对h*的一种估计。f (n)包括两个部分,其中g(n)表示到达n 节点时,已付出代价的估计;而h( n) 表示从n 节点到达目标节点t i将要付出

代价的估计。

按f(n)=g*(n)+h*(n)的值来排序OPEN表的节点,f 值小者优先。通常称这

种算法为A算法。在A 算法的基础上,进一步限制h( n)函数,使得搜索图中的每一个节点n,能满足h(n)<=h*(n)、称h函数取h*的下界。这种算法叫A*算法。模型建立

1、状态描述和状态空间

所谓状态,是指在一定的时空范围内,问题所涉及的人、物、时间等的布局关系。通常把问题的初始布局关系称为初始状态,问题解决时到达的状态叫目标状态。这两个状态之间存在差异,如何从初始状态到达目标状态就是对问题求解。

在求解过程中可能到达的所有状态统称为状态空间。包括初始状态、中间状态、目标状态。在状态空间法中问题的求解通常是从初始状态到达目标状态的一条最佳路径,这条路径依靠搜索算法在状态空间中寻找,这就是状态空间法的核心所在。

2、产生式系统是状态空间法的基本系统结构一个产生式系统模型包括三个基本

的组成部分,即一个综合数据库,一组产

生式规则和一个控制系统,通常称为产生式系统的三个基本要素。产生式系统的

工作过程如图2:

图2产生式系统的工作过程

3、A* 算法对旅行商问题的解决方法

图3给出了旅行商问题的旅程表。两城市间的距离用数字表示,其中最小距离为5。

A

6

(A ,C)

图4城市状态图

设旅行商已从A 城市到达了C 城市,现行状态描述为( A, C),即状态表中已有两个元素。下一步是到B、还是D、E则要看f(B)、f(D)、f(E)的大小,小者优先。

其中f ( B) =g( B) +h(B)

f ( D) =g( D)+h(D)

f ( E) =g( E) +h(E)

已知如图4。关键是各后继节点h函数的估价值如何计算。从上图还可以

看出, 无论下一步是到B、到E还是到D,旅行商都是已到过三

相关文档
最新文档