智能计算补充(从第四章p44往后)

news2024/11/26 10:22:11

智能计算补充(从第四章p44往后)

本文内容大部分来自于任振兴老师的讲课PPT,主要是对老师PPT内容的总结和提炼,侵权请联系我删除。

文章目录

  • 智能计算补充(从第四章p44往后)
      • 适应度尺度变换
      • 1、适应度尺度变换的原因:
      • 2、适应度尺度变换定义
      • 3、适应度尺度变换方法
      • 开始对上述变换进行讲解。
        • 线性尺度变换
        • 条件1
        • 条件2
        • 乘幂尺度变换
        • 指数尺度变换
      • 约束条件的处理方法
        • 搜索空间限定法
        • 罚函数法
        • 可行解变换法
        • 选择算子
      • 竞技选择/锦标赛选择
      • 最优保存策略/精英保留选择策略
      • 确定式采样选择
      • 基本思想
      • 截断选择
    • 交叉算子
        • 单点交叉
        • 双点交叉和多点交叉
        • 均匀交叉
        • 算数交叉
        • 平坦交叉
        • 线性交叉
        • 基因重组——实值重组
      • 变异算子
        • 边界变异
        • 非均匀变异
        • 高斯变异
        • 多项式变异
      • 控制参数的选择
      • 终止条件
      • 种群多样性
      • 小生境技术
        • 预选择机制
        • 共享机制
        • 排挤机制
      • 早熟现象
        • 多种群遗传算法
    • 第六章--TSP问题
      • 旅行商问题分类
        • 贪心法的设计思想
        • 遗传算法解决TSP实例1
        • 遗传算法解决TSP实例2 PPT p65
    • 第七章--经典启发式优化算法
      • 爬山法
      • 人工免疫算法
      • 一般免疫算法机理
        • 免疫识别
        • 阴性选择算法
        • 免疫学习
        • 免疫学习——基本免疫方法
        • 广义免疫算法
        • 基于抗体浓度的克隆选择算法
        • 免疫算法中的亲和力计算方法
      • 模拟退火算法
        • 模拟退火算法的应用
        • 模拟退火算法实例 ppt p115
        • 模拟退火算法的优缺点
      • 局部搜索算法
      • 禁忌搜索(TS)
        • 基本概念
        • 邻域概念的回顾
        • 禁忌搜索示例(四城市非对称TSP问题)
        • TS和GA混合
          • 基本流程:
      • 爬山法、模拟退火法和遗传算法之间的区别
      • 小结
        • 启发式算法优缺点:
        • 启发式算法的不足:
    • 第八章——粒子群算法(PSO)
      • 背景
        • 群智能
        • 算法介绍
          • 抽象理解:
          • 标准PSO算法流程
        • 局部和全局最优算法
        • 参数分析
        • 离散二进制PSO
        • PSO算法和其他算法
        • 混合算法改进
        • 相关应用
    • 蚁群算法
      • 算法背景和意义
      • 研究内容与方法
        • 蚁群算法原理
        • 死蚁堆积阁
          • 双桥实验
        • 一般蚁群算法的框架
        • 蚁群算法与应用
        • 蚁群系统模型
        • 蚁群系统算法步骤
        • 算法流程
        • 蚁群系统模型参数选择
        • 蚁群算法的系统学特征
        • 蚁群算法的优点
        • 蚁群算法的缺点
        • 蚁群优化算法的研究现状
        • 蚁群算法的改进
        • 带精英策略的蚂蚁系统
        • 基于排列的蚂蚁系统
        • 最大-最小蚂蚁系统
        • 信息素轨迹的初始化
        • 信息素轨迹的平滑化
      • 蚁群系统
        • 蚁群系统状态转移规则
        • 蚁群系统全局更新规则
        • 蚁群系统局部更新规则
        • 蚁群系统流程图
        • 连续正交蚁群系统
      • P/NP/NPC/NP-hard解释
      • 蚁群算法的应用
        • 混流装配线调度
        • 蚁群算法在SMMAL中的应用
        • 局部搜索的计算
        • 状态转移概率
        • 信息素更新规则
        • 蚁群系统在TSP问题中的应用
      • 后续内容更新中...

适应度尺度变换

1、适应度尺度变换的原因:

在遗传算法中,各个个体被遗传到下一代群体中的概率是由该个体的适应度确定的,应用实践表明,仅仅用界限构造法来计算适应度,有些算法会收敛的很快,也有些遗传算法会收敛的很慢。

在遗传算法的初期阶段,群体中可能会有少数几个个体的适应度相对于其他个体来说非常高,因为相同的两个个体,不论在何处进行交叉操作都永远不会产生新的个体。如下所示:

在这里插入图片描述

这种情况会导致群体的多样性降低,容易导致遗传算法发生早熟(或者称为早期收敛),使遗传算法所求到的解停留在某一局部最优点上。

因此,希望在算法初期对一些适应度较高的个体进行控制,降低其适应度和其他个体适应度之间的差异程度从而限制其复制数量,以维护群体的多样性。

在遗传算法的后期阶段,大部分个体的适应度和最佳个体的适应度差异不大,使得进化过程无竞争性可言,导致无法对某些重点区域进行重点搜索,从而影响遗传算法的运行效率。

因此,希望在后期阶段,能够对个体的适应度进行适当扩大,扩大最佳个体与其他个体适应度之间的差异程度,以提高个体的竞争性。

2、适应度尺度变换定义

在遗传算法运行的不同阶段,有时需要对个体的适应度进行适当的扩大或缩小,这种对个体适应度所做的扩大或缩小变换就成为适应度尺度变换

3、适应度尺度变换方法

目前常用的尺度变换有三种:线性尺度变换,乘幂尺度变换,指数尺度变换。

开始对上述变换进行讲解。

线性尺度变换

公式如下:

在这里插入图片描述

系数a,b直接影响到这个尺度变换的大小,所以对其选择有一定的要求,一般希望他们满足下面两个条件:

条件1

尺度变换后全部个体的新适应度的平均值F’avg要等于其原适应度平均值Favg.

即:F‘avg=Favg

这是为了保证群体中适应度接近于平均适应度的个体能够有期待的数量被遗传到下一代群体中。

条件2

尺度变换后群体中新的最大适应度F’max要等于其原平均适应度Favg的指定倍数。

在这里插入图片描述

式中,c为最佳个体的期望复制数量,对于群体规模大小为50-100个个体的情况,一般取c=1,2-2.

这是为了保证群体中最好的个体能够被复制c倍到新一代群体中。

如下图所示:

在这里插入图片描述

综上所述,参数a,b的计算方法如下:

1、计算适应度非负判别式:这的式子左边为:F’min

在这里插入图片描述

若不等式满足,则执行(2),否则则执行(3).

判别式推导:

在这里插入图片描述

2、正常情况下的缩放:

在这里插入图片描述

最小适应度为负时的处理:

在遗传算法执行的后期,个别劣质个体的适应度远远小于群体平均适应度及最大适应度,并且后两者比较接近,这时按上述方法缩放适应度会使低适应度变成负值,如图所示,解决这个问题的方法是:把原最小适应度Fmin映射为F’min=0,并且保持原平均Favg与新的平均适应度F‘avg相等。

在这里插入图片描述

参数a,b计算方法如下:

在这里插入图片描述

从两式联立求解。

3、负适应度时的缩放:

在这里插入图片描述

乘幂尺度变换

公式为:
在这里插入图片描述

即新的适应度是原有适应度值的某个指定乘幂,幂指数k与所求的问题有关,并且在算法执行过程中需要不断对其进行修正才能是尺度变换满足一定的伸缩要求。

指数尺度变换

公式:

在这里插入图片描述

即新的适应度是原有适应度的某个指数,式子中系数β决定了选择强制性,β越小,原有适应度较高的个体的新适应度就越与其他个体的新适应度相差较大,亦就越增加了选择该个体的强制性。

约束条件的处理方法

在遗传算法中,目前还未找到一种能够处理各种约束条件的一般化方法,只能是针对具体应用问题及约束条件的特征,选用不同的处理方法。

在构造遗传算法时,处理约束条件的常用方法有三种:

  • 搜索空间限定法
  • 罚函数法
  • 可行解变换法

搜索空间限定法

基本思想:对遗传算法的搜索空间的大小加以限制,使得搜索空间中表示一个个体的点与解空间中表示一个可行解的点有一一对应关系,此时的搜索空间与解空间的对应关系如图所示。

在这里插入图片描述

对一些比较简单的约束条件,在个体染色体的编码方法上着手,就能够达到这种搜索空间与解空间之间的对应约束要求。

  • 用这种处理方法能够在遗传算法中设置最小的搜索空间,所以它能够提高遗传算法的搜索空间,所以它能够提高遗传算法的搜索效率。
  • 必须保证经过交叉变异等遗传算子作用之后所产生的新个体在解空间中也要有确定的对应解,而不会产生无效解。

处理方法:

在这里插入图片描述

罚函数法

基本思想:对在解空间中无对应可行解的个体,计算其适应度时,增加一个罚函数,从而降低该个体适应度,使该个体被遗传到下一代群体中的机会减小。

如用下式来对个体的适应度进行调整:

在这里插入图片描述

在这里插入图片描述

1、最简单的惩罚函数形式是平方法,即:

在这里插入图片描述

2、或者使用松紧法

在遗传算法初期,惩罚轻一些;到了后期惩罚重一些,新的目标函数为:

在这里插入图片描述

在这里插入图片描述

罚函数的难点:

如何确定合理的罚函数就是难点。

  • 若罚函数的强度太小,部分个体仍有可能破坏约束条件,所以保证不了遗传算法所得到的个体一定是满足约束条件,所以保证不了遗传算法所得到的个体一定是满足约束条件的一个可行解。
  • 若罚函数的强度太大,又有可能使个体的适应度差异不大,降低了个体之间的竞争力,从而影响算法的运行效率

可行解变换法

基本思想:

