A. 进化算法的差分算法
差分进化算法(Differential Evolution, DE)是一种新兴的进化计算技术,或称为差分演化算法、微分进化算法、微分演化算法、差异演化算法。它是由Storn等人于1995年提出的,最初的设想是用于解决切比雪夫多项式问题,后来发现DE也是解决复杂优化问题的有效技术。DE与人工生命,特别是进化算法有着极为特殊的联系。
差分进化算法是基于群体智能理论的优化算法,通过群体内个体间的合作与竞争产生的群体智能指导优化搜索。但相比于进化算法,DE保留了基于种群的全局搜索策略,采用实数编码基于差分的简单变异操作和一对一的竞争生存策略,降低了遗传操作的复杂性。同时,DE特有的记忆能力使其可以动态跟踪当前的搜索情况,以调整其搜索策略,具有较强的全局收敛能力和鲁棒性,且不需要借助问题的特征信息,适于求解一些利用常规的数学规划方法所无法求解的复杂环境中的优化问题。
差分进化算法是一种基于群体进化的算法,具有记忆个体最优解和种群内信息共享的特点,即通过种群内个体间的合作与竞争来实现对优化问题的求解,其本质是一种基于实数编码的具有保优思想的贪婪遗传算法。
DE是一种用于优化问题的启发式算法。本质上说,它是一种基于实数编码的具有保优思想的贪婪遗传算法 。同遗传算法一样,DE包含变异和交叉操作,但同时相较于遗传算法的选择操作,DE采用一对一的淘汰机制来更新种群。由于DE在连续域优化问题的优势已获得广泛应用,并引发进化算法研究领域的热潮。
DE由Storn 以及Price提出,算法的原理采用对个体进行方向扰动,以达到对个体的函数值进行下降的目的,同其他进化算法一样,DE不利用目标函数的梯度信息,因此对目标的可导性甚至连续性没有要求,适用性很强。同时,算法与粒子群优化有相通之处 ,但因为DE在一定程度上考虑了多变量间的相关性,因此相较于粒子群优化在变量耦合问题上有很大的优势。算法的实现参考实现代码部分。
B. 优化算法笔记(七)差分进化算法
(以下描述,均不是学术用语,仅供大家快乐的阅读)
差分进化算法(Differential Evolution Algorithm,DE)是一种基于群体的进化算法,它模拟了群体中的个体的合作与竞争的过程。算法原理简单,控制参数少,只有交叉概率和缩放比例因子,鲁棒性强,易于实现。
差分进化算法中,每一个个体的基因表示待求问题的一个候选解。每次迭代将先进行变异操作,选择一个或多个个体的基因作为基,然后选择不同的个体的差分来构成差分基因,最后将作为基的基因与差分基因相加来得出新的个体。交叉操作将新的个体将于父代的对应个体交叉,然后进行选择操作,比较交叉后的个体与父代的对应个体,选择较优的个体保留至下一代。在迭代完成之后将选择种群中最优个体的基因作为解。
差分进化算法可以算是我所使用过的优化算法中大魔王级别的算法,虽然它每个方面都没有强到离谱,但是综合起来的效果好于大多数算法。它就像一个每个科目都能考到90分(百分制)的学生,虽然没门课都不是最优秀的,但是论综合,论总分,它有极大的概率是第一名。
在我研究优化算法的小路上,我的目标就是找到一个能打败大魔王或是能在大多数方面压制魔王的算法。
这次的主角就选魔王军吧(或者蚁王军,为了与蚁群算法区别还是叫魔王军吧),个体则称之为魔王兵。
魔王兵的能力取决于它们的基因,它们可以根据环境或者需要改变自己的基因使得自己更加强大,更方便的处理问题,问题的维度与基因维度相同。
表示第i个魔王兵在进化了第t次后的基因,该个体有D位基因。
与遗传算法同为进化算法的差分进化算法,它们的操作(算子)也都非常相似的,都是交叉,变异和选择,流程也几乎一样(遗传算法先交叉后变异,差分进化算法先变异后交叉)。
说到差分进化算法中的变异,我就想到一句论语 “三人行,必有我师焉。择其善者而从之,其不善者而改之。” ,其实这句论语已经向我们说明了差分进化算法的整个流程:
“三人行,必有我师焉”——变异,交叉。
“择其善者而从之,其不善者而改之”——选择。
差分进化算法中,当一个魔王兵变异时,它会先找来3个小伙伴,当然是随机找来3个小伙伴,避免同化。在一个小伙伴的基因上加上另外两个小伙伴基因之差作为自己的目标基因。其变异公式如下:
表示第i个魔王兵找到了编号为r1、r2和r3的三个魔王兵,当然了i、r1、r2、r3为互不相同的整数,F为缩放比例因子,通常 ,一般取F=0.5。 为第i个魔王兵交叉后的目标基因图纸,不过这是个半成品,再经过交叉后,目标基因图纸才算完成。
其实现在我们已经有了5个基因图纸了 ,接下来将进行交叉操作。由于变异操作,差分进化算法的种群中个体数至少为4,即魔王军中至少有4个小兵。
交叉操作中,魔王兵i会将目标基因图纸 进行加工得到 ,加工过程如下:
其中 。 为交叉概率,其值越大,发生交叉的概率越大,一般取 。 为{1,2,…,D}中的随机整数,其作用是保证交叉操作中至少有一维基因来自变异操作产生的基因,不能让交叉操作的努力白费。
从公式上可以看出交叉操作实际上是从变异操作得出的基因图纸上选择至少一位基因来替换自己的等位基因,得到最终的基因图纸。
选择操作相对简单,魔王兵i拿到了最终的基因图纸 ,大喊一声,进化吧,魔王兵i的基因改变了。它拿出了能力测量器fitness function,如果发现自己变强了,那么就将基因 保留到下一代,否则它选择放弃进化,让自己还原成 。
实验又来啦,还是那个实验 ,简单、易算、好画图。
实验1 :参数如下
图中可以看出在第20代时,群体已经非常集中了,在来看看最终得出的结果。
这结果真是好到令人发指,恶魔在心中低语“把其他的优化算法都丢掉吧”。不过别往心里去,任何算法都有优缺点,天下没有免费的午餐,要想获得某种能力必须付出至少相应的代价。
实验2:
将交叉率CR设为0,即每次交叉只选择保留一位变异基因。
看看了看图,感觉跟实验1中相比没有什么变化,那我们再来看看结果。
结果总体来说比实验1好了一个数量级。为什么呢?个人感觉应该是每次只改变一位基因的局部搜索能力比改变多位基因更强。下面我们将交叉率CR设为1来看看是否是这样。
实验3:
将交叉率CR设为1,即每次交叉只选择保留一位原有基因。
实验3的图与实验1和实验2相比好像也没什么差别,只是收敛速度好像快了那么一点点。再来看看结果。
发现结果比实验2的结果还要好?那说明了实验2我得出的结论是可能是错误的,交叉率在该问题上对差分进化算法的影响不大,它们结果的差异可能只是运气的差异,毕竟是概率算法。
实验4:
将变异放缩因子设为0,即变异只与一个个体有关。
收敛速度依然很快,不过怎么感觉结果不对,而且个体收敛的路径好像遗传算法,当F=0,时,差分进化算法退化为了没有变异、选择操作的遗传算法,结果一定不会太好。
果然如此。下面我们再看看F=2时的实验。
实验5:
将变异放缩因子设为2。
实验5的图可以明显看出,群体的收敛速度要慢了许多,到第50代时,种群还未完全收敛于一点,那么在50代时其结果也不会很好,毕竟算法还未收敛就停止进化了。
结果不算很好但也算相对稳定。
通过上面5个实验,我们大致了解了差分进化算法的两个参数的作用。
交叉率CR,影响基因取自变异基因的比例,由于至少要保留一位自己的基因和变异的基因导致CR在该问题上对算法性能的影响不大(这个问题比较简单,维度较低,影响不大)。
变异放缩因子F,影响群体的收敛速度,F越大收敛速度越慢,F绝对值越小收敛速度越快,当F=0是群体之间只会交换基因,不会变异基因。
差分进化算法大魔王已经如此强大了,那么还有什么可以改进的呢?当然有下面一一道来。
方案1 .将3人行修改为5人行,以及推广到2n+1人行。
实验6:
将3人行修改为5人行,变异公式如下:
五人行的实验图看起来好像与之前并没有太大的变化,我们再来看看结果。
结果没有明显提升,反而感觉比之前的结果差了。反思一下五人行的优缺点,优点,取值范围更大,缺点,情况太多,减慢搜索速度。
可以看出算法的收敛速度比之前的变慢了一点,再看看结果。
比之前差。
差分进化算法的学习在此也告一段落。差分进化算法很强大,也很简单、简洁,算法的描述都充满了美感,不愧是大魔王。不过这里并不是结束,这只是个开始,终将找到打败大魔王的方法,让新的魔王诞生。
由于差分进化算法足够强,而文中实验的问题较为简单导致算法的改进甚至越改越差(其实我也不知道改的如何,需要大量实验验证)。在遥远的将来,也会有更加复杂的问题来检验魔王的能力,总之,后会无期。
以下指标纯属个人yy,仅供参考
目录
上一篇 优化算法笔记(六)遗传算法
下一篇 优化算法笔记(八)人工蜂群算法
优化算法matlab实现(七)差分进化算法matlab实现
C. 多目标智能优化算法及其应用的目录
《智能科学技术着作丛书》序
前言
第1章 绪论
1.1 进化算法
1.1.1 进化算法的基本框架
1.1.2 遗传算法
1.1.3 进化策略
1.1.4 进化规划
1.2 粒子群算法
1.2.1 标准粒子群算法
1.2.2 算法解析
1.3 蚁群算法
1.3.1 蚁群算法的基本思想
1.3.2 蚁群算法的实现过程
1.3.3 蚁群算法描述
1.3.4 蚁群优化的特点
1.4 模拟退火算法122
1.4.1 模拟退火算法的基本原理
1.4.2 模拟退火算法描述
1.5 人工免疫系统
1.5.1 生物免疫系统
1.5.2 人工免疫系统
1.6 禁忌搜索
1.7 分散搜索
1.8 多目标优化基本概念
参考文献
第2章 多目标进化算法
2.1 基本原理
2.1.1 MOEA模型
2.1.2 性能指标与测试函数
2.2 典型多目标进化算法
2.2.1 VEGA、MOGA、NPGA和NSGA
2.2.2 SPEA和SPEA2
2.2.3 NSGA2
2.2.4 PAES
2.2.5 其他典型MOEA
2.3 多目标混合进化算法
2.3.1 多目标遗传局部搜索
2.3.2 J—MOGLS
2.3.3 M PAES
2.3.4 多目标混沌进化算法
2.4 协同多目标进化算法
2.5 动态多目标进化算法
2.5.1 IMOEA
2.5.2 动态MOEA(DMOEA)
2.6 并行多目标进化算法
2.6.1 并行多目标进化算法的基本原理
2.6.2 多分辨率多目标遗传算法
2.6.3 并行单前端遗传算法
2.7 其他多目标进化算法
2.7.1 高维多目标优化的NSGA2改进算法
2.7.2 动态多目标优化的进化算法
2.8 结论与展望
参考文献
第3章 多目标粒子群算法
3.1 基本原理
3.2 典型多目标粒子群算法
3.2.1 CMOPSO
3.2.2 多目标全面学习粒子群算法
3.2.3 Pareto档案多目标粒子群优化
3.3 多目标混合粒子群算法
3.3.1 模糊多目标粒子群算法
3.3.2 基于分散搜索的多目标混合粒子群算法
3.4 交互粒子群算法
3.5 结论
参考文献
第4章 其他多目标智能优化算法
4.1 多目标模拟退火算法
4.2 多目标蚁群算法
4.2.1 连续优化问题的多目标蚁群算法
4.2.2 组合优化问题的多目标蚁群算法
4.3 多目标免疫算法
4.4 多目标差分进化算法
4.5 多目标分散搜索
4.6 结论
参考文献
第5章 人工神经网络优化
5.1 Pareto进化神经网络
5.2 径向基神经网络优化与设计
5.3 递归神经网络优化与设计
5.4 模糊神经网络多目标优化
5.5 结论
参考文献
第6章 交通与物流系统优化
6.1 物流配送路径优化
6.1.1 多目标车辆路径优化
6.1.2 多目标随机车辆路径优化
6.2 城市公交路线网络优化
6.3 公共交通调度
6.3.1 概述
6.3.2 多目标驾驶员调度
6.4 结论
参考文献
第7章 多目标生产调度
7.1 生产调度描述_
7.1.1 车间调度问题
7.1.2 间隙生产调度
7.1.3 动态生产调度
7.1.4 批处理机调度和E/T调度
7.2 生产调度的表示方法
7.3 基于进化算法的多目标车间调度
7.3.1 多目标流水车间调度
7.3.2 多目标作业车间调度
7.4 基于进化算法的多目标模糊调度
7.4.1 模糊调度:Sakawa方法
7.4.2 模糊作业车间调度:cMEA方法
7.5 基于进化算法的多目标柔性调度
7.5.1 混合遗传调度方法
7.5.2 混合遗传算法
7.6 基于粒子群优化的多目标调度
7.6.1 基于粒子群优化的多目标作业车间调度
7.6.2 多目标柔性调度的混合粒子群方法
7.7 多目标随机调度
7.8 结论与展望
参考文献
第8章 电力系统优化及其他
8.1 电力系统优化
8.1.1 基于免疫算法的多目标无功优化
8.1.2 基于分层优化的多目标电网规划
8.1.3 基于NSGA2及协同进化的多目标电网规划
8.2 多播Qos路由优化
8.3 单元制造系统设计
8.3.1 概述
8.3.2 基于禁忌搜索的多目标单元构造
8.3.3 基于并行禁忌搜索的多目标单元构造
8.4 自动控制系统设计
8.4.1 概述
8.4.2 混合动力学系统控制
8.4.3 鲁棒PID控制器设计
8.5 结论
参考文献
附录 部分测试函数
……
D. 进化算法入门读书笔记(一)
这里我参考学习的书籍是:
《进化计算的理论和方法》,王宇平,科学出版社
《进化优化算法:基于仿生和种群的计算机智能方法》,[美]丹·西蒙,清华大学出版社。
进化算法是 求解优化问题 的一种算法,它是 模仿生物进化与遗传原理 而设计的一类随机搜索的优化算法。
不同的作者称进化算法有不同的术语,以下。注:这里仅列举出了我自己比较容易混淆的一些,并未全部列出。
进化计算: 这样能强调算法需要在 计算机上 实施,但进化计算也可能指不用于优化的算法(最初的遗传算法并不是用于优化本身,而是想用来研究自然选择的过程)。因此,进化优化算法比进化计算更具体。
基于种群的优化: 它强调进化算法一般是让问题的候选解 种群 随着时间的进化以得到问题的更好的解。然而许多进化算法每次迭代只有单个候选解。因此,进化算法比基于种群的优化更一般化。
计算机智能/计算智能: 这样做常常是为了区分进化算法与专家系统,在传统上专家系统一直被称为人工智能。专家系统模仿演绎推理,进化算法则模仿归纳推理。进化算法有时候也被看成是人工智能的一种。计算机智能是比进化算法更一般的词,它包括神经计算、模糊系统、人工生命这样的一些技术,这些技术可应用于优化之外的问题。因此,进化计算可能比计算机智能更一般化或更具体。
由自然启发的计算/仿生计算: 像差分进化和分布估计算法这些进化算法可能并非源于自然,像进化策略和反向学习这些进化算法与自然过程联系甚微。因此,进化算法比由自然启发的算法更一般化,因为进化算法包括非仿生算法。
机器学习: 机器学习研究由经验学到的计算机算法,它还包括很多不是进化计算的算法,如强化学习、神经网络、分簇、SVM等等。因此,机器学习比进化算法更广。
群智能算法: 一些人认为群智能算法应与进化算法区分开,一些人认为群智能算法是进化算法的一个子集。因为群智能算法与进化算法有相同的执行方式,即,每次迭代都改进问题的候选解的性能从而让解的种群进化。因此,我们认为群智能算法是一种进化算法。
进化算法的简单定义可能并不完美。在进化算法领域术语的不统一会让人困惑,一个算法是进化算法如果它通常被认为是进化算法,这个戏谑的、循环的定义一开始有些麻烦,但是一段时间后,这个领域工作的人就会习惯了。
优化几乎适用于生活中的所有领域。除了对如计算器做加法运算这种过于简单的问题,不必用进化算法的软件,因为有更简单有效的算法。此外对于每个复杂的问题,至少应该考虑采用进化算法。
一个优化问题可以写成最小化问题或最大化问题,这两个问题在形式上很容易互相转化:
函数 被称为目标函数,向量 被称为独立变量,或决策变量。我们称 中元素的个数为问题的维数。
优化问题常常带有约束。即在最小化某个函数 时,对 可取的值加上约束。不举例。
实际的优化问题不仅带有约束,还有多个目标。这意味着我们想要同时最小化不止一个量。
例子:
这里评估这个问题的一种方式是绘制 作为函数 的函数的图:
如图,对在实线上的 的值,找不到能同时使 和 减小的 的其他值,此实线被称为 帕累托前沿 ,而相应的 的值的集合被称为帕累托集。(此处的帕累托最优问题十分重要,可以参考这个链接来学习和理解: 多目标优化之帕累托最优 - 知乎 ,非常清晰易懂。)
该例子是一个非常简单的多目标优化问题,它只有两个目标。实际的优化问题通常涉及两个以上的模目标,因此很难得到它的帕累托前沿,由于它是高维的,我们也无法将它可视化。后面的章节将会仔细讨论多目标进化优化。
多峰优化问题是指问题不止一个局部最小值。上例中的 就有两个局部最小值,处理起来很容易,有些问题有很多局部最小值,找出其中的全局最小值就颇具挑战性。
对于前面的简单例子,我们能用图形的方法或微积分的方法求解,但是许多实际问题除了有更多独立变量、多目标,以及带约束之外更像上面的Ackley函数这样,对于这类问题,基于微积分或图形的方法就不够用了,而进化算法却能给出更好的结果。
到现在为止我们考虑的都是连续优化问题,也就是说,允许独立变量连续地变化。但有许多优化问题中的独立变量智能在一个离散集合上取值。这类问题被称为组合优化问题。如旅行商问题。
对于有 个城市的旅行商问题,有 个可能的解。对于一些过大的问题,硬算的方法不可行,像旅行商这样的组合问题没有连续的独立变量,因此不能利用导数求解。除非对每个可能的解都试一遍,不然就无法确定所得到的组合问题的解是否就是最好的解。进化算法对这类大规模、多维的问题,它至少能帮我们找出一个好的解(不一定是最好的)。
E. 求一个遗传算法进行电力系统优化调度 代码
发一份自编的MATLAB遗传算法代码,用简单遗传算法(Simple Genetic Algorithm or Standard Genetic Algorithm ,SGA)求取函数最大值,初版编写于7年前上学期间,当时是MATLAB 5.x,在算法运行效率方面做了修改,主要是采用矩阵操作减少了循环。
遗传算法为群体优化算法,也就是从多个初始解开始进行优化,每个解称为一个染色体,各染色体之间通过竞争、合作、单独变异,不断进化。
优化时先要将实际问题转换到遗传空间,就是把实际问题的解用染色体表示,称为编码,反过程为解码,因为优化后要进行评价,所以要返回问题空间,故要进行解码。SGA采用二进制编码,染色体就是二进制位串,每一位可称为一个基因;解码时应注意将染色体解码到问题可行域内。
遗传算法模拟“适者生存,优胜劣汰”的进化机制,染色体适应生存环境的能力用适应度函数衡量。对于优化问题,适应度函数由目标函数变换而来。一般遗传算法求解最大值问题,如果是最小值问题,则通过取倒数或者加负号处理。SGA要求适应度函数>0,对于<0的问题,要通过加一个足够大的正数来解决。这样,适应度函数值大的染色体生存能力强。
遗传算法有三个进化算子:选择(复制)、交叉和变异。
SGA中,选择采用轮盘赌方法,也就是将染色体分布在一个圆盘上,每个染色体占据一定的扇形区域,扇形区域的面积大小和染色体的适应度大小成正比。如果轮盘中心装一个可以转动的指针的话,旋转指针,指针停下来时会指向某一个区域,则该区域对应的染色体被选中。显然适应度高的染色体由于所占的扇形区域大,因此被选中的几率高,可能被选中多次,而适应度低的可能一次也选不中,从而被淘汰。算法实现时采用随机数方法,先将每个染色体的适应度除以所有染色体适应度的和,再累加,使他们根据适应度的大小分布于0-1之间,适应度大的占的区域大,然后随机生成一个0-1之间的随机数,随机数落到哪个区域,对应的染色体就被选中。重复操作,选出群体规模规定数目的染色体。这个操作就是“优胜劣汰,适者生存”,但没有产生新个体。
交叉模拟有性繁殖,由两个染色体共同作用产生后代,SGA采用单点交叉。由于SGA为二进制编码,所以染色体为二进制位串,随机生成一个小于位串长度的随机整数,交换两个染色体该点后的那部分位串。参与交叉的染色体是轮盘赌选出来的个体,并且还要根据选择概率来确定是否进行交叉(生成0-1之间随机数,看随机数是否小于规定的交叉概率),否则直接进入变异操作。这个操作是产生新个体的主要方法,不过基因都来自父辈个体。
变异采用位点变异,对于二进制位串,0变为1,1变为0就是变异。采用概率确定变异位,对每一位生成一个0-1之间的随机数,看是否小于规定的变异概率,小于的变异,否则保持原状。这个操作能够使个体不同于父辈而具有自己独立的特征基因,主要用于跳出局部极值。
遗传算法认为生物由低级到高级进化,后代比前一代强,但实际操作中可能有退化现象,所以采用最佳个体保留法,也就是曾经出现的最好个体,一定要保证生存下来,使后代至少不差于前一代。大致有两种类型,一种是把出现的最优个体单独保存,最后输出,不影响原来的进化过程;一种是将最优个体保存入子群,也进行选择、交叉、变异,这样能充分利用模式,但也可能导致过早收敛。
由于是基本遗传算法,所以优化能力一般,解决简单问题尚可,高维、复杂问题就需要进行改进了。
下面为代码。函数最大值为3905.9262,此时两个参数均为-2.0480,有时会出现局部极值,此时一个参数为-2.0480,一个为2.0480。算法中变异概率pm=0.05,交叉概率pc=0.8。如果不采用最优模式保留,结果会更丰富些,也就是算法最后不一定收敛于极值点,当然局部收敛现象也会有所减少,但最终寻得的解不一定是本次执行中曾找到过的最好解。
(注:一位网名为mosquitee的朋友提醒我:原代码的变异点位置有问题。检验后发现是将最初的循环实现方法改为矩阵实现方法时为了最优去掉mm的第N行所致,导致变异点位置发生了变化,现做了修改,修改部分加了颜色标记,非常感谢mosquitee,2010-4-22)
% Optimizing a function using Simple Genetic Algorithm with elitist preserved
%Max f(x1,x2)=100*(x1*x1-x2).^2+(1-x1).^2; -2.0480<=x1,x2<=2.0480
% Author: Wang Yonglin ([email protected])
clc;clear all;
format long;%设定数据显示格式
%初始化参数
T=100;%仿真代数
N=80;% 群体规模
pm=0.05;pc=0.8;%交叉变异概率
umax=2.048;umin=-2.048;%参数取值范围
L=10;%单个参数字串长度,总编码长度2L
bval=round(rand(N,2*L));%初始种群
bestv=-inf;%最优适应度初值
%迭代开始
for ii=1:T
%解码,计算适应度
for i=1:N
y1=0;y2=0;
for j=1:1:L
y1=y1+bval(i,L-j+1)*2^(j-1);
end
x1=(umax-umin)*y1/(2^L-1)+umin;
for j=1:1:L
y2=y2+bval(i,2*L-j+1)*2^(j-1);
end
x2=(umax-umin)*y2/(2^L-1)+umin;
obj(i)=100*(x1*x1-x2).^2+(1-x1).^2; %目标函数
xx(i,:)=[x1,x2];
end
func=obj;%目标函数转换为适应度函数
p=func./sum(func);
q=cumsum(p);%累加
[fmax,indmax]=max(func);%求当代最佳个体
if fmax>=bestv
bestv=fmax;%到目前为止最优适应度值
bvalxx=bval(indmax,:);%到目前为止最佳位串
optxx=xx(indmax,:);%到目前为止最优参数
end
Bfit1(ii)=bestv; % 存储每代的最优适应度
%%%%遗传操作开始
%轮盘赌选择
for i=1:(N-1)
r=rand;
tmp=find(r<=q);
newbval(i,:)=bval(tmp(1),:);
end
newbval(N,:)=bvalxx;%最优保留
bval=newbval;
%单点交叉
for i=1:2:(N-1)
cc=rand;
if cc<pc
point=ceil(rand*(2*L-1));%取得一个1到2L-1的整数
ch=bval(i,:);
bval(i,point+1:2*L)=bval(i+1,point+1:2*L);
bval(i+1,point+1:2*L)=ch(1,point+1:2*L);
end
end
bval(N,:)=bvalxx;%最优保留
%位点变异
mm=rand(N,2*L)<pm;%N行
mm(N,:)=zeros(1,2*L);%最后一行不变异,强制赋0
bval(mm)=1-bval(mm);
end
%输出
plot(Bfit1);% 绘制最优适应度进化曲线
bestv %输出最优适应度值
optxx %输出最优参数
F. 多目标差分进化算法
差分进化算法(Differential Evolution, DE)是一种基于群体差异的启发式随机搜索算法,该算法是由R.Storn和K.Price为求解Chebyshev多项式而提出的。是一种用于最佳化问题的后设启发式算法。本质上说,它是一种基于实数编码的具有保优思想的贪婪遗传算法。
将问题的求解表示成"染色体"的适者生存过程,通过"染色体"群的一代代不断进化,包括复制、交叉和变异等操作,最终收敛到"最适应环境"的个体,从而求得问题的最优解或满意解。
差分进化算法类似遗传算法,包含变异,交叉操作,淘汰机制,而差分进化算法与遗传算法不同之处,在于变异的部分是随选两个解成员变数的差异,经过伸缩后加入当前解成员的变数上,因此差分进化算法无须使用概率分布产生下一代解成员。最优化方法分为传统优化方法和启发式优化方法两大类。传统的优化方法大多数都是利用目标函数的导数求解;而启发式优化方法以仿生算法为主,通过启发式搜索策略实现求解优化。启发式搜索算法不要求目标函数连续、可微等信息,具有较好的全局寻优能力,成为最优化领域的研究热点。
在人工智能领域中,演化算法是演化计算的一个分支。它是一种基于群体的元启发式优化算法,具有自适应、自搜索、自组织和隐并行性等特点。近年来,很多学者将演化算法应用到优化领域中,取得了很大的成功,并已引起了人们的广泛关注。越来越多的研究者加入到演化优化的研究之中,并对演化算法作了许多改进,使其更适合各种优化问题。目前,演化算法已广泛应用于求解无约束函数优化、约束函数优化、组合优化、多目标优化等多种优化问题中。
G. 蚁群优化算法的使用-编码的问题!
“蚁群算法”学习包下载
下载地址: http://board.verycd.com/t196436.html (请使用 eMule 下载)
近一百多篇文章,打包压缩后有 24.99MB ,基本上是从维普数据库中下载来的,仅供学习和研究之用,请务用于商业活动或其他非法活动中,各文章版权归原作者所有。
如果您觉得本人这样做侵犯了您的版权,请在本帖后回复,本人会马上删除相应的文章。
以下是文件列表,全是 PDF 格式的:
基于蚁群优化算法递归神经网络的短期负荷预测
蚁群算法的小改进
基于蚁群算法的无人机任务规划
多态蚁群算法
MCM基板互连测试的单探针路径优化研究
改进的增强型蚁群算法
基于云模型理论的蚁群算法改进研究
基于禁忌搜索与蚁群最优结合算法的配电网规划
自适应蚁群算法在序列比对中的应用
基于蚁群算法的QoS多播路由优化算法
多目标优化问题的蚁群算法研究
多线程蚁群算法及其在最短路问题上的应用研究
改进的蚁群算法在2D HP模型中的应用
制造系统通用作业计划与蚁群算法优化
基于混合行为蚁群算法的研究
火力优化分配问题的小生境遗传蚂蚁算法
基于蚁群算法的对等网模拟器的设计与实现
基于粗粒度模型的蚁群优化并行算法
动态跃迁转移蚁群算法
基于人工免疫算法和蚁群算法求解旅行商问题
基于信息素异步更新的蚁群算法
用于连续函数优化的蚁群算法
求解复杂多阶段决策问题的动态窗口蚁群优化算法
蚁群算法在铸造生产配料优化中的应用
多阶段输电网络最优规划的并行蚁群算法
求解旅行商问题的混合粒子群优化算法
微粒群优化算法研究现状及其进展
随机摄动蚁群算法的收敛性及其数值特性分析
广义蚁群与粒子群结合算法在电力系统经济负荷分配中的应用
改进的蚁群算法及其在TSP中的应用研究
蚁群算法的全局收敛性研究及改进
房地产开发项目投资组合优化的改进蚁群算法
一种改进的蚁群算法用于灰色约束非线性规划问题求解
一种自适应蚁群算法及其仿真研究
一种动态自适应蚁群算法
蚂蚁群落优化算法在蛋白质折叠二维亲-疏水格点模型中的应用
用改进蚁群算法求解函数优化问题
连续优化问题的蚁群算法研究进展
蚁群算法概述
Ant colony system algorithm for the optimization of beer fermentation control
蚁群算法在K—TSP问题中的应用
Parallel ant colony algorithm and its application in the capacitated lot sizing problem for an agile supply chain
基于遗传蚁群算法的机器人全局路径规划研究
改进的蚁群算法在矿山物流配送路径优化中的研究
基于蚁群算法的配电网络综合优化方法
基于蚁群算法的分类规则挖掘算法
蚁群算法在连续性空间优化问题中的应用
蚁群算法在矿井通风系统优化设计中的应用
基于蚁群算法的液压土锚钻机动力头优化设计
改进蚁群算法设计拉式膜片弹簧
计算机科学技术
基本蚁群算法及其改进
TSP改进算法及在PCB数控加工刀具轨迹中的应用
可靠性优化的蚁群算法
对一类带聚类特征TSP问题的蚁群算法求解
蚁群算法理论及应用研究的进展
基于二进制编码的蚁群优化算法及其收敛性分析
蚁群算法的理论及其应用
基于蚁群行为仿真的影像纹理分类
启发式蚁群算法及其在高填石路堤稳定性分析中的应用
蚁群算法的研究现状
一种快速全局优化的改进蚁群算法及仿真
聚类问题的蚁群算法
蚁群最优化——模型、算法及应用综述
基于信息熵的改进蚁群算法及其应用
机载公共设备综合管理系统任务分配算法研究
基于改进蚁群算法的飞机低空突防航路规划
利用信息量留存的蚁群遗传算法
An Improved Heuristic Ant-Clustering Algorithm
改进型蚁群算法在内燃机径向滑动轴承优化设计中的应用
基于蚁群算法的PID参数优化
基于蚁群算法的复杂系统多故障状态的决策
蚁群算法在数据挖掘中的应用研究
基于蚁群算法的基因联接学习遗传算法
基于细粒度模型的并行蚁群优化算法
Binary-Coding-Based Ant Colony Optimization and Its Convergence
运载火箭控制系统漏电故障诊断研究
混沌扰动启发式蚁群算法及其在边坡非圆弧临界滑动面搜索中的应用
蚁群算法原理的仿真研究
Hopfield neural network based on ant system
蚁群算法及其实现方法研究
分层实体制造激光头切割路径的建模与优化
配送网络规划蚁群算法
基于蚁群算法的城域交通控制实时滚动优化
基于蚁群算法的复合形法及其在边坡稳定分析中的应用
Ant Colony Algorithm for Solving QoS Routing Problem
多产品间歇过程调度问题的建模与优化
基于蚁群算法的两地之间的最佳路径选择
蚁群算法求解问题时易产生的误区及对策
用双向收敛蚁群算法解作业车间调度问题
物流配送路径安排问题的混合蚁群算法
求解TSP问题的模式学习并行蚁群算法
基于蚁群算法的三维空间机器人路径规划
蚁群优化算法及其应用
蚁群算法不确定性分析
一种求解TSP问题的相遇蚁群算法
基于蚁群优化算法的彩色图像颜色聚类的研究
钣金件数控激光切割割嘴路径的优化
基于蚁群算法的图像分割方法
一种基于蚁群算法的聚类组合方法
圆排列问题的蚁群模拟退火算法
智能混合优化策略及其在流水作业调度中的应用
蚁群算法在QoS网络路由中的应用
一种改进的自适应路由算法
基于蚁群算法的煤炭运输优化方法
基于蚁群智能和支持向量机的人脸性别分类方法
蚁群算法在啤酒发酵控制优化中的应用
一种基于时延信息的多QoS快速自适应路由算法
蚁群算法中参数α、β、ρ设置的研究——以TSP问题为例
基于人工蚁群优化的矢量量化码书设计算法
具有自适应杂交特征的蚁群算法
蚁群算法在原料矿粉混匀优化中的应用
基于多Agent的蚁群算法在车间动态调度中的应用研究
用蚁群优化算法求解中国旅行商问题
蚁群算法在婴儿营养米粉配方中的应用
蚁群算法在机械优化设计中的应用
蚁群优化算法的研究现状及研究展望
蚁群优化算法及其应用研究进展
蚁群算法的理论与应用
简单蚁群算法的仿真分析
一种改进的蚁群算法求解最短路径问题
基于模式求解旅行商问题的蚁群算法
一种求解TSP的混合型蚁群算法
基于MATLAB的改进型基本蚁群算法
动态蚁群算法求解TSP问题
用蚁群算法求解类TSP问题的研究
蚁群算法求解连续空间优化问题的一种方法
用混合型蚂蚁群算法求解TSP问题
求解复杂TSP问题的随机扰动蚁群算法
基于蚁群算法的中国旅行商问题满意解
蚁群算法的研究现状和应用及蚂蚁智能体的硬件实现
蚁群算法概述
蚁群算法的研究现状及其展望
基于蚁群算法的配电网网架优化规划方法
用于一般函数优化的蚁群算法
协同模型与遗传算法的集成
基于蚁群最优的输电网络扩展规划
自适应蚁群算法
凸整数规划问题的混合蚁群算法
一种新的进化算法—蛟群算法
基于协同工作方式的一种蚁群布线系统