第五章 遗传算法与组合优化
4.2 货郎担问题(Traveling Salesman Problem— — TSP)
再移动匹配区至起点位置,且在其后预留相等于匹配区域的空间(H数 目),然后将其余的码按其相对次序排列在预留区后面,得到 A” 6 7 H H H 1 9 8 4 =5 B” 3 0 H H H 9 4 8 1 =2 最后将父串A,B的匹配区域相互交换,并放置到A” ,B” 的预留区内, 即可得到两个子代: A” =5 6 7 | 2 3 0 | 1 9 8 4 ’ B” =2 3 0 | 5 6 7 | 9 4 8 1 ’ 虽然,PMX法与OX法非常相似,但它们处理相似特性的手段却不同。 PMX法趋向于所期望的绝对城市位置,而OX法却趋向于期望的相对 城市位置。
4.1 背包问题(knapsack problem)
4.1.3 适应度函数 在上述编码情况下,背包问题的目标函数和约束条件可表 示如下。 目标函数: J (T ) = ∑ Ti Pi 约束条件:
n
∑T S
i =1 i
n
i =1
i
≤C
按照利用惩罚函数处理约束条件的方法,我们可构造背包 问题的适应度函数f(T)如下式: f(T) = J(T) + g(T) 式中g(T)为对T超越约束条件的惩罚函数。
4.2 货郎担问题(Traveling Salesman Problem— — TSP)
可能的解释:这一方法将本已十分复杂的TSP问题更加复 杂化了。因为满足TSP问题约束条件的可行解空间规模为n!; 而按构造惩罚函数的方法,其搜索空间规模变为nn;随着n 的增大n!与nn之间的差距是极其惊人的。 解决这一约束问题的另一种处理方法是对交叉、变异等遗 传操作做适当的修正,使其自动满足TSP的约束条件。
4.2 货郎担问题(Traveling Salesman Problem— — TSP)
4.2.1 编码与适应度函数 编码 1. 以遍历城市的次序排列进行编码。 如码串1 2 3 4 5 6 7 8表示自城市1开始,依次经城市2,3, 4,5,6,7,8,最后返回城市1的遍历路径。显然,这是 一种针对TSP问题的最自然的编码方式。这一编码方案的 主要缺陷在于引起了交叉操作的困难。
4.2 货郎担问题(Traveling Salesman Problem— — TSP)
4.2.2 交叉策略 问题:基于TSP问题的顺序编码(其它编码如以边的 组合状态进行编码也呈现相似特性),若采取简单的 一点交叉或多点交叉策略,必然以极大的概率导致未 能完全遍历所有城市的非法路径。 如8城市的TSP问题的两个父路径为 1234|5678 8765|4321
4.2 货郎担问题(Traveling Salesman Problem— — TSP)
2.顺序交叉法(OX,Order Crossover) 与PMX法相似,Davis(1985)等人提出了一种OX法,此方法 开始也是选择一个匹配区域: A=9 8 4 | 5 6 7 | 1 3 2 0 B=8 7 1 | 2 3 0 | 9 5 4 6 并根据匹配区域的映射关系,在其区域外的相应位置标记H, 得到 A’ 8 4 | 5 6 7 | 1 H H H =9 B’ H 1 | 2 3 0 | 9 H 4 H =8
4.2 货郎担问题(Traveling Salesman Problem— — TSP)
2. 采用“ 的组合方式进行编码。 边” 例如码串2 4 5 3 6 8 7 1的第1个码2表示城市1到城市2 的路径在TSP圈中,第2个码4表示城市2到城市4的路 径在TSP圈中,以此类推,第8个码1表示城市8到城市 1的路径在TSP圈中。这一编码方式有着与前面的“ 节 点” 遍历次序编码方式相类似的缺陷。
4.1 背包问题(knapsack problem)
惩罚函数可构造如下:
式中Em为Pi/S(1≤i≤n)i的最大值,β为合适的惩罚系数。
4.2 货郎担问题(Traveling Salesman Problem— — TSP)
在遗传其法研究中,TSP问题已被广泛地用于评价不 同的遗传操作及选择机制的性能。之所以如此,主要 有以下几个方面的原因: (1) TSP问题是一个典型的、易于描述却难以处理的NP 完全(NP-complete)问题。有效地解决TSP问题在 可计算理论上有着重要的理论价值。 (2) TSP问题是诸多领域内出现的多种复杂问题的集中概 括和简化形式。因此,快速、有效地解决TSP问题有 着极高的实际应用价值。
4.2 货郎担问题(Traveling Salesman Problem— — TSP)
常用的几种交叉方法: 1.部分匹配交叉(PMX,Partially Matched Crossover)法 PMX操作是由Goldberg和Lingle于1985年提出的。在PMX 操作中,先依据均匀随机分布产生两个位串交叉点,定义 这两点之间的区域为一匹配区域,并使用位置交换操作交 换两个父串的匹配区域。 实例:如两父串及匹配区域为 A=9 8 4 | 5 6 7 | 1 3 2 0 B=8 7 1 | 2 3 0 | 9 5 4 6
4.2 货郎担问题(Traveling Salesman Problem— — TSP)
(3)TSP问题因其典型性已成为各种启发式的搜索、优 化算法的间接比较标准,而遗传算法就其本质来说, 主要是处理复杂问题的一种鲁棒性强的启发式随机搜 索算法。因此遗传算法在TSP问题求解方面的应用研 究,对于构造合适的遗传算法框架、建立有效的遗传 操作以及有效地解决TSP问题等有着多方面的重要意 义。
4.2 货郎担问题(Traveling Salesman Problem— — TSP)
3.循环交叉(CX,cycle crossover)法 Smith等人提出的CX方法与PMX方法和OX方法有不同之处。 循环交叉的执行是以父串的特征作为参考,使每个城市在 约束条件下进行重组。 设两个父串为 C=9 8 2 1 7 4 5 0 6 3 D=1 2 3 4 5 6 7 8 9 0∑Βιβλιοθήκη Xi =1 in
i
∑S X
i =1 i
n
i
≤ C,
X i ∈ {0,1}, 1 ≤ i ≤ n
4.1 背包问题(knapsack problem)
广义背包问题:输入由C和两个向量C=(S1,S2,… ,Sn) 和P=(P1,P2,… ,Pn)组成。设X为一整数集合,即X=1, 2,3,… ,n,T为X的子集,则问题就是找出满足约束条 件,而使获得最大的子集T,即求Si和Pi的下标子集。 数学形式: 最大化 满足
第四章 遗传算法与组合优化
4.1 背包问题(knapsack problem) 4.1.1 问题描述
0/1背包问题:给出几个尺寸为S1,S2,… ,Sn的物体和容 量为C的背包,此处S1,S2,… ,Sn和C都是正整数;要求 找出n个物件的一个子集使其尽可能多地填满容量为C的背 包。 数学形式: 最大化 满足
4.2 货郎担问题(Traveling Salesman Problem— — TSP)
问题描述: 寻找一条最短的遍历n个城市的路径,或者说搜索整数子集X ={1,2,… ,n}(X的元素表示对n个城市的编号)的一个 排列π(X) = {v1,v2,… ,vn},使
取最小值。式中的d(vi, vi+1)表示城市vi到城市vi+1的距离。
4.2 货郎担问题(Traveling Salesman Problem— — TSP)
首先交换A和B的两个匹配区域,得到 A’ 8 4 | 2 3 0 | l 3 2 0 =9 B’ 7 1 | 5 6 7 | 9 5 4 6 =8 对于A’ 、B’ 两子串中匹配区域以外出现的遍历重复,依据 匹配区域内的位置映射关系,逐一进行交换。对于A’ 有2到 5,3到6,0到7的位置符号映射,对A’ 的匹配区以外的2,3, 0分别以5,6,7替换,则得 A” 8 4 | 2 3 0 | 1 6 5 7 =9 同理可得: B” 0 1 | 5 6 7 | 9 2 4 3 =8 这样,每个子串的次序部分地由其父串确定。
4.1 背包问题(knapsack problem)
4.1.2 遗传编码 采用下标子集T的二进制编码方案是常用的遗传编码 方法。串T的长度等于n(问题规模),Ti(1≤i≤n)=1表 示该物件装入背包,Ti=0表示不装入背包。基于背包 问题有近似求解知识,以及考虑到遗传算法的特点 (适合短定义距的、低阶的、高适应度的模式构成的 积木块结构类问题),通常将Pi,Si按Pi/Si值的大小依 次排列,即P1/S1≥P2/S2≥… ≥Pn/Sn。
4.2 货郎担问题(Traveling Salesman Problem— — TSP)
不同于选择交叉位置,我们从左边开始选择一个城市 C’ =9一一一一一一一一 D’ =1一一一一一一一一 再从另一父串中的相应位置,寻找下一个城市: C’ =9一一1一一一一一一一 D’ =1一一一一一一一一9一 再轮流选择下去,最后可得 C’ 2 3 1 5 4 7 8 6 1 0 =9 D’ 8 2 4 7 6 5 1 0 9 3 =1
∑PX
i =1 n i
n
i
∑S X
i =1 i
i
≤ C,
X i ∈ {0,1}, 1 ≤ i ≤ n
4.1 背包问题(knapsack problem)
在应用问题中,设S的元素是n项经营活动各自所需的资 源消耗,C是所能提供的资源总量,P的元素是人们从每 项经营活动中得到的利润或收益,则背包问题就是在资 源有限的条件下,追求总的最大收益的资源有效分配问 题。 背包问题在计算理论中属于NP— 完全问题,其计算复杂 度为O(2n),若允许物件可以部分地装入背包,即允许X 可取从0.00到1.00闭区间上的实数,则背包问题就简化为 极简单的P类问题,此时计算复杂度为O(n)。
4.2 货郎担问题(Traveling Salesman Problem— — TSP)