在由个体基因型到个体表现型的变换中,增加使其满足约束条件的处理过程。即寻找一种个体基因型和个体表现型之间的多对一的变换关系,使进化过程中所产生的个体总能够通过这个变换而转化成解空间中满足约束条件的一个可行解。

在这里插入图片描述

这种处理方法虽然对个体的编码方法、交叉运算、变异运算等没有附加的要求,但它却是以扩大搜索空间为代价的,所以一般会使得遗传算法的运行效率有所下降。

选择算子

比例选择算子

特点:适应度越高的个体被选中的概率也越大,适应度越低的个体被选中的概率也越小

缺点:由于是随机操作的原因,这种选择方法的选择误差比较大,有时甚至连适应度较高的个体也选择不上。

分级选择算子

1、产生原因

个别特优的个体会多次被选中复制,经过几代后他们在群体中数目越来越多,冲淡了群体多样性,因此提出分级的概念,用连续渐变的分级代替数值悬殊的适应度。

2、方法

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

3、优缺点:

优点:消除个体适应度差别悬殊时的影响,代替适应度的缩放技术

缺点:抹杀了个体适应度的实际差别,未能充分运用遗传信息

其余的线性分级选择模型

在这里插入图片描述

竞技选择/锦标赛选择

放回抽样

1、方法简介

这种方法通过竞争,优胜者成为下一代的个体。

在每一代群体中,每次都随机选择k个个体构成一个小群体,然后让他们进行竞争,即从这k个个体重确定性的取适应度最大的个体复制,进入下一代群体中,被复制后的个体仍然返回父代群体中,参加下一次k个个体的随机选择,这种随机选择重复m次,产生m个下一代个体
每次从种群中取出一定数量个体(放回抽样),然后选择其中最好的一个进入子代种群。重复该操作,直到新的种群规模达到原来的种群规模
几元锦标赛就是一次性在总体中取出几个个体,然后在这些个体中取出最优的个体放入保留到下一代种群的集合中。

2、具体操作步骤

  1. 从t代群体中随机选择k个个体
  2. 比较k个个体的适应度,复制适应度最大者进入第t+1代,被复制的个体仍保留在第t代。
  3. 重复执行上述步骤m次,直至产生跟第t代一样的个体数目

3、特点

竞技选择法,选择的力度取决于k值得大小,k越大,每次选择出的优胜者具有很高的适应度,反之,k越小,优胜者的适应度或高或低,随机性很强

参数k就是tournament size,即参加锦标赛的个体数目,通常当k=2是最常使用的大小,也称作Binary Tournament Selection。

竞技选择的优势:

更小的复杂度o(n)

易并行化处理

不易陷入局部最优点

不需要对所有的适应度值进行排序

由于算法执行的效率和易实现的特点,锦标赛选择算法是遗传算法中最流行的选择策略

最优保存策略/精英保留选择策略

1、基本思想

当前群体中适应度最高的个体不参与交叉、变异等运算,而是用他来代替本代群体中经过交叉、变异之后所产生的适应度最低的个体

2、具体操作过程

在这里插入图片描述

3、特点

最优保存策略可视为选择操作的一部分,该策略的实施保证了迄今为止所得到的的最优个体不会被交叉、变异等遗传操作所破坏,他是遗传算法收敛的一个重要保证条件

缺点:容易使某个局部最优个体不易被淘汰,从而快速扩散,使得算法的全局搜索能力不强

4、使用方法

该方法一般要和其他选择操作方法配合使用,才有良好的效果,另外,最优保存策略还可以推广,即在每一代的进化过程中保留多个最优个体不参加交叉、变异等遗传运算,而直接将他们复制到下一代群体中,这种选择方法也称为稳态复制。

确定式采样选择

1、基本思想

按照一种确定的方式来进行选择操作

2、具体操作过程

在这里插入图片描述

3、特点:

这种选择操作方法可保证适应度较大的一些个体一定能够被保留在下一代群体中,并且操作也比较简单。

注:第二步取完之后,还有一些名额,补齐之后才能达到种群个数M的要求,由以前的小数部分构成, 继续选择,就是第三步
确定式采样 无论谁来运行几次,结果都一样。

在这里插入图片描述

基本思想

这种选择策略最初在演化策略中使用,现在遗传算法中也经常使用,其选择标准是根据父代种群的μ个个体使用交叉或变异操作产生λ的子代个体,然后将这μ加λ个个体进行比较,再在其中选择μ的最优者。

截断选择

基本思想:

这种方法只从种群中选择一定比例的最好个体作为父体,然后均匀随机的对这些父体进行交叉配对直至子代个体数等于种群大小。

注意:一些选择算子的步骤或者策略中,涉及交叉或者变异算子

还有一些选择方法

在这里插入图片描述

在这里插入图片描述

交叉算子

交叉算子的设计包括以下两方面内容

1、如何确定交叉带你位置

2、如何进行部分基因交换

单点交叉

1、又称为简单交叉,是指在个体编码串中只随机设置一个交叉点,然后在该点相互交换两个配对个体的部分染色体

2、特点:

若邻接基因座之间的关系能够提供较好的个体性状和较高的个体适应度的话,则这种单点交叉操作破坏这种个体性状和降低个体适应度的可能性最小。

双点交叉和多点交叉

1、双点交叉

指在个体编码串中随机设置了二个交叉点,然后再进行部分基因交换

2、双点交叉的具体操作过程

  1. 在相互配对的两个个体编码串中随机设置两个交叉点
  2. 交换两个个体在设定的两个交叉点之间的部分染色体

例如:

从高位到低位,依次进行交叉运算。

在这里插入图片描述

3、多点交叉

指在个体编码串中随机设置多个交叉点,然后进行基因交换,多点交叉又称为广义交叉

操作过程:和双点交叉类似,将个体的交叉部分交替出现

说明,一般不大使用多点交叉,因为他有可能破坏一些好的模式,事实上,随着交叉点变多,个体结构被破坏的可能性也逐渐增大。

例子:

在这里插入图片描述

均匀交叉

1、指两个配对个体的每一个基因座上的基因都以相同的交叉概率进行交换,从而形成两个新的个体,均匀交叉实际上可以属于多点交叉范围

2、操作过程

在这里插入图片描述

由随机生成的0,1串来决定是否交换。

例子:

在这里插入图片描述

算数交叉

由两个个体的线性组合而产生出两个新的个体。

进行算数交叉的条件:

在这里插入图片描述

平坦交叉

在这里插入图片描述

平坦交叉之后检查种群的个数,继续交叉,直到满足群体个数为止。

线性交叉

在这里插入图片描述

基因重组——实值重组

  • 离散重组

  • 子代个体的每个变量都可以按照等概率的方式随机挑选父个体

在这里插入图片描述

实数编码的这些交叉方式都可以称之为重组

还有一些交叉算子

在这里插入图片描述

变异算子

变异算子的目的:

1、改善遗传算法的局部搜索能力

2、维持群体的多样性,防止出现早熟现象

变异算子的设计包括如下两方面的内容

1、如何确定变异点的位置?

2、如何进行基因值替换?

几种常用变异方法,适合于二进制编码和浮点数编码的个体。

基本位变异

均匀变异(类似于平坦交叉)

1、均匀变异

指分别用符合某一范围内均匀分布的随机数,以某一较小的概率来替换个体编码串中各个基因座上的原有基因值

2、均匀变异的具体操作过程

在这里插入图片描述

注意:与平坦交叉的区别,交叉由两个个体参与,变异是一个个体参与

例子

在这里插入图片描述

这部分提到的变异均为浮点数编码的变异算子

边界变异

均匀变异的变形,在进行变异操作时,随机的取基因座的两个对应边界基因值之一去代替原有基因值。

例子:

在这里插入图片描述

非均匀变异

不取均匀分布的随机数去替换原有的基因值,而是对原有基因做一随机扰动,以扰动后的结果作为变异后的新基因值,对每个基因座都以相同的概率进行变异运算后,相当于整个解向量在解空间中作了一个轻微的变动

在这里插入图片描述

高斯变异

是改进遗传算法对重点搜索区域的局部搜索性能的一种方法,高斯变异是指进行变异操作时,用符合均值为μ,方差为在这里插入图片描述

的正态分布的一个随机数来替换原有基因值。

操作:

在这里插入图片描述

例子:

在这里插入图片描述

多项式变异

在这里插入图片描述

还有些变异算子

在这里插入图片描述

控制参数的选择

这些参数包括,群体规模,二进制编码长度,交叉概率,变异概率等,简单遗传算法对其中的参数选择比较敏感。

  • 交叉运算是产生新个体的主要方法,它决定了遗传算法的全局搜索能力,而变异操作只是产生新个体的辅助方法。

  • 变异操作决定了算法的局部搜索能力

  • 交叉算子和变异算子相互配合,共同完成对搜索空间的全局搜索和局部搜索,从而使得遗传算法能够以良好的搜索性能完成最优问题的寻优过程。

  • 交叉概率始终控制着遗传运算中起主导地位的交叉算子,不适合的交叉概率会导致意想不到的后果

  • 交叉概率控制着交叉操作被使用的频度。较大的交叉概率可以使各代充分交叉,但群体中的优良模式遭到破坏的可能性增大,交叉概率越低进化的速度就会越慢,会使得更多个体直接复制到下一代,遗传陷入停滞状态

  • pc取值范围建议是0.4-0.99

  • 变异运算是对遗传算法的改进, 对交叉过程中可能丢失的某种遗传基因进行修复和补充, 也可防止遗传算法尽快收敛到局部最优解。

  • 变异概率取值较大时,增加了群体的多样性, 但也有可能破坏掉很多好的模式, 使得近似于随机搜索算法的性能;

  • 若变异概率取值太小, 则变异操作产生新个体和抑制早熟现象的能力就会较差。

  • 实际应用中发现: 当变异概率Pm很小时, 解群体的稳定性好, 一旦陷入局部极值就很难跳出来,易产生未成熟收敛;

  • 而增大Pm的值(如0.08), 可破坏解群体的同化,使解空间保持多样性, 搜索过程可以从局部极值点跳出来, 收敛到全局最优解。

  • 在求解过程中也可以使用可变的Pm, 即算法早期Pm取值较大, 扩大搜索空间; 算法后期Pm取值较小, 加快收敛速度。

  • 一般建议的范围是0.0001=0.1

  • 群体规模的大小直接影响到遗传算法的收敛性或计算效率

  • 规模过小,容易收敛到局部最优解

  • 规模过大,会造成计算速度降低,群体规模可以根据实际情况在10-200之间选定

