当前位置:
文档之家› 第6讲(局部与随机搜索策略)
第6讲(局部与随机搜索策略)
用局部搜索方法求解TSP问题
假设从a出发,用一个城市序 列表示一个可能的解 设初始生成的可能解为 x0=(a,b,c,d,e),则 f(xb)=f(x0)=38
b 10 7 a 6 7 10 c 10 5 d 13 9 6 e
选择两个城市间的位置交换方 式来得到一个可能解的邻域, 并在算法第4步选择从P中随机 选择一个元素的方法,则 P={(a,c,b,d,e),(a,d,c,b,e), (a,e,c,d,b),(a,b,d,c,e), (a,b,e,d,c),(a,b,c,e,d)}
求解TSP问题-过程
第1次循环 P’={从P中随机选择一个元素},设为x1=(a,c,b,d,e),则 f(x1)=42, f(x1)> f(xb),P=P- {x1}={ (a,d,c,b,e), (a,e,c,d,b), (a,b,d,c,e), (a,b,e,d,c), (a,b,c,e,d)} 第2次循环
• 或定义与该点的欧氏距离,即:
N(<x’1,…,x’n>)={<x1,…,xn> : |(x1 –x’1)| +…+ |(xn –x’n)|=d}
四皇后问题的邻域
定义S=(si)表示四皇后问题的一个可 能的解,其中si表示在第i行、第si列 有一个皇后,如图,有S=(2,4,1, 3) 定义映射N为棋盘上任意两个皇后 的所在行或列进行交换。 S的邻居共有6个,所有邻居的集合 就是S的邻域。 如图,N(S)={(4,2,1,3), (1,4,2,3), (3,4,1,2), (2,1,4,3),(2,3,1,4), (2,4,3,1)}
高级搜索
一般认为,NP完全问题的算法复杂性是指数级的。 当问题规模达到一定程度时,以前这些算法显得无能 为力。 局部搜索算法、模拟退火算法和遗传算法等是较新发 展起来的算法,算法引入了随机因素,不一定能找到 最优解,但一般能快速找到满意的解。 主要内容: 基本概念 局部搜索算法 模拟退火算法
求解TSP问题-过程
问题规模与算法复杂度
问题的规模通常用输入数据量n来衡量。如旅行商问题 的城市数目、皇后问题的皇后数目等。
当问题规模比较小时,由于组合优化问题的解是有限 的,总可以通过枚举法获得问题的最优解。但当问题 的规模比较大时,其状态数往往呈指数级增长,很难 再通过枚举方法获得问题的解。
对于同一个问题,不同的求解方法,其效率是不同的, 差别可能会非常大。 通常用算法的时间复杂度来评价一个求解方法的好坏。
组合优化问题举例
TSP问题 从某个城市出发,经过n个指定的城市,每个城市 只能且必须经过一次,最后回到出发城市,如何安 排旅行商的行走路线以使总路程最短? 约束机器排序问题 n个加工量为di(i=1,2,… n)的产品在一台机器上加 工,机器在第t个时段的工作能力为ct,完成所有产品 加工的最少时段数。
组合优化问题
优化问题 设x的决策变量,D为x的定义域,f(x)是指标函数, g(x)是约束条件集合。则优化问题可以表示为, 求解满足g(x)的f(x)最小值问题。即:
min ( f ( x) | g ( x))
xD
组合优化问题 如果在定义域上,满足条件g(x)的解是有限的, 则优化问题称为组合优化问题。 现实世界中很多问题属于组合优化问题,或者可 以转化为组合优化问题求解,如旅行商问题、皇 后问题。
旅行商问题的邻域-示例
以5城市TSP为例,可以用一个城市序列S表示一个 可能解<c1,c2,c3,c4 ,c5 >,其中ci表示第i个城市。 定义映射N为交换城市序列中的任意两个城市,即S 中任意两个元素交换位置,这样可得到S的所有邻 居,所有邻居的集合就是S的邻域。 以S=<1,2,3,4,5,>为例,其邻域N(S) = {<2,1,3,4,5>, <3,2,1,4,5>, <4,2,3,1,5> ,<5,2,3,4,1>, <1,3,2,4,5>, <1,4,3,2,5>, <1,5,3,4,2>, <1,2,4,3,5>, <1,2,5,4,3>, <1,2,3,5,4>}
2 1 5
3
4 1
2
3
4 5
局部最优与全局最优
在一个邻域内的最优解成为局部最优解 在整个定义域上的最优解成为全局最优解 最优解可以是求最大值,也可以是求最小值,思想 是一样的。以后的论述中,一般假定求最小值。
局部搜索算法
局部搜索算法是从爬山法改进而来的。 爬山法:在没有任何有关山顶的其他信息的情况下,沿着最陡 的山坡向上爬。 局部搜索算法的基本思想:在搜索过程中,始终选择当前点的 邻居中与离目标最近者的方向搜索。
Q Q Q
Q
旅行商问题的邻域
用一个城市序列表示一个可能的解, 通过交换两个城市的位置S的邻居。 设S=(x1,x2,…,xi-1,xi,xi+1 ,…,xj-1,xj,xj+1,…,xn)。则通 过交换xi和xj两个城市的位置可以得到S的一个 邻居: S’=(x1,x2,…,xi-1,xj,xi+1 ,…,xj-1,xi,xj+1,…,xn) 也可以采用逆序的方式获取S的邻居,即通过交 换xi和xj两个城市之间的城市次序来得到S的邻 居: S’=(x1,x2,…,xi-1,xi,xj-1,…,xi+1,xj,xj+1,…,xn)
局部搜索算法
(1)随机选择一个初始的可能解x0 ∈D,xb=x0,P=N(xb); //D是问题的定义域, xb用于记录到目标位置的最优解,P为xb的
邻域。
(2)如果不满足结束条件,则: //结束条件为循环次数或P为空等 (3)Begin (4)选择P的一个子集P‘,xn为P’的最优解 // P’可根据问题特点,选择适当大小的子集。可按概率选择 (5)如果f(xn)<f(xb),则xb=xn,P=N(xb),转(2) // 重新计算P,f(x)为指标函数 (6)否则P=P-P‘,转(2) (7)End (8)输出计算结果 (9)结束
P’={从P中随机选择一个元素},设为x2= (a,d,c,b,e),则 f(x2)=45, f(x2)> f(xb), P=P- {x2}={ (a,e,c,d,b), (a,b,d,c,e), (a,b,e,d,c), (a,b,c,e,d)} 第3次循环 P’={从P中随机选择一个元素},设为x3= (a,e,c,d,b),则 f(x3)=44, f(x3)> f(xb), P=P- {x3}={ (a,b,d,c,e), (a,b,e,d,c), (a,b,c,e,d)}
常用的算法复杂性函数
多项式时间算法 O(logn)、O(n)、O(nlogn)、O(n2) 指数时间算法 O(2n)、O(n!)、O(nn) 旅行商问题和皇后问题,用枚举法的时间复杂度为 O(n!) 完备算法的复杂性在通常情况下仍是指数型的。 对指数时间算法,当问题的规模大到一定程度时,因 为所花费的时间太长了,以至于不能求解。
指派问题 一家公司经理准备安排N名员工去完成N项任务,每人 一项。由于各员工的特点不同,不同的员工去完成同 一项任务时获得的回报是不同的。如何分配工作方案 可以获得最大收益?
组合优化问题举例
0-1背包问题
设有一个容积为b的背包,n个体积分别为 ai(i=1,2,… n),价值分别为ci (i=1,2,… n)的物品, 如何以最大的价值装包? 装箱问题 如何用个数最少的尺寸为1的箱子装进n个尺寸不超 过1的物品? SAT问题 称 判定一个公式是否存在一个模型的问题为可满足 性问题(以后简称为SAT问题)。如果一个公式存在 模型,则称该公式是可满足的,否则称为不可满足 的。
常见的几种邻域
一维空间中 点x1附近的一个小区间 二维空间中 点<x1,y1>附近的一个小区域
N(x1) x
y
N(x1,y1) x
三维或多维空间中 • 邻域可定义为该点为中心的一个圆球体,即
N(<x’1,…,x’n>)={<x1,…,xn>: (x1 –x’1)2 +…+(xn –x’n)2=r}
旅行商问题的邻域-示例
以<1,2,3,4,5,>交换为<1,4,3,2,5>后路径变化示意图 如下:
2
1 3 4 1
2
3 4
5
5
旅行商问题的邻域-示例
还可以定义映射N‘为逆序交换获得S的所有邻居, 即S中任意两个元素之间的城市逆序重排。 以S=<1,2,3,4,5,>为例,将城市2和5之间的城市 逆序重排,得:<1,2,4,3,5> 以<1,2,3,4,5,>交换为<1,2,4,3,5>后路径变化 示意图如下:
爬山算法
1, n := s; 2, LOOP: IF GOAL(n) THEN EXIT(SUCCESS); 3, EXPAND(n) →{mi},计算h(mi), nextn=min{h(mi)} 4, IF h(n)<h(nextn) THEN EXIT(Fail); 5, n:=nextn; 6, GO LOOP; 该算法在单峰的条件下,必能达到山顶。
n!
3.6ms
77.1年
8.4×1013世 纪
2.6×1029世纪
3.0×合优化问题,至今尚未找到 多项式时间算法来获得问题的最优解,如旅行 商问题。 实际上,在很多情况下追求最优解不一定有意 义,一个满意解就可以了。如买西瓜。 求满意解的基本思想是:引入随机因素,每次 运行并不能保证求得问题的最优解,但经过多 次运行后,一般总能得到一个与最优解相差不 太大的满意解,以放弃每次必然找到最优解的 目标,来换取算法时间复杂度的降低,以适合 于求解大规模的优化问题。