算法设计(第13章现代优化算法)
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
let POP1 = Roulette(POP, N, f); //选取种群 POP {}; for i=0 to N-1 do let (pa1, pa2) = (POP1[i], POP1[i+1]), r = Random(0,len-1); let ch1 = pa1[0..r] # pa2[r..n-1], ch2 = pa2[0..r] # pa1[r..n-1]; //杂交 POP POP {ch1, ch2}; let r1 = Random(0,rmax); for k=0 to r1 do let (i, j) = (Random(0,N-1), Random(0,len-1)); POP[i][j] POP[i][j]; //变异 let x’ = (Min x: xPOP: f(x)); if (f(x’)<f(xbest)) then xbest x’; //更新最优解 g g+1; return xbest; end
let k = 0; while (k < kmax) do if (|N(x)|=0) then break; let r = Random(0,|N(x)|), x’ = N(x)[r], delta = f(x) − f(x’); if (delta<0) (exp(-delat/t)<Random(0,1)) then
遗传算法: 将问题的解编码为“染色体”,组成编 码的元素称为“基因”。在算法迭代过程中,按 照“适者生存”的规律,选取适应度高的染色体 进行复制,并对它们进行杂交和变异,产生新一 代更适应环境的染色体群。
13.3 遗传算法
1. 生成问题的一组初始解,将其作为初始群体。 2. 如果终止条件满足,那么返回当前已找到的最优解
掉最优解 完全禁忌的处理:结束算法,跳出当前解 特赦法则:如某个邻域解x′比较不错,那么即使x′
被禁忌表禁忌,仍可以选取它作为新的当前解
13.1 禁忌搜索
抽象算法框架
Algorithm TabuSearch<D,Z>(d: D; ten, kmax: int; f: Zreal; Init: DZ; N: ZSet(Z)) begin let x = Init(d); //找到一个初始可行解 let T = new Queue<ZZ>(), k = 0, xbest = x; while (k < kmax) do
➢ 时间等差下降 ➢ 迭代次数等比下降 ➢ 更为复杂的下降函数
13.2 模拟退火
抽象算法框架
Algorithm Annealing<D,Z>(d: D; tmax, tmin, a: real; kmax: int; f: Zreal; Init: DZ; N: ZSet(Z)) begin let x = Init(d), t = tmax, xbest = x; while (t > tmin) do
13.2 模拟退火
高温物体退火: 当温度趋向于最低温度时,物体停 留在能量最低状态的概率趋向于1。
模拟退火算法: 通过模拟物体的退火过程来进行寻 优计算
13.2 模拟退火
1. 找出问题的一个初始解x0,令x = x0,t = tmax(初 始最高温度)。
2. 如果终止条件满足,那么返回当前已找到的最优 解,算法结束。
,算法结束。 3. 计算群体中每个个体的适应度,选取其中适应度较
高的一些个体作为种群。 4. 在种群个体之间进行杂交操作,得到新一代群体。 5. 在新群体中选取少量个体进行变异操作,而后转第
2步
13.3 遗传算法
选择操作: 适应度越高的个体被选中的概率越大
➢ 轮盘赌
pi
பைடு நூலகம்
fi
N 1
fj
j0
13.3 遗传算法
let tx = null, tv = ; foreach (x’N(x)) do if ((x,x’)T f(x)f(xbest)) then continue; //跳过被禁忌且不被特赦的邻域解 if (f(x’) < tv) then
tx x’; tv f(x’); if (x = x’) then break; T.Enqueue((x,x’)); //更新禁忌表 if (|T| > ten) then T.Dequeue(); if (f(x’) < f(xbest)) then xbest x’; //更新最优解 x x’; k k+1; return xbest; end
选择操作: 适应度越高的个体被选中的概率越大
➢ 轮盘赌 ➢ 按概率排序 ➢ 锦标赛——个体之间两两相互竞争
13.3 遗传算法
杂交操作
1 1001 0 11
10011 1 00
13.3 遗传算法
抽象算法框架
Algorithm Genetic<D,Z>(d: D; N, len, gmax, rmax: int; f: Vectorreal; Init: DintSet<Z>) begin let POP = Init(d, N), g = 0, xbest = (Min x: xPOP: f(x)); while (g < gmax) do
x x’; if (f(x) < f(xbest)) then xbest x; //更新最优解 k k+1; t a*t; return xbest; end
13.3 遗传算法
遗传进化: 遗传性质以基因的形式包含在染色体中 ,基因中各个不同的位置控制着不同的特殊性质 ,基因杂交和基因突变能够产生对环境适应性更 强的后代。通过优胜劣汰的自然选择,适应性更 强的基因结构会被保留下来。
3. 从当前解x的邻域N(x)中随机选取一个解x′,计算 能量差Δf = f(x)−f(x′),若Δf为负或是一个很小的 正数,则令x = x′。
4. 如果当前温度下的迭代次数超过上限则转第5步 ,否则转第3步。
5. 令t = d(t),其中d为温度变化函数,而后转第3步
13.2 模拟退火
初始温度: 统计推断法或简单试验 温度下降
第13章 现代优化算法
禁忌搜索 模拟退火 遗传算法 蚁群算法 粒子群算法 差分进化算法
现代优化算法
启发式算法:依据人的直观经验、或是模拟自 然界的某些规则而设计出的算法
➢ 不一定保证得到最优解 ➢ 不一定保证解的近似程度
13.1 禁忌搜索
终止条件 解的评价:目标函数值或其它的评价函数 禁忌长度:太短可能会导致循环,太长则可能丢
let k = 0; while (k < kmax) do if (|N(x)|=0) then break; let r = Random(0,|N(x)|), x’ = N(x)[r], delta = f(x) − f(x’); if (delta<0) (exp(-delat/t)<Random(0,1)) then
遗传算法: 将问题的解编码为“染色体”,组成编 码的元素称为“基因”。在算法迭代过程中,按 照“适者生存”的规律,选取适应度高的染色体 进行复制,并对它们进行杂交和变异,产生新一 代更适应环境的染色体群。
13.3 遗传算法
1. 生成问题的一组初始解,将其作为初始群体。 2. 如果终止条件满足,那么返回当前已找到的最优解
掉最优解 完全禁忌的处理:结束算法,跳出当前解 特赦法则:如某个邻域解x′比较不错,那么即使x′
被禁忌表禁忌,仍可以选取它作为新的当前解
13.1 禁忌搜索
抽象算法框架
Algorithm TabuSearch<D,Z>(d: D; ten, kmax: int; f: Zreal; Init: DZ; N: ZSet(Z)) begin let x = Init(d); //找到一个初始可行解 let T = new Queue<ZZ>(), k = 0, xbest = x; while (k < kmax) do
➢ 时间等差下降 ➢ 迭代次数等比下降 ➢ 更为复杂的下降函数
13.2 模拟退火
抽象算法框架
Algorithm Annealing<D,Z>(d: D; tmax, tmin, a: real; kmax: int; f: Zreal; Init: DZ; N: ZSet(Z)) begin let x = Init(d), t = tmax, xbest = x; while (t > tmin) do
13.2 模拟退火
高温物体退火: 当温度趋向于最低温度时,物体停 留在能量最低状态的概率趋向于1。
模拟退火算法: 通过模拟物体的退火过程来进行寻 优计算
13.2 模拟退火
1. 找出问题的一个初始解x0,令x = x0,t = tmax(初 始最高温度)。
2. 如果终止条件满足,那么返回当前已找到的最优 解,算法结束。
,算法结束。 3. 计算群体中每个个体的适应度,选取其中适应度较
高的一些个体作为种群。 4. 在种群个体之间进行杂交操作,得到新一代群体。 5. 在新群体中选取少量个体进行变异操作,而后转第
2步
13.3 遗传算法
选择操作: 适应度越高的个体被选中的概率越大
➢ 轮盘赌
pi
பைடு நூலகம்
fi
N 1
fj
j0
13.3 遗传算法
let tx = null, tv = ; foreach (x’N(x)) do if ((x,x’)T f(x)f(xbest)) then continue; //跳过被禁忌且不被特赦的邻域解 if (f(x’) < tv) then
tx x’; tv f(x’); if (x = x’) then break; T.Enqueue((x,x’)); //更新禁忌表 if (|T| > ten) then T.Dequeue(); if (f(x’) < f(xbest)) then xbest x’; //更新最优解 x x’; k k+1; return xbest; end
选择操作: 适应度越高的个体被选中的概率越大
➢ 轮盘赌 ➢ 按概率排序 ➢ 锦标赛——个体之间两两相互竞争
13.3 遗传算法
杂交操作
1 1001 0 11
10011 1 00
13.3 遗传算法
抽象算法框架
Algorithm Genetic<D,Z>(d: D; N, len, gmax, rmax: int; f: Vectorreal; Init: DintSet<Z>) begin let POP = Init(d, N), g = 0, xbest = (Min x: xPOP: f(x)); while (g < gmax) do
x x’; if (f(x) < f(xbest)) then xbest x; //更新最优解 k k+1; t a*t; return xbest; end
13.3 遗传算法
遗传进化: 遗传性质以基因的形式包含在染色体中 ,基因中各个不同的位置控制着不同的特殊性质 ,基因杂交和基因突变能够产生对环境适应性更 强的后代。通过优胜劣汰的自然选择,适应性更 强的基因结构会被保留下来。
3. 从当前解x的邻域N(x)中随机选取一个解x′,计算 能量差Δf = f(x)−f(x′),若Δf为负或是一个很小的 正数,则令x = x′。
4. 如果当前温度下的迭代次数超过上限则转第5步 ,否则转第3步。
5. 令t = d(t),其中d为温度变化函数,而后转第3步
13.2 模拟退火
初始温度: 统计推断法或简单试验 温度下降
第13章 现代优化算法
禁忌搜索 模拟退火 遗传算法 蚁群算法 粒子群算法 差分进化算法
现代优化算法
启发式算法:依据人的直观经验、或是模拟自 然界的某些规则而设计出的算法
➢ 不一定保证得到最优解 ➢ 不一定保证解的近似程度
13.1 禁忌搜索
终止条件 解的评价:目标函数值或其它的评价函数 禁忌长度:太短可能会导致循环,太长则可能丢