终止条件

使遗传算法终止的常用方法有四种:

1、规定最大迭代次数T

在这里插入图片描述

2、规定运行时间T

3、规定最小偏差

在这里插入图片描述

(3) 规定最小的偏差,除了ppt中的适应度值的偏差,还有 每次迭代最优解 和 整个问题最优解的偏差,

4、观察适应度的变化趋势

在遗传算法的初期,最优个体的适应度以及群体的平均适应度都较小,以后随着复制、交叉 、变异等操作,适应度值增加。到了遗传算法后期,这种增加已趋缓和或停止,一旦这种增加停止,即终止遗传算法。一般定义相邻两次的误差小于指定阈值

种群多样性

  • 决定一个遗传算法的重要性能是种群多样性
  • 个体之间的距离越大,则多样性高越高,反之,个体之间的距离越小,则多样性越低
  • 多样性过高或过低,运行效果都不好
  • 可以设置种群的初始范围来控制种群的多样性
  • MATLAB自带的遗传算法工具箱种,默认情况下利用生成函数随机生成一个初始种群,用户也可以在”Population”的”Initial range”文本框种指定初始种群的向量范围。
  • 注意:初始范围仅仅限制在初始种群中的点的范围,后续各代包含的点可以不在初始种群的范围之内。
  • 例如:设置”Initial range”为[1;10]

小生境技术

生物学上,小生境是指在特定环境中一种组织的功能,而把有共同特征的组织称作物种。

技术思路

小生境技术就是将每一代个体划分为若干类,每个类中选出若干适应度较大的个体作为一个类的优秀代表组成一个群,在种群中,以及不同种群之间,杂交,变异产生新一代个体群,基于这种小生境的遗传算法,可以保持更好的解的多样性,同时具有很高的全局寻优能力和收敛速度,特别适合于复杂多峰函数的优化问题。

直接或间接的模拟小生境的方法已经出现多种,其中具有代表性的小生境技术有如下几种

1、基于预选择机制的小生境技术

2、基于排挤机制。。。

3、基于共享机制。。。

预选择机制

基本做法:

当新产生的子代个体的适应度超过其父代个体的适应度时,所产生的子代才能代替其父代而遗传到下一代群体中去,否则父代个体仍保留在下一代群体中。

由于子代个体和父代个体之间编码结构的相似性,所以替换掉的只是一些编码结构相似的个体,故它能够有效的维持群体的多样性,并造就小生境的进化环境。

共享机制

共享函数用来确定每个个体在群体中的共享度,一个个体的共享度等于该个体与群体中各个其他个体之间的共享函数值的总和。

当个体间关系比较密切时,共享函数值较大,反之,则共享函数值较小

在这里插入图片描述

显然,这种机制限制了种群内某一特殊“物种”的无控制的增长。可以有效地控制峰附近的个体数,使得种群中的个体不会全部聚集到某一个峰

基于共享机制的小生境对群体中聚集成小块的个体可以通过施加共享函数进行惩罚,从而维护群体中小规模低适应度物种生存。

当个体间的关系比较密切时,聚集在该个体周围的个体就越多,它的新的适应度就会越小,从而限制了它的过度增长;

这样就使得小规模物种的被选择概率会比适应值共享之前有所提高,增加了种群的多样性。

排挤机制

思想来源:在一个有限的生存空间中,各个生物为了延续生存,必须相互竞争有限的生存资源。

这种机制在算法中设置一个排挤因子CF(一般取CF=2或3),由群体中随机选取的1/CF 的个体组成排挤成员,依据新产生的个体与排挤成员的相似性来排挤一些与预排挤成员相类似的个体。随着排挤过程的进行,群体中的个体逐渐被分类,从而形成一个个小的生成环境。

早熟现象

主要表现在两个方面:

1、群体中所有的个体都陷于同一极值而停止进化。

2、接近最优解的个体总是被淘汰,进化过程不收敛。

早熟的定义:

早熟现象是遗传算法中指当还未达到全局最优解或满意解时,群体中不能再产生性能超过父代的后代。

未成熟收敛的重要特征是:群体中个体结构的多样性急剧减少

遗传算法希望找到最优解或满意解,能够保持群体中个体结构的多样性,从而使搜索能够进行下去。

早熟原因:

  • 当群体中存在个别超常个体时,该个体在选择算子作用下将会多次被选中,从而导致群体进化的过程停滞不前。
  • 进化搜索的最终结果对交叉概率和变异概率的取值非常敏感,取值不合理就会导致无法继续进化而早熟。
  • 当群体规模较小时,交叉操作无法发挥作用,群体很快终止进化;当群体规模取值较大时,计算效率受到影响。
  • 常用的终止判据是,当迭代次数达到规定的最大遗传代数时,则停止进化,也会造成未成熟收敛。

早熟的防止:

解决办法:

1、重新启动

2、有目的的选择配对个体进行配对策略,阻止相似个体进行配对

3、增加交叉操作使用的频率和使用动态改变适应度函数,或者使用更有破坏性的交叉算子

4、排挤模式用新产生的个体去替换父辈中类似的个体

多种群遗传算法

针对未成熟收敛问题,多种群遗传算法(Multiple Population GA,MPGA)可以用来取代SGA

引入概念:

1、突破SGA仅靠单个群体进行遗传进化的框架,引入多个种群同时进行优化搜索;不同的种群赋以不同的控制参数,实现不同的搜索目的。

2、各个种群之间通过迁移算子进行联系,实现多种群的协同进化;最优解的获取是多个种群协同进化的结果

3、通过人工选择算子保存各种群每个进化代中的最优个体,并作为判断算法收敛的依据。

多种群算法和 小生境算法有什么区别?
多个种群进行串行和多个种群进行并行有什么区别?串行时,前后可以有联系,并行时,相互之间可以有联系。

MPGA算法

各种群取不同的控制参数。交叉概率Pc决定了GA的全局搜索能力,变异概率Pm决定了GA的局部搜索能力。对于不同的参数选择,优化结果差异也很大。
MPGA弥补了SGA的这一不足,通过多个设有不同控制参数的种群协同进化,同时兼顾了算法的全局搜索和局部搜索。

各种群是相对独立的,相互之间通过迁移算子联系。

迁移算子将各种群在进化过程中出现的最优个体定期地引入其他的种群中,实现种群之间的信息交换。

迁移算子在MPGA中至关重要,如果没有迁移算子,各种群之间失去了联系,MPGA将等同于用不同的控制参数进行多次SGA计算

SGA是简单遗传算法,子种群,通过移民算子,将一些个体输出、迁移到其他子种群中,通过人工选择,选择出精华种群

精华种群和其他种群有很大不同。

精华种群不进行选择、交叉、变异等遗传操作,保证进化过程中各种群产生的最优个体不被破坏和丢失。

精华种群也是判断算法终止的依据,可以采用最优个体最少保持代数(超过这个代数最优个体不变就停止进化)作为终止依据。

在这里插入图片描述

MPGA算法工具箱函数

多种群遗传算法函数:

migrate(谢菲尔德工具箱)

Options中的Migration设置 (Matlab自带工具箱)

第六章–TSP问题

TSP问题又名旅行商问题,Traveling Saleman Problem

哈密顿圈问题是图论中著名的难题之一。给定一个有向图G(V,E),如果G中的圈C恰好经过每一个顶点一次,则称圈C是一个哈密顿圈,换句话说,它构成一条经过所有顶点的、没有重复的“路线”。

要判定一个图是否具有哈密顿圈的问题,是图论中著名的难题之一。

评价解决TSP问题的算法的好坏:

计算时间的多少,解的偏离程度

旅行推销员问题就成为在加权图中寻找一条经过每个顶点正好一次的最短圈的问题,即求最佳Hamilton 圈的问题

在这里插入图片描述

基本概念:

1、哈米尔顿路径(H路径):经过图G每个顶点正好一次的路径

2、哈米尔顿圈(H圈):经过G的每个顶点正好一次的圈

3、哈米尔顿图(H图):含H圈的图

4、最佳H圈:在加权图G=(V,E)中,权最小的H圈。

5、最佳推销员回路:经过每个顶点一次的权最小闭通路

6、TSP问题:在完备加权图中求最佳H圈问题

旅行商问题分类

1、经典TSP

经典TSP是在一个带权无向完全图中找一个权值最小的哈密顿回路。(CTSP)

2、不对称TSP

若在经典TSP模型中,两个顶点i和j间的距离d不一定相等,则称为ATSP。

3、配送收集TSP

配送收集TSP是由经典TSP适应物流配送领域的实际需求而产生的。

这个问题涉及到两类顾客需要:1、配送需求,要求将货物从配送中心送到需求点,2、收集需求,要求将货物从需求点运往配送中心

当所有的配送和收集需求都由一辆从配送中心出发、限定容量的车来完成时,怎样安排行驶路线才能构成一条行程最短的哈密顿回路

4、多人旅行商问题

多个旅行商遍历多个城市,在满足每个城市被一个旅行商经过一次的前提下,求遍历全部城市的最短路径。

解决多人旅行商问题,对解决“车辆调度路径安排”问题具有重要意义

可以把多人旅行商问题转化成多个TSP,再使用求解TSP的算法进行求解。

5、多目标旅行商问题

单目标旅行商问题的路径上只有一个权值 (即距离),而多目标旅行商问题研究的是路径上有多个权值的 TSP,要求找一条通过所有顶点并最终回到起点的回路,使回路上的各个权值都尽可能小。

由于在多目标情况下,严格最优解并不存在,是一个近似解集。

现阶段算法为构造一个求解单目标的遗传局部搜索算法,然后基于此求解多目标组合优化问题算法。

旅行商问题的应用

1、实际上很多问题都可以归结为或转化为旅行商问题,如物资运输路线问题、管道铺设问题等

印制电路板钻孔就是TSP应用的经典例子

工件排序

计算机布线

旅行商问题难于求解,特别是对规模较大的问题,旅行商问题中可能的路径数目和城市数目呈指数型增长,其已经被证明为NP问题

计算机科学家们有一个共识:即当输入规模n表示的算法复杂性函数 f (n)是以多项式为界的,算法才被认为是有效的

贪心法的设计思想

贪心算法通过一系列的选择来得到问题的解,在每一步做出当时看来最佳的选择——局部最优选择

步骤:将最优化问题转换成做出一次选择后,只剩一个子问题需要求解

证明做出贪心选择后,原问题总是存在最优解,即贪心选择是安全的;
证明做出贪心选择后,剩下的子问题的最优解与贪心选择组合即可得到原问题的最优解,即贪心选择是最优的

TSP的数学模型

在这里插入图片描述

注意求和的下标是i和j,两层求和。
在这里插入图片描述

遗传算法解决TSP思路

问题分析:

由于TSP问题的任一可能解——一个合法的城市序列,即n个城市的一个排列,都可以事先构造出来,就可以直接使用排列符号作为编码方法,直接在解空间中搜索最优解。

求解步骤:

1、定义适应度函数

将一个合法的城市序列s=(c1,c2,c3…cn,cn+1)(cn+1)就是c1,作为一个个体。这个序列中相邻两城之间的距离之和的倒数就可作为相应个体S的适应度,从而适应度函数就是:

在这里插入图片描述

2、编码

对个体s=(c1,c2,c3…cn,cn+1)进行编码,序列排列就是编码方法,如果编码不当,就会在实施交叉或变异操作时出现非法城市序列,即无效解。

例子:

对于5个城市的TSP,我们用符号A、B、C、D、E代表相应的城市,用这5个符号的序列表示可能的解即染色体。

3、进行遗传操作
在这里插入图片描述

因此需要设计合适的染色体和相应的遗传运算。

在这里插入图片描述

遗传算法解决TSP实例1

在PPT,p41

遗传算法操作算子的验证

在这里插入图片描述

对于上表,有以下结论:

1、遗传算法搜索求解能力与四个因素有关:群体规模,选择算子,交叉率,变异率。

2、从主到次依次为:交叉率-群体规模-选择算子-变异率

3、A3-B2-C1-D3是优选方案

遗传算法解决TSP实例2 PPT p65

放射治疗过程中,射线由加速器末端发射,并穿过患者体内的肿瘤位置。

在这里插入图片描述

具体步骤:

1、编码及种群初始化

本文使用实数编码,以n 个放射治疗点为例,个体数据结构为:γ1,γ2,γ3,…,γn ,则初始化种群为:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LaizJlfX-1684244111115)(C:\Users\30593\AppData\Roaming\Typora\typora-user-images\image-20230514155407998.png)]

2、选择算子设计

将规模为k的种群按照适应度函数值从小到大排序,并按照数量等分为三份

用第一部分的个体替换掉第三部分的个体,从而产生新的种群,此种选择算子既保留了种群部分的多样性,也有效的保留了优秀个体的基因,使其遗传下去。

3、交叉算子设计

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-iIwsWqON-1684244111117)(在这里插入图片描述
)]

4、变异算子的设计

在这里插入图片描述

5、初始运行参数设定

在这里插入图片描述

第七章–经典启发式优化算法

现代问题其实都可以归结为搜索问题。

在问题空间中所采用的搜索方式由搜索算法或策略所决定。

启发式算法其实就是依靠搜索实现

在这里插入图片描述

盲目搜索还是启发式搜索?

按照预定的控制策略实际搜索,在搜索过程中获取的中间信息不用来改进控制策略,称为盲目搜索。

反之就是启发式搜索。

盲目搜索是一类通用的蛮力式搜索算法。

启发式搜索有助于加速求解过程,但是找到的解可能不是最优解。

启发式算法:

1、爬山法、模拟退火、遗传、粒子群、蚁群等智能优化算法

2、贪心算法

与数据结构联系紧密
深度优先搜索算法是一种 后进先出 算法,广度优先搜索算法是一种 先进先出 算法。

启发式算法

定义1:基于直观或经验构造的算法,在可接受的花费下,给出待解组合优化问题的每个实例的一个可行解,该可行解与最优解偏差事先不一定可以预计。

定义2:启发式算法是一种技术,在可接受的计算费用内寻找最好解,但不保证该解的可行性与最优性,无法描述该解与最优解的近似程度。

特点:凭直观和经验给出算法,不考虑所得解与最优解的偏离程度。

爬山法

首先我们有必要先介绍爬山算法。

爬山法是启发式搜索的一种最简单的实现算法。

爬山法问题:设想一个盲人要爬一座自己从未爬过的高山,目标是爬到山顶。

爬山法利用反馈信息帮助生成解的决策,该算法每次从当前解的临近解空间中选择一个最优解作为当前解,直到一个局部最优解。

在搜索过程中扩展当前结点并估价他的子节点,最优的子节点被选择并进一步扩展,当搜索结果比它的所有子结点都要好,则搜索停止。

具体策略

盲人在山上某点,想要爬到山顶,这时候怎么办?

盲人特点:知道脚底下情况,但看不见周围更远的情况。

从立足处用明杖向前一试,觉得高些,就向前一步,如果前面不高,向左一试,高就向左一步。总之,高了就走一步,就这样一步一步地走,就走上了山顶。
这个方法在不易跳跃调整的情况下有用,当然也不必一步一步按东南西北四个方向走。

爬山法改进:

如果没有任何有关山顶的其他信息,盲人可以总是沿着最陡的山路向上爬,知道再也找不到新的路径。

即考虑了梯度信息,是最速下降法

在这里插入图片描述

梯度法即在搜索过程中,始终向着离目标最接近的方向搜索。

爬山法缺陷

爬山算法实现很简单,其主要缺点是会陷入局部最优解,而不一定能搜索到全局最优解。

一个错误的启发知识可能导致搜索无法沿着正确的道路前进,从而增加了搜索的深度甚至是无穷尽的搜索。

爬山法的改进:

1、随机选择开始状态,多次调用爬山算法,然后选择最优的结果。

2、模拟退火算法

人工免疫算法

人工免疫算法是模仿人工智能信息处理系统的免疫系统的一种启发式算法。

人工智能信息处理系统包括:

  • 脑神经系统(神经网络)
  • 遗传系统(进化计算)
  • 免疫系统(人工免疫系统)

AIS的研究历史

AIS在国内的研究

AIS的学术研讨

AIS的研究现状之一:

人工免疫网络模型

  • 独特型免疫网络(Jerne)
  • 互联耦合免疫网络(Ishiguro)
  • 免疫反应网络(Mitsumoto)
  • 多值免疫网络(Tang)

之二:

免疫学习算法:

  • 反面选择(阴性选择)算法(Forrest)
  • 免疫学习算法(Hunt&Cooke)
  • 免疫遗传算法(Chun)
  • 免疫Agent算法(Ishida)
  • 免疫网络调节算法(Wang&Cao)
  • 免疫进化算法(Jiao&Wang)

AIS的应用

  • 自动控制
  • 故障诊断
  • 模式识别
  • 图象识别
  • 优化设计
  • 机器学习
  • 网络安全

生物免疫的启示:

生物免疫主要有两种类型:

特异性免疫反应

非特异性免疫反应

生物免疫系统是通过自我识别,相互刺激与制约而构成了一个动态平衡的网络结构。

免疫系统的主要功能:

免疫防御

免疫稳定

免疫监视

抗原有两个重要特性:

a,免疫原性

b,抗原性或免疫反应性

抗体

T细胞

B细胞是体内产生抗体的细胞

一般免疫算法机理

一般免疫算法就是对免疫系统机理的模拟,包括

  • 免疫识别
  • 免疫学习
  • 免疫记忆

免疫识别

免疫识别是免疫系统的主要功能,同时也是AIS的核心之一,而识别的本质是区分“自我”和“非我”。

核心机制是根据识别的对象特征进行编码,定义一个自我集合并随机产生一系列检测器,用于检测自我集合的变化

根据阴性选择原理,若检测集合与自我集合匹配,则完成匹配任务,机体发现病变。

阴性选择算法

  • 在训练阶段,随机生成大量初始检测器,并逐一与系统定义的自体数据集进行匹配。若检测器能够识别某条自体数据,则被删除。那些与所有自体数据均不能匹配的检测器称为有效检测器,并被存入检测器集合。
  • 在检测阶段,未知类别数据与有效检测器进行匹配。如果至少有一个检测器能够识别该数据,则该数据被归类为非自体;否则归为自体。

在这里插入图片描述

算法步骤:
1、定义自己为一个字符集和S,每个字符串由n个字母组成,字符串可以是一个网络数据包,电子邮件特征向量或程序的一般行为模式。

2、产生一个初始检测集合R

3、监测器集合中每个监测器经历阴性选择过程,其中每一个监测器都不能与集合S中的任何一个字符串相匹配,否则就从监测器集合中删去对应的检测器。

4、通过与R集的匹配不断监测S的变化,一旦发生任何匹配,则说明S集发生了变化,即有外来抗原侵入。

伪代码:

在这里插入图片描述

候选的监测器是随机产生的,然后测试以删除与自身字符串相匹配的监测器

算法中采用的匹配规则有海明距离,欧氏距离。

该过程重复进行,直到所需数量的监测器被产生出来,通常用概率分析方法来估算为了满足一定的可靠性所应有的监测器的数目。

该算法由自我集合通过阴性选择生成检测子集,具备了并行性、健壮性和分布式检测等特点。

免疫学习

免疫系统通过学习促使免疫细胞的个体亲和度提高、群体规模扩大

最优个体以免疫记忆的形式得到保存。

当机体重复遇到同一抗原时,由于免疫记忆机制的作用,免疫系统对该抗原的应答速度大大提高。

免疫学习——基本免疫方法

免疫学习途径:

(a)对同一抗原进行重复学习,属于增强式学习。

(b)亲合度成熟,对应于AIS中的个体经遗传操作后其亲合度逐步提高的过程,属于遗传学习。

©低度的重复感染,对应于AIS的重复训练过程。

(d)对内生和外生抗原的交叉应答,属于联想式学习,对应于联想记忆机制。

交叉反应是两种来源不同的抗原,彼此之间可以有相同的抗原决定簇,由此决定簇刺激机体产生的抗体不仅可分别与其自身表面的相应抗原表位结合,而且还能与另一种抗原的相同表位结合发生反 应,称为交叉反应。

免疫系统通过二次应答大大加速优化搜索过程,加快学习进程并提高学习质量 。

广义免疫算法

广义上凡是基于生物学免疫原理,具有免疫系统的学习记忆,识别的算法都可以称为免疫算法。

分为三种情况:

模仿免疫系统抗体与抗原识别,结合抗体产生过程而抽象出来的免疫算法;

基于免疫系统中的其他特殊机制抽象出的算法,例如克隆选择算法;

与遗传算法等其他计算智能融合产生的新算法,例如免疫遗传算法。

免疫系统与一般免疫算法之间的比较

在这里插入图片描述

一般免疫算法步骤:

1、识别抗原:免疫系统确认抗原入侵

2、产生初始抗体群体:激活记忆细胞产生抗体,从包含最优抗体的数据库中选择出来一些抗体。

3、计算亲和力:计算抗体和抗原之间的亲和力

4、记忆细胞分化:T淋巴细胞刺激B细胞增殖、分化产生和记忆细胞

5、抗体促进和抑制:高亲和力抗体受到促进,高密度抗体收到抑制

6、终止条件判断。

一般流程:

在这里插入图片描述

人工免疫算法改进——克隆选择

CSA

基本思想:

只有那些与抗原有较高亲和度的细胞才获得增殖分化,具有较低亲和度的细胞将退化。

在问题求解过程中,抗原对应训练样本,B细胞对应可能解,包括一般细胞、新生细胞和记忆细胞

一般细胞用来储存多样化的解;新生细胞用来对一般细胞进行替换,防止陷入局部收敛;记忆细胞

用来记录最优解

  • 当淋巴细胞实现对抗原的识别,抗体和抗原的亲和度超过一定阈值,B细胞被激活并大量地增殖复制产生B细胞克隆

  • 克隆细胞经历变异过程,产生对抗原具有特异性的抗体。

  • 克隆选择理论描述了获得性免疫的基本特性,并且声明只有成功识别抗原的免疫细胞才得以增殖

  • 经历变异后的免疫细胞分化为抗体和记忆细胞两种。

  • 克隆选择的主要特征是免疫细胞在抗原刺激下通过遗传变异分化为多样性抗体细胞和记忆细胞

  • 克隆选择对应着一个亲和度成熟的过程,抗原亲和度较低的个体经历增殖复制和变异操作后,其亲和度逐步提高。

  • 本质上是一个达尔文式的选择和变异的过程,通过采用交叉、变异等遗传算子和相应的群体控制机制实现。

算法步骤:
1、产生候选方案的集合S§,该集合为记忆细胞子集(M)和剩余群体(Pr)的总和(P=Pr+M)

2、根据亲和度大小从P中选择n个最佳个体Pn。

3、克隆这n个最佳个体,生成临时克隆群体C,克隆的规模是抗原亲和度度量的单调递增函数。

4、对克隆的群体施加变异操作,从而生成一个成熟的抗体群体C*,判断是否停止迭代,是则结束,否则转5

5、在新产生的群体C*中重新选择一些好的个体构成记忆群体,P集合中的一些个体可以被新群体C*中的其他改进的个体取代替换。

6、插入新个体替换低亲和度个体,以保持群体多样性。

流程图:

在这里插入图片描述

伪代码:

在这里插入图片描述

基于抗体浓度的克隆选择算法

在抗原侵入的生物体免疫应答中,T细胞起着控制和调节抗体浓度的作用。

抗体浓度:指与某一抗体相同或相近的抗体在抗体群中所占的比例。

通过抗体浓度控制机制,浓度高的抗体被抑制,浓度低的抗体被促进,保证抗体种类的多样性。

CSABAD算法流程

在这里插入图片描述

免疫算法中的亲和力计算方法

免疫算法中最复杂的计算是亲和力计算。

抗原与抗体的亲和力也是抗体与抗体的亲和力的测量。

一般计算亲和力的公式:

在这里插入图片描述

其中,tk是抗原和抗体k的结合强度。

独特型(Idiotype,Id) 是指在同一个体内,每个抗体形成细胞克隆产生的Ig其V区的超变区抗原性不同。

一般免疫算法计算结合强度tk的数学工具主要有:

在这里插入图片描述

抗体抗原的编码方式:

目前一般免疫算法中抗体抗原,即解问题的编码方式主要有二进制编码、实数编码和字符编码三种。

其中,二进制编码因简单而得到广泛使用。

编码后亲和力的计算一般是比较抗原抗体字符串之间的异同,根据上述亲和力计算方法计算。

免疫算法和进化算法的区别:

它在记忆单元基础之上进行,可以确保了快速收敛于全局最优解;进化计算则是基于父代群体,不能保证概率收敛。

它有计算亲和性的程序。
亲和性有两种形式:一种形式说明了抗体和抗原的关系,即解和目标的匹配程度;另一种形式说明了抗体之间的关系。这个独有的特性保证了免疫算法具有多样性,反映了真实的免疫系统的多样性;而进化算法则是简单计算个体的适应度。

通过促进或抑制抗体的产生,体现了免疫反应的自我调节功能,保证了个体的多样性;而进化算法只是根据适应度选择父代个体,并没有对个体多样性进行调节。

模拟退火算法

模拟退火是搜索过程引入了随机因素的通用优化方法。模拟退火算法以一定的概率来接受一个比当

前解要差的解,因此有可能会跳出这个局部的最优解,达到全局的最优解。

这个方法是基于蒙特卡罗迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退

火过程与一般组合优化问题之间的相似性

模拟退火的基本原理:

S. Kirkpatrick等的思想其实地将退火思想引入到组合优化领域。它是基于Monte-Carlo 迭代求解策略的一种随机寻优算法,其出发点是基于物理中固体物质的退火过程与一般组合优化问题之间的相似性。

模拟退火算法的核心思想

首先随机选择一个解作为开始,接下来产生一个随机扰动,如果找到比上一个解更接近最优解的

解,那么久直接接受这个解。

而如果找到的解离得更远了,以一定的概率接受。

基本原理:

模拟退火算法从某一较高初温出发,伴随温度参数的不断下降,结合一定的概率突跳特性在解空间中

随机寻找目标函数的全局最优解。

将温度T当做控制参数,内能E视为目标函数值f,而固体在某温度T时的一个状态对应一个解。

随着控制参数T的降低,使目标函数f(内能E)也逐渐降低,直至趋于全局最小值。

根据Metropolis准则,粒子在温度T时趋于平衡的概率为
P(ΔE)=exp[ΔE/(kT)]
其中E为温度T时内能,ΔE为其改变量,k为Boltzmann常数
温度越高,出现一次能量差为ΔE的降温的概率就越大;温度越低,则出现降温的概率就越小。即P(ΔE)会随着T降低而降低。
内能E模拟为目标函数值f
一次向较差解的移动能够以概率P(ΔE)来接受这样的移动

优化问题的模拟退火算法:
由初始解i和控制参数初值t开始,对当前解重复“对搜索点施加随机扰动→产生新解→计算目标函数差→接受或舍弃”的迭代,并逐步衰减t值。
算法终止时的当前解即为所得近似最优解。
退火过程由冷却进度表(Cooling Schedule)控制,包括控制参数的初值t及其衰减因子Δt、每个t值时的迭代次数L和停止条件S

结合概率突跳特性在解空间中随机寻找目标函数的全局最优解,
那么具体的更新解的机制是什么呢?如果新解比当前解更优,则
接受新解,否则基于Metropolis准则判断是否接受新解。接受概
率为:
在这里插入图片描述

如上公式,对搜索点施加随机扰动,产生新解,相应地系统对搜索点从到转变的接受概率就为上公式。

设开始状态在A,更新到B局部最优解,这时发现更新到B时,能量比A要低,则说明接近最优解了,因此百分百转移
状态到达B后,下一步能量上升,如果是梯度下降则是不允许继续向前的,而这里会以一定的概率P(ΔE)跳出这个坑
如果B最终跳出来了到达C,又会继续以一定的概率跳出来,直到到达D后,就会稳定下来。

模拟退火算法的组成:

模拟退火算法由解空间、目标函数和初始解三部分组成。

1、解空间:对所有解均为可行解均为可行解的问题定义为可能解的集合,对存在不可行解的问题,要么限定解空间为所有可行解的集合,或允许包含不可行解但在目标函数中用罚函数惩罚以致最终完全排除不可行解。

2、目标函数:对优化目标的量化描述,是解空间到某个数集的一个映射,通常表示为若干优化目标的一个和式,应正确体现问题的整体优化要求且较易计算,当解空间包含不可行解时还应包括罚函数项。

3、初始解:是算法迭代的起点,试验表明,模拟退火算法是健壮的,即最终解的求得不十分依赖初始解的选取,从而可任意选取一个初始解。

基本过程:

在这里插入图片描述

有几个需要注意的点:

1、初始点的选取对算法的结果有一定的影响,最好是多次运行对结果进行综合判断。

2、在算法运行初期,温度下降较快,避免接受过多的查结果,当运行时间增加,温度下降缓慢,以便于更快稳定结果。

3、在设计程序时应该加入适当的输出条件,满足输出条件,比如结果稳定后即可结束程序。

模拟退火算法的应用

1、超大估摸集成电路设计中的应用。

2、模拟退火算法在神经网络计算机中的应用。

模拟退火算法具有跳出局部最优陷阱的能力。在Boltzmann机中,即使系统落入了局部最优的陷阱,再系统最终将往全局最优值的方向收敛。

3、模拟退火算法在图像处理中的应用。

4、其他应用,比如:TSP问题,Knapsack(背包客)问题

模拟退火算法实例 ppt p115

模拟退火算法的优缺点

优点:

模拟退火算法能够对实际问题的全局最优解进行随机搜 索,避免跳入局部最优解的陷阱。
对于较为复杂的组合优化问题应用灵活,时间复杂度与空间复杂度相对较低,且基本不受初始条件的束缚
对问题的领域知识所知甚少的情况下,采用模拟退火算法最合适 。

缺点:

算法对于简单问题效率不高,且对于降温方法要求较为严格。
但如果已知有关待解问题的一些知识后,模拟退火算法却无法充分利用它们
如何把传统的启发式搜索方法与模拟退火这样的随机搜索算法结合起来是目前模拟退火改进的方向之一。

局部搜索算法

局部搜索算法是基于贪婪思想利用邻域函数进行搜索的。

  • 从一个初始解出发,利用邻域函数持续地在当前解的邻域中搜索比他好的解。
  • 若能够找到这个解,就可以直接成为新的当前解,然后重复上述过程
  • 否则结束搜索过程,并以当前解作为最终解。

有文献把爬山法列入局部搜索算法中。

算法,简单、通用、易于实现。

搜索性能完全依赖于邻域函数和初始解,邻域函数设计不当或者初值选取不合适,则算法最终的性能将会很差。

算法无全局优化的能力,在搜索过程中无法避免陷入局部极值。

一般过程:

1、随机选择一个初始的可能解X0 D ,D是问题的定义域, Xb = X0,Xb用于记录到目标位置得到的最优解,P=N(Xb), P为Xb的邻域,N(X)为邻域函数。

2、如果不满足结束条件,则Begin。结束条件包括达到了固定的循环次数、P为空等。

3、选择P的一个子集P’,Xn为P’中的最优解。

4、假定最优解求解的是最小值,如果f(Xn)<f(Xb),则Xb=Xn,并将P=N(Xn),转2,f(X)为指标函数。

5、否则,P=P-P’,转2。

6、结束

注意:选择子集P’时,可以根据问题的特点,选择适当大小的子集,极端情况下,可以选择P’为P本身或者P的一个元素。

随机初始化的解不太可能是邻域内的极值。

禁忌搜索(TS)

他是对局部邻域搜索的一种扩展,是一种全局逐步寻优算法,是对人类智力过程的一种体现和模拟。

TS是现代启发搜索算法的一种。

TS算法通过引入一个灵活的存储结构和相应的禁忌准则来避免迂回搜索,并通过特赦原则来赦免一些被禁忌的优良状态,进而保证多样化的有效搜索以最终实现全局优化。

在组合优化,生产调度,机器学习,电路设计和神经网络等领域得到广泛应用。

近年来在函数全局优化方面得到较多的研究,并大有发展的趋势。

实现步骤:

在这里插入图片描述

禁忌搜索最最重要的思想是模拟了人的记忆机制,标记对应已搜索的对象,并在进一步的搜索避开,从而保证有效搜索途径的探索。

增加灵活的记忆方法是对已经进行的优化过程进行记录和选择,指导下一步的搜索。

禁忌搜索涉及到邻域、禁忌表、禁忌长度、候选解、藐视准则等概念。

在禁忌搜索算法中,可能会出现候选解全部被禁忌,或者存在一个优于“best so far”状态的禁忌候选解,此时藐视准则将使某些状态解禁,以实现更高效的优化性能

基本概念

禁忌表:包括禁忌对象、禁忌范围和禁忌长度,使用数组、队列、栈、链表等结构

禁忌对象:可行解

禁忌范围:禁忌单一或群体可行解

禁忌长度:禁忌对象在禁忌表中的生存时间

候选集:邻域所有可行解的一个子集

特赦规则:当满足该条件时该元素从禁忌表中跳出。

局部搜索通过禁忌表的方式改进,解决无法找到全局最优的问题

对于找到的一部分局部最优解,有意识地避开它(但不是完全隔绝),从而获得更多的搜索区间。

禁忌表:当兔子们再寻找的时候,有意识地避开并留一只兔子。
禁忌长度:那只留在泰山的兔子在一定时间后重新回到找最高峰的大军。
特赦准则:如果留守泰山的兔子还没有归队,但是找到的地方全是比较低的地方,兔子们就不得不再次考虑选中泰山。

上述三个概念是算法优化的关键。

对搜索性能有影响的因素:

禁忌长度:对解的收敛速度有影响:禁忌长度越短,很容易造成搜索循环增加,导致过早陷入局部最优。禁忌长度过长又会导致计算时间过长。

候选集:候选集的大小,过大增加计算内存和计算时间,过小过早陷入局部最优。

TS算法的终止准则

最大迭代步数:简单易操作,但是难以保证优化质量。

某个对象的最大禁忌频率:若某个状态、适配值或对象的禁忌频率超过某一阈值,则终止算法,其中也包括最佳适配值连续若干步保持不变的情况。(适配值就是目标函数值)

适配值的偏离幅度:估计问题的下届,一旦算法中最佳适配值与下界的偏离值小于某规定幅度时,终止搜索。

邻域概念的回顾

在这里插入图片描述

禁忌搜索示例(四城市非对称TSP问题)

在这里插入图片描述

分析:这是一个简单的问题,利用枚举也可以找到最优的答案,但是,找到答案不是我们的目的,我们主要是想通过一个简单的例子来理解禁忌搜索是如何进行工作的。从距离矩阵D可以看到,这是一个非对称的TSP问题,但是这并不影响算法的执行。

在这里插入图片描述

A不参与对换,只有B,C,D三个城市进行交换,CD 4.5 的意思是 CD互换,变为ABDC之后,路径为4.5, 另外还有一个变量来记录历史中的最优解
或者利用之前的局部搜索,得到的最优候选解得和当前解进行比较,才能替换。

在这里插入图片描述

禁忌表格中的数字,表示被禁忌的次数,会随着次数一次一次的减少。CD交换被锁定,只能从BC和BD两种交换中选择。

在这里插入图片描述

在这里插入图片描述

TS和GA混合

GA优缺点

并行、群体操作

早熟、爬山能力弱

TS优缺点

爬山能力强、有记忆功能

对初值依赖性强,单体操作

把TS 独有的记忆功能引入到GA 搜索过程之中,修改选择算子,并把TS 作为GA 的变异算子。

综合了GA 具有多出发点和TS的记忆功能及爬山能力强的特点,克服了GA 爬山能力差的弱点,并保持了GA 具有多出发点的优势。

基本流程:

初始设定

交叉操作

基于TS的选择操做

基于TS的变异操作

重复三种操作直到终止

为什么要和选择算子结合呢? 把变异算子用 禁忌搜索算子替换

在这里插入图片描述

爬山法、模拟退火法和遗传算法之间的区别

区别:

**爬山法:**袋鼠最有希望到达靠近它出发点的山顶,但不能保证该山顶是珠穆朗玛峰,各种使用的方法都试图找到实际全局最优值。
**模拟退火:**袋鼠喝醉了,随机地跳跃了很长时间。运气好的话,它从一个山峰跳过山谷,到了另外一个更高的山峰上。但是,它渐渐清醒了并朝着峰顶跳去。
**禁忌搜索:**袋鼠们互相转告哪里的山已经找过,并且找过的每一座山都留下一只袋鼠做记号,一段时间后,这只袋鼠回到队伍中继续寻找。

小结

启发式算法优缺点:

在这里插入图片描述

启发式算法的不足:

在这里插入图片描述

第八章——粒子群算法(PSO)

背景

人工生命:研究具有某些生命基本特征的人工系统,包括:

1、研究如何利用计算技术研究生物现象

2、研究如何利用生物技术研究计算问题

关注的是第二点

群智能

群智能的一种不严格定义:

任何一种由昆虫群体或其它动物社会行为机制而激发设计出的算法或分布式解决问题的策略均属于群智能。其模拟系统利用局部信息从而可以产生不可预测的群行为。

被模拟对象的智能层次:

在这里插入图片描述

上式GEP-变异和杂交=PSO

1989年提出群体智能

Millonas在开发人工生命算法时(1994年),提出群体智能概念并提出五点原则:

1、接近性原则:群体应能够实现简单的时空计算;
2、优质性原则:群体能够响应环境要素;
3、变化相应原则:群体不应把自己的活动限制在一狭小范围;
4、稳定性原则:群体不应每次随环境改变自己的模式;
5、适应性原则:群体的模式应在计算代价值的时候改变。

最原始的PSO算法,它公式的内涵也就是基于这5点原则的

粒子群优化算法就是模拟鸟群的社会行为发展而来的

粒子群优化算法源于学者对于鸟群的仿真建模研究,模型中一群鸟在空中飞行,每个鸟遵守以下规则。:

1)避免与相邻的鸟发生碰撞冲突;
2)尽量与自己周围的鸟在速度上保持协调和一致;
3)尽量试图向自己所认为的群体中靠近。
仅通过使用这三条规则,模型就出现非常逼真的群体聚集行为

算法介绍

PSO的优势在于:简单容易实现并且没有许多参数的调节

目前被广泛应用于函数优化,神经网络训练,模糊系统控制以及其他遗传算法的应用领域

抽象理解:
  • 鸟在N维空间被抽象为没有质量和体积的微粒(点),位置表示为矢量Xi=(x1,x2,…,xN),飞行速度表示为矢量Vi=(v1,v2,…,vN)。
  • 每个粒子都有一个由目标函数决定的**适应值(**fitness value),并且知道自己到目前为止发现的最好位置(pbest)和现在的位置Xi。这个可以看作粒子自己的飞行经验。
  • 除此之外,每个粒子还知道到目前为止整个群体中所有粒子发现的最好位置(gbest)(gbest是pbest中的最好值)。这个可以看作是粒子同伴的经验。
  • 粒子就是通过自己的经验和同伴中最好的经验来决定下一步的运动。

PSO初始化为一群随机粒子(随机解),通过迭代找到最优解。

在每一次的迭代中,粒子通过跟踪两个“极值”(pbest,gbest)来更新自己。

在找到这两个最优值后,粒子通过下面的公式来更新自己的速度和位置。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

目前采用较多的是SHI建议的线性递减权值(LDW)策略。

在这里插入图片描述

在这里插入图片描述

标准PSO算法流程
  1. 初始化一群微粒(群体规模为m),包括随机位置和速度
  2. 评价每个微粒的适应度
  3. 对每个微粒,将其适应值和其经过的最好位置pbest作比较,如果较好,则将其作为当前的最好位置pbest
  4. 对于每个微粒,将其适应值和群体的最好位置gbest作比较,如果较好,则将其作为当前的最好位置gbest.
  5. 根据公式,2,3来调整微粒速度和位置
  6. 未达到结束条件则转到第二步

迭代终止条件

1、一般选择为最大迭代次数Gk.

2、微粒群迄今为止搜索到的最优位置满足预定最小适应阈值

流程图和伪代码:

在这里插入图片描述

局部和全局最优算法

在这里插入图片描述

在这里插入图片描述

全局和局部PSO在收敛上的特点:

在这里插入图片描述

参数分析

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

离散二进制PSO

基本PSO适用于实值连续空间,然而许多实际问题是组合优化问题,因而提出离散形式的PSO。

在这里插入图片描述

在这里插入图片描述

应用举例

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

步骤2:粒子的速度和位置更新。根据自身的历史最优位置和全局的最优位置,更新每个粒子的速度和位置。

w一般取[0,1]区间的数,假设为0.5
c1和c2取固定值2.0
r1和r2是[0,1]区间的随机数

步骤三:

在这里插入图片描述

PSO算法和其他算法

1、遗传算法和PSO的比较

共性:

(1) 都属于仿生算法。
(2) 都属于全局优化方法。
(3) 都属于随机搜索算法。
(4) 都隐含并行性。
(5) 根据个体的适配信息进行搜索,因此不受函数约束条件的限制,如连续性、可导性等。
(6) 对高维复杂问题,往往会遇到早熟收敛和收敛性能差的缺点,都无法保证收敛到最优点。

差异:

(1) PSO有记忆,好的解的知识所有粒子都保存,而GA,以前的知识随着种群的改变被改变。
(2) PSO中的粒子仅仅通过当前搜索到最优点进行共享信息,所以很大程度上这是一种单共享项信息机制。而GA中,染色体之间相互共享信息,使得整个种群都向最优区域移动。
(3) GA的编码技术和遗传操作比较简单,而PSO相对于GA,没有交叉和变异操作,粒子只是通过内部速度进行更新,因此原理更简单、参数更少、实现更容易。

2、PSO和ANN

在这里插入图片描述

混合算法改进

在这里插入图片描述

相关应用

在这里插入图片描述

蚁群算法

算法背景和意义

群智能理论研究领域有两种主要的算法:
蚁群算法:对蚂蚁群落食物采集过程的模拟,已成功应用于许多离散优化问题

微粒群算法:起源于对简单社会系统的模拟,最初是模拟鸟群觅食的过程,但后来发现它是一种最好的优化工具。

自然界蚂蚁群体在寻找食物的过程中,通过一种被称为信息素(Pheromone)的物质实现相互的间接通信,从而能够合作发现从蚁穴到食物源的最短路径。

通过对这种群体智能行为的抽象建模,研究者提出了蚁群优化算法(Ant Colony Optimization, ACO),为最优化问题、尤其是组合优化问题的求解提供了一强有力的手段。

ACO是从自然界中蚁群的的觅食行为中受启发,用来在图中寻找优化路径的机率型算法,又称为蚂蚁算法。

针对该算法的不足,一些学者提出了许多改进的蚁群优化算法,如蚁群系统,最大-最小蚂蚁系统,最优保留蚁群系统等。

我国最早研究蚁群算法的是东北大学的张纪会博士和徐心和教授。

在这里插入图片描述

蚁群算法优点主要表现在以下几个方面:

1、无集中控制约束,不会因个别个体的故障影响整个问题的求解,确保了系统具备更强的鲁棒性

2、以非直接的信息交流方式确保了系统的扩展性

3、并行分布式算法模型,可充分利用多处理器

4、对问题定义的连续性无特殊要求

5、算法易于实现

研究内容与方法

蚁群算法原理

蚁群的行为是整体协作,相互分工,以一个整体去解决一些对单个蚂蚁看上去是不可能完成的任务。

就目前来讲,蚁群有几个方面的行为特征对算法研究有很好的启发意义,诸如觅食行为、任务分配、死蚁堆积阁,死亡漩涡等。

在蚁群蚁穴清理行为中,蚁群会将蚁穴中分布分散的蚂蚁尸体堆积成相对集中的几个大堆。在聚类分析中,将这些分散分布的蚂蚁尸体视为待分析的数据集合,而最终堆积而成的大堆则对应于最终的聚类结果。

死蚁堆积阁

基本机制是蚁堆对工蚁搬运死蚂蚁具有吸引。

这种机制由此形成了一个正反馈,基于这种机制形成了基于蚁群的聚类算法。

这种聚类算法,数据的空间分布状态直接影响了聚类的结果。

蚁群算法是对自然界蚂蚁的寻径方式进行模拟而得到的一种仿生算法。

算法模拟了蚁群从巢穴出发寻找食物,并且将食物搬回巢穴的行为。

  • 由大量蚂蚁组成的蚁群集体行为便表现出一种信息正反馈现象:某一路径上走过的蚂蚁越多,则后来者选择该路径的概率就越大。

  • 当它们碰到一个还没有走过的路口时,就随机地挑选一条路径前行。

  • 当后来的蚂蚁再次碰到这个路口的时候,选择激素浓度较高路径概率就会相对较大,这样形成一个正反馈。

  • 最优路径上的激素浓度越来越大。而其他的路径上激素浓度却会随着时间的流逝而消减,最终整个蚁群会找出最优路径。

    双桥实验

一般蚁群算法的框架

由三个部分组成:

蚁群的活动

信息素的挥发

信息素的增强

核心主要体现在算法中的转移概率公式和信息素更新公式。

蚁群算法与应用

在这里插入图片描述

蚁群系统模型

为了说明蚁群系统模型,我们引入蚁群算法求解TSP问题:

在这里插入图片描述

算法模型

在这里插入图片描述

标准蚁群优化数学模型

在这里插入图片描述

在这里插入图片描述

蚁群系统算法步骤

在这里插入图片描述

在这里插入图片描述

算法流程

例子:

在这里插入图片描述

解:

步骤一:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

一个蚂蚁在一条路径上留下的信息素强度就是1.

在这里插入图片描述

蚁群系统模型参数选择

信息素启发因子α

在这里插入图片描述

期望值启发因子β

在这里插入图片描述

信息素挥发度1-ρ

在这里插入图片描述

三者关系:

在这里插入图片描述

蚁群算法的系统学特征

蚁群算法由自然界中蚂蚁的行为演化而来,整体上可以视为一个标准的系统。

  • 在蚁群系统中,每一只蚂蚁个体的行为成为了系统的元素,蚁群通常包含的蚂蚁数量成百上千,符合系统的多元性
  • 蚂蚁之间通过信息素交流、相互影响体现了系统的相关性
  • 由于蚂蚁之间的共同协作,互惠互利其效果远大于个体单独行动的能力之和,体现了系统的整体性

1、分布式

蚁群算法继承了蚂蚁觅食时表现出来的分布式特性,每一个人工蚂蚁都在问题空间上进行独立思考,但是群体又不会因为个别蚂蚁的差错而受到影响。

蚁群算法作为一种智能分布式体系,在构造解空间时都以多点同步搜索的方式进行,各点相互独立又相互协同,具有很强的抗干扰能力。

2、自组织

在这里插入图片描述

在这里插入图片描述

3、正反馈

在这里插入图片描述

蚁群算法的优点

在这里插入图片描述

在这里插入图片描述

蚁群算法的缺点

1、运行时间长

在这里插入图片描述

2、容易出现震荡现象

在这里插入图片描述

3、容易陷入局部最优解

在这里插入图片描述

蚁群优化算法的研究现状

在这里插入图片描述

蚁群算法的改进

在这里插入图片描述

蚁群算法的改进工作主要集中在AS性能的改进方面,较早的一种改进方法是精英策略。

其思想是在算法开始后即对所有已发现的最好路径给予额外的增强,同时将经过这些行程的蚂蚁记为“精英”,从而增大较好行程的选择机会。

优点:加快收敛速度

缺点:过早收敛到局部最优

带精英策略的蚂蚁系统

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

基于排列的蚂蚁系统

在这里插入图片描述

最大-最小蚂蚁系统

在这里插入图片描述

主要有三方面特点:

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

信息素轨迹的初始化

在这里插入图片描述

信息素轨迹的平滑化

基本思想:

在这里插入图片描述

平滑机制有助于对搜索空间进行更有效的探索

蚁群系统

蚁群系统做了三个方面的改进和优化:

在这里插入图片描述

蚁群系统状态转移规则

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

蚁群系统全局更新规则

在这里插入图片描述

在这里插入图片描述

蚁群系统局部更新规则

蚁群系统流程图

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DE78cR47-1684244111166)(在这里插入图片描述
在这里插入图片描述

连续正交蚁群系统

在这里插入图片描述

在这里插入图片描述

P/NP/NPC/NP-hard解释

NP问题就是非确定性多项式难题,这类问题通常不能确定是否在多项式时间内找到答案,但是可以在多项式时间内验证答案是否正确。

P:能在多项式时间内解决的问题

NP:不能在多项式时间内解决或不确定能不能在多项式时间内解决,但能在多项式时间验证的问题

NPC:NP完全问题,目前没有多项式的有效算法,只能用指数级甚至阶乘级复杂度的搜索,是NP类中最困难的一类问题

NP hard:NP难问题,所有NP问题在多项式时间内都能约化到它的问题(不一定是NP问题)。

在这里插入图片描述

多项式时间在计算机上是最小的复杂度类别

时间复杂度为O(1),O(n),O(logn),O(na),O(an),O(n!)等称为多项式级的复杂度。

O(a^n),O(n!)称为非多项式级的复杂度。

非多项式级的复杂度在数据量变大后,所需时间长度成几何阶数上涨,令计算机难以承受。

问题A约化为问题B的含义就是,可以用问题B的解法解决A

例如我们有问题A:求解bx+c=0,问题B:求解
ax^2+bx+c=0。我们令a=0,问题B就和问题A等价,所以我们可以说“问题A可约化为问题B”。

在这里插入图片描述

蚁群算法的应用

在这里插入图片描述

多种研究表明,群智能在离散求解空间和连续求解空间中均表现出良好的搜索效果,并在组合优化问题中表现突出。

蚁群优化算法并不是旅行商问题的最佳解决方法,但是它却为解决组合优化问题提供了新思路,并很快被应用到其它组合优化问题中。

比较典型的应用研究包括:网络路由优化、数据挖掘以及一些经典的组合优化问题。

蚁群算法在电信路由优化中已取得了一定的应用成果。HP公司和英国电信公司在90年代中后期都开展了这方面的研究,设计了蚁群路由算法(Ant Colony Routing, ACR)。

每只蚂蚁就像蚁群优化算法中一样,根据它在网络上的经验与性能,动态更新路由表项。

基于群智能的聚类算法:

在这里插入图片描述

在这里插入图片描述

混流装配线调度

混流装配线(sequencing mixed models on an assembly line, SMMAL)是指一定时间内,在一条生产线上生产出多种不同型号的产品,产品的品种可以随顾客需求的变化而变化。SMMAL是车间作业调度问题(job-shop scheduling problem, JSP)的具体应用之一。

问题描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

蚁群算法在SMMAL中的应用

在这里插入图片描述

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0WvCphcf-1684244111173)(C:\Users\30593\AppData\Roaming\Typora\typora-user-images\image-20230515155545143.png)]

局部搜索的计算

在这里插入图片描述

状态转移概率

在这里插入图片描述

信息素更新规则

在这里插入图片描述

蚁群系统在TSP问题中的应用

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

后续内容更新中…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/608387.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DicomObjects.Core 3.0.17 Crack

DicomObjects.NET 核心版简介 DicomObjects.Core Assembly DicomObjects.NET 核心版简介 DicomObjects.Core 由一组相互关联但独立的 .核心兼容的“对象”&#xff0c;使开发人员能够快速轻松地将DICOM功能添加到其产品中&#xff0c;而无需了解或编程DICOM标准的复杂性。此帮助…

Golang 协程/线程/进程 区别以及 GMP 详解

Golang 协程/线程/进程 区别详解 转载请注明来源&#xff1a;https://janrs.com/mffp 概念 进程 每个进程都有自己的独立内存空间&#xff0c;拥有自己独立的地址空间、独立的堆和栈&#xff0c;既不共享堆&#xff0c;亦不共享栈。一个程序至少有一个进程&#xff0c;一个进程…

数据库多表设计

说明&#xff1a;在项目的数据库设计时&#xff0c;表与表之间是有联系的&#xff0c;如学生管理系统中&#xff0c;有部门表&#xff0c;教师表、学生表、课程表等等 一位教师隶属于一个部门&#xff0c;一个部门有多位教师&#xff0c;因此部门表和教师表&#xff0c;是一对…

【c++修行之路】c++11特性--上

文章目录 前言列表初始化用法介绍原理&#xff1a;std::initializer_list 简化声明的方式autodecltype 右值引用移动构造万能引用和完美转发万能引用完美转发 类的新增功能可变参数模板lambda表达式深入探究lambda表达式lambda表达式带来的便利结语 前言 大家好久不见&#xf…

bmp文件格式与保存

BMP文件由三部分组成&#xff0c;分辨是文件头&#xff0c;DIM头和像素数据。具体格式如下&#xff1a; 基本介绍 1. 文件头 14个字节 signature&#xff1a; 为文件标志位&#xff0c;恒为0X42 FileSize&#xff1a;是指整个文件的大小 REservedx&#xff1a;保留位恒为0 …

leetcode700. 二叉搜索树中的搜索(java)

二叉搜索树中的搜索 leetcode700 二叉搜索树中的搜索题目描述 解题思路代码演示二叉树专题 leetcode700 二叉搜索树中的搜索 leetcode 700 二叉搜索树中的搜索。 来源&#xff1a;力扣&#xff08;LeetCode&#xff09; 链接&#xff1a;https://leetcode.cn/problems/search-i…

chatgpt赋能python:Python去掉GIL:提升Python多线程编程性能的突破口

Python去掉GIL&#xff1a;提升Python多线程编程性能的突破口 Python 是世界上最受欢迎的编程语言之一&#xff0c;其中一大原因是其简单易用、优雅简洁的语法。Python 也是一个卓越的多用途编程语言&#xff0c;广泛应用于 Web 开发、科学计算、人工智能等领域。但是&#xf…

javaScript蓝桥杯-----宝贵的一票

目录 一、介绍二、准备三、目标四、代码五、检测踩坑&#xff01;&#xff01;六、完成 一、介绍 公司经常举办各种活动&#xff0c;但一到投票环节就犯了难&#xff0c;于是公司决定安排小蓝开发一个投票系统&#xff0c;更好的收集大家的投票信息。为了赶在下一次活动开始前…

k8s亲和性和反亲和性

1.前言 k8s的亲和性和反亲和性都是通过标签来影响pod的调度&#xff0c;在此基础上亲和性又分为硬亲和性和软亲和性&#xff0c;required为硬亲和性即标签内容必须要符合才能调度&#xff0c;preferred为软亲和性即标签内容不一定要符合也能调度&#xff0c;除此之外还有node亲…

Unsupported major.minor version 51.0解决办法

先看看我的报错截图 [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 08:51 min [INFO] Finished at: 2023-0…

[2.0快速体验]Apache Doris 2.0 日志分析快速体验

1. 概述 应用程序、服务器、云基础设施、IoT 和移动设备、DevOps、微服务架构—最重要的业务和 IT 发展趋势帮助我们以前所未有的方式优化运维和客户体验。但这些趋势也导致由机器生成的数据出现爆炸式成长&#xff0c;其中包括日志和指标等&#xff0c;例如&#xff0c;用户交…

Qcon 广州主题演讲:融云实时社区的海量消息分发实践

移步公众号文章 预约纸质版《作战地图》 5 月 26 日-27 日&#xff0c;QCon 全球软件开发大会落地广州。关注【融云全球互联网通信云】了解更多 融云 IM 服务架构师罗伟受邀分享“实时社区的海量消息分发实践”&#xff0c;从实践中来的前沿技术分享&#xff0c;收获现场开发者…

Nautilus Chain上首个DEX PoseiSwap即将开启IDO,潜力几何?

据悉&#xff0c;Nautilus Chain 上的首个 DEX PoseiSwap 即将开启 IDO &#xff0c;根据官方的最新公告显示&#xff0c;PoseiSwap 即将于 6 月 13 日至 6 月 14 日期间&#xff0c;在 Bounce 平台开启其治理通证 $POSE 的 IDO&#xff08;Initial DEX Offering&#xff09;&a…

openEuler Linux 部署 FineReport

openEuler Linux 部署 FineReport 部署环境 环境版本openEuler Linux22.03MySQL8.0.33FineReport11.0 环境准备 升级系统内核和软件 yum -y updatereboot安装常用工具软件 yum -y install vim tar net-tools 安装MySQL8 将 MySQL Yum 存储库添加到系统的存储库列表中 s…

【JavaEE】表白墙再升级(MySQL实现持久化)

表白墙再升级&#xff08;MySQL实现持久化&#xff09; 文章目录 【JavaEE】表白墙再升级&#xff08;MySQL实现持久化&#xff09;1. 后端引入JDBC的依赖2. 建库建表3. 编写数据库代码&#xff08;JDBC&#xff09;3.1 doGet方法改写3.1.1 构建本地数据源3.1.2 用本地数据源构…

移动端的轮播图

效果 技术选取 前端框架用的是vue3&#xff0c;使用的组件库为element-plus以及vant4 引入element-plus和vant4 安装element-plus cnpm install element-plus --save 安装按需导入 cnpm install -D unplugin-vue-components unplugin-auto-import 安装Vant cnpm i vant 按…

Fiddler抓包工具之fiddler的composer可以简单发送http协议的请求

一&#xff0c;composer的详解 右侧Composer区域&#xff0c;是测试接口的界面&#xff1a; 相关说明&#xff1a; 1.请求方式&#xff1a;点开可以勾选请求协议是get、post等 2.url地址栏&#xff1a;输入请求的url地址 3.请求头&#xff1a;第三块区域可以输入请求头信息…

图的简单理解

文章目录 1、图的基本概念2、图的存储结构2.1 邻接矩阵2.2 邻接表 3、图的遍历3.1 广度优先遍历3.2 深度优先遍历 4、最小生成树4.1 Kruskal算法4.2 Prim算法 5、最短路径5.1 单源最短路径–Dijkstra算法5.2 单源最短路径–Bellman-Ford算法5.3 多源最短路径 1、图的基本概念 …

路径规划算法:基于差分进化优化的路径规划算法- 附代码

路径规划算法&#xff1a;基于差分进化优化的路径规划算法- 附代码 文章目录 路径规划算法&#xff1a;基于差分进化优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要&#xff1a;本文主要介绍利用智能优化…

nginx的rewrite功能

常用的Nginx 正则表达式 ^匹配输入字符串的起始位置$匹配输入字符串的结束位置*匹配前面的字符零次或多次。如“ol*”能匹配“o”及“ol”、“oll”匹配前面的字符一次或多次。如“ol”能匹配“ol”及“oll”、“olll”&#xff0c;但不能匹配“o”?匹配前面的字符零次或一次…