MATLAB-智能算法30个案例分析-终极版(带目录)

更新时间:2024-01-23 22:18:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

MATLAB 智能算法30个案例分析(终极版)

1 基于遗传算法的TSP算法(王辉)

2 基于遗传算法和非线性规划的函数寻优算法(史峰) 3 基于遗传算法的BP神经网络优化算法(王辉) 4 设菲尔德大学的MATLAB遗传算法工具箱(王辉) 5 基于遗传算法的LQR控制优化算法(胡斐) 6 遗传算法工具箱详解及应用(胡斐) 7 多种群遗传算法的函数优化算法(王辉) 8 基于量子遗传算法的函数寻优算法(王辉) 9 多目标Pareto最优解搜索算法(胡斐)

10 基于多目标Pareto的二维背包搜索算法(史峰) 11 基于免疫算法的柔性车间调度算法(史峰) 12 基于免疫算法的运输中心规划算法(史峰) 13 基于粒子群算法的函数寻优算法(史峰) 14 基于粒子群算法的PID控制优化算法(史峰) 15 基于混合粒子群算法的TSP寻优算法(史峰) 16 基于动态粒子群算法的动态环境寻优算法(史峰) 17 粒子群算法工具箱(史峰)

18 基于鱼群算法的函数寻优算法(王辉) 19 基于模拟退火算法的TSP算法(王辉) 20 基于遗传模拟退火算法的聚类算法(王辉)

21 基于模拟退火算法的HEV能量管理策略参数优化(胡斐)

22 蚁群算法的优化计算——旅行商问题(TSP)优化(郁磊) 23 基于蚁群算法的二维路径规划算法(史峰) 24 基于蚁群算法的三维路径规划算法(史峰)

25 有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测(郁磊)

26 有导师学习神经网络的分类——鸢尾花种类识别(郁磊) 27 无导师学习神经网络的分类——矿井突水水源判别(郁磊) 28 支持向量机的分类——基于乳腺组织电阻抗特性的乳腺癌诊断(郁磊)

29 支持向量机的回归拟合——混凝土抗压强度预测(郁磊) 30 极限学习机的回归拟合及分类——对比实验研究(郁磊)

智能算法是我们在学习中经常遇到的算法,主要包括遗传算法,免疫算法,粒子群算法,神经网络等,智能算法对于很多人来说,既爱又恨,爱是因为熟练的掌握几种智能算法,能够很方便的解决我们的论坛问题,恨是因为智能算法感觉比较“玄乎”,很难理解,更难用它来解决问题。

因此,我们组织了王辉,史峰,郁磊,胡斐四名高手共同写作

MATLAB智能算法,该书包含了遗传算法,免疫算法,粒子群算法,鱼群算法,多目标pareto算法,模拟退火算法,蚁群算法,神经网络,SVM等,本书最大的特点在于以案例为导向,每个案例针对一

个实际问题,给出全部程序和求解思路,并配套相关讲解视频,使读者在读过一个案例之后能够快速掌握这种方法,并且会套用案例程序来编写自己的程序。本书作者在线,读者和会员可以向作者提问,作者做到有问必答。 本书和目录如下:

1 基于遗传算法的TSP算法(王辉)

TSP (旅行商问题—Traveling Salesman Problem),是典型的NP完全问题,即其最坏情况下的时间复杂性随着问题规模的增大按指数方式增长,到目前为止不能找到一个多项式时间的有效算法。遗传算法是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法的做法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。实践证明,遗传算法对于解决TSP问题等组合优化问题具有较好的寻优性能。

2 基于遗传算法和非线性规划的函数寻优算法(史峰)

遗传算法提供了求解非线性规划的通用框架,它不依赖于问题的具体领域。遗传算法的优点是将问题参数编码成染色体后进行优化, 而不针对参数本身, 从而不受函数约束条件的限制; 搜索过程从问题解的一个集合开始, 而不是单个个体, 具有隐含并行搜索特性, 可大大减少陷入局部最小的可能性。而且优化计算时算法不依赖于梯度信息,且不要求目标函数连续及可导,使其适于求解传统搜

索方法难以解决的大规模、非线性组合优化问题。

3 基于遗传算法的BP神经网络优化算法(王辉)

BP模型被广泛地应用于模式分类、模式识别等方面.但BP算法收敛速度慢,且很容易陷入局部极小点,而遗传算法具有并行搜索、效率高、不存在局部收敛问题等优点而被广泛应用.遗传算法的寻优过程带有一定程度的随机性和盲从性,多数情况下只能收敛到全局次优解,且有过早收敛的现象.为了克服遗传算法寻优过程的盲从性,将有监督学习的BP算法与之结合以达到优势互补、提高算法的稳定性和全局搜索能力的目的。

4 设菲尔德大学的MATLAB遗传算法工具箱(王辉)

Matlab 遗传算法(Genetic Algorithm)优化工具箱是基于基本操作及终止条件、二进制和十进制相互转换等操作的综合函数库。其实现步骤包括:通过输入及输出函数求出遗传算法主函数、初始种群的生成函数,采用选择、交叉、变异操作求得基本遗传操作函数。以函数仿真为例,对该函数优化和GA 改进,只需改写函数m 文件形式即可。

5 基于遗传算法的LQR控制优化算法(胡斐)

LQR控制在工程中得到了广泛的应用,对于LQR最优控制方法,性能指标中权重矩阵的选择对控制系统的性能有很大影响。权重矩阵通常的确定方法,首先是根据经验初步确定,然后通过模拟,根据输出响应量逐步调整权重系数,直到获得满意的输出响应量为止。这种

确定方法不仅费时,而且无法获得最优的权重矩阵使系统性能达到最优。本案例将研究基于遗传算法的LQR控制优化算法,利用遗传算法的全局寻优能力,搜索权重矩阵。

6 遗传算法工具箱详解及应用(胡斐)

MATLAB自带的遗传算法与直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox, GADST),可以较好地解决与遗传算法相关的各种问题。GADST可以通过GUI界面调用,也可以通过命令行方式调用,使用简单方便。本案例将对GADST函数库的遗传算法部分进行详细的代码分析和讲解,并通过求解非线性方程组介绍GADST的使用方法。

7 多种群遗传算法的函数优化算法(王辉)

标准遗传算法有时候会出现未成熟收敛问题,在求解多目标优化问题时显得尤其严重。遗传算法存在未成熟收敛问题,在求解多目标优化问题时显得尤其严重。因此已有学者提出了多种群遗传算法。该算法中多个种群使用同一目标函数,各种群的交叉率和变异率取不同的固定值,以搜索不同解空间中的最优解,种群之间定期进行信息交换。多种群遗传算法能在一定程度上缓解遗传算法的不成熟收敛问题。

8 基于量子遗传算法的函数寻优算法(王辉)

量子遗传算法(Quantum Genetic Algorithm,QGA)是量子计算与遗传算法(Genetic Algorithm,GA)相结合的产物,是一种新发展起来

的概率进化算法。量子遗传算法是将量子计算与遗传算法相结合而形成的一种混合遗传算法,它弥补了传统遗传算法的某些不足;利用量子计算的一些概念和理论,如量子位、量子叠加态等,使用量子比特编码染色体,这种概率幅表示可以使一个量子染色体同时表达多个状态的信息,用量子门对叠加态的作用作为进化操作,能很好地保持种群多样性和避免选择压力问题,而且当前最优个体的信息能够很容易用来引导变异,使得种群以大概率向着优良模式进化,从而实现目标的优化求解。

9 多目标Pareto最优解搜索算法(胡斐)

多目标优化是指在约束条件下有两个或两个以上的优化目标,而且这些目标之间相互矛盾,不能同时达到最优,也就是说,一个目标的最优往往是以牺牲其它目标作为代价的,因此多目标优化问题存在多个最优解,这些解之间无法比较优劣,统称为Pareto最优解。带精英策略的快速非支配排序遗传算法(Nondominated Sorting Genetic Algorithm II,NSGA-II)是目前应用较为广泛的一种多目标算法。本案例将对MATLAB自带的改进的NSGA-II进行讲解,并举例说明其应用。

10 基于多目标Pareto的二维背包搜索算法(史峰)

背包问题(knapsack problem)是运筹学一个典型的优化难题,但是它有着广泛的应用背景,如装载问题、材料切割、投资决策以及资源分配等, 往往还将其作为其他问题的子问题加以研究。它是个典型的NP问题,对其求解主要采用启发式算法,如贪心算法、遗传

算法及模拟退火算法等。粒子群算法是一种新的进化算法,运算简单、易于实现,该案例将其用于多目标二维背包问题中,向读者阐明粒子群算法解决带有约束的多目标组合优化问题的方法。

11 基于免疫算法的柔性车间调度算法(史峰)

有效的调度方法与优化技术的研究和应用,对于制造企业提高生产效率,降低生产成本等方面起着重要作用。然而柔性车间调度问题计算复杂,约束条件多,普通算法容易陷入局部最优问题。免疫算法是模仿免疫系统抗原识别,抗原与抗体产生过程,并利用免疫系统多样性和记忆抽象得到的算法,具有非线性,全局化搜索等优势,本案例研究了基于免疫算法的柔性车间调度算法。

12 基于免疫算法的运输中心规划算法(史峰)

随着物流业的快速发展,配送在整个物流系统中的所起的作用越发重要,因而配送中心的选址对于企业的网络布局、经营方式等起到了重要作用。然而,配送中心的选择具有计算复杂、约束条件多等问题,普通算法难以找到问题的最优解。免疫算法具有非线性、全局搜索等优点,适合于此类复杂问题的研究,本案例研究了基于免疫算法的运输中心规划算法。

13 基于粒子群算法的函数寻优算法(史峰)

粒子群优化算法(PSO,particle swarm optimization)是计算智能领域,除了蚁群算法,鱼群算法之外的一种群体智能的优化算法。函数寻优是工程中经常遇到的问题,有些函数因为局部极小值点的存在,算法难以寻找到局部最优值。粒子群算法具有群体智能,全局寻

优等优势,比较适合于函数寻优问题,本案例研究了基于粒子群算法的函数寻优算法。

14 基于粒子群算法的PID控制优化算法(史峰)

PID控制方法是工业领域中最常用的控制方法,然而在PID控制算法的使用中,P,I,D参数即比例参数、积分参数、微分参数的确定是个难题,一般是凭经验获得。粒子群算法具有全局寻优功能,可以寻找使控制指标值最优的PID参数。本案例研究了基于粒子群算法的PID控制优化算法。

15 基于混合粒子群算法的TSP寻优算法(史峰)

粒子群算法虽然具有算法简单,寻优速度快等优点,但同时存在算法容易收敛,易陷入局部最优值等问题。采用遗传算法改进粒子群算法,通过选择、交叉和变异操作的引入,改进了算法性能,增强了算法的全局搜索能力。本案例研究了基于混合粒子群算法的TSP寻优算法。

16 基于动态粒子群算法的动态环境寻优算法(史峰)

普通粒子群算法无法感知外界环境的变化,在外界环境发生改变时无法实时进行响应,因而缺乏动态环境寻优能力。在普通粒子群算法基本上通过增加敏感粒子得到一种动态粒子群算法,该算法通过实时计算敏感粒子的适应度值从而感知外界环境的变化,当外界环境的变化超过一定的阈值时算法以按一定比例更新速度和粒子的方式进行相应,从而具有动态环境寻优的功能。本案例研究了基于动态粒子群算法的动态环境寻优算法。

17 粒子群算法工具箱(史峰)

粒子群算法工具箱包含了粒子群算法的基本操作和常用功能,实现步骤包括种群规模选择,粒子长度选取,适应度函数编写,粒子群参数确定等,可以方便实现函数极值寻找,系统参数寻优等功能。本案例以函数极值寻优为例,详细讲解了粒子群算法工具箱的使用。

18 基于鱼群算法的函数寻优算法(王辉)

人工鱼群算法是李晓磊等人于2002年提出的一类基于动物行为的群体智能优化算法.该算法是通过模拟鱼类的觅食、聚群、追尾等行为在搜索域中进行寻优,是集群体智能思想的一个具体应用.人工鱼群算法具有以下特点:具有克服局部极值、取得全局极值的较优秀的能力;算法中仅使用目标问题的函数值,对搜索空间有一定自适应能力;具有对初值与参数选择不敏感、鲁棒性强、简单易实现、收敛速度快和使用灵活等特点.可以解决经典方法不能求解的带有绝对值且不可导二元函数等的极值问题。本案例研究了基于鱼群算法的函数寻优算法。

19 基于模拟退火算法的TSP算法(王辉)

模拟退火算法(Simulated Annealing , 简称SA)为求解传统方法难处理的TSP问题提供了一个有效的途径和通用框架, 并逐渐发展成一种迭代自适应启发式概率性搜索算法。用以求解不同的非线性问题; 对不可微甚至不连续的函数优化, SA 能以较大概率求得全局优化解; 具有较强的鲁棒性、全局收敛性、隐含并行性及广泛的

适应性; 并且能处理不同类型的优化设计变量( 离散的、连续的和混合型的) ; 不需要任何的辅助信息, 对目标函数和约束函数没有任何要求。利用Metropolis 算法并适当地控制温度下降过程, 在优化问题中具有很强的竞争力, 本案例研究了基于模拟退火算法的TSP算法。

20 基于遗传模拟退火算法的聚类算法(王辉)

遗传算法在运行早期个体差异较大,当采用经典的轮盘赌方式选择时,后代产生的个数与父个体适应度大小成正比,因此在早期容易使个别好的个体的后代充斥整个种群,造成早熟。在遗传算法后期,适应度趋向一致,优秀的个体在产生后代时,优势不明显,从而使整个种群进化停滞不前。因此对适应度适当地进行拉伸是必要的,这样在温度高时(遗传算法的前期),适应度相近的个体产生的后代概率相近;而当温度不断下降后,拉伸作用加强,使适应度相近的个体适应度差异放大,从而使得优秀的个体优势更明显。由于模拟退火算法和遗传算法可以互相取长补短,因此有效地克服了传统遗传算法的早熟现象,同时根据聚类问题的具体情况设计遗传编码方式、适应度函数,使该算法更有效、更快速地收敛到全局最优解。本案例研究了基于遗传模拟退火算法的聚类算法。

21 基于模拟退火算法的HEV能量管理策略参数优化(胡斐) 模拟退火算法(Simulated Annealing, SA)作为局部搜索算法的扩展,在每一次修改模型的过程中,随机产生一个新的状态模型,然后以一定的概率选择邻域中能量值大的状态。这种接受新模型的方式使

其成为一种全局最优算法,并得到理论证明和实际应用的验证。能量管理策略是混合动力汽车(Hybrid Electric Vehicle, HEV)的核心技术之一。本案例将对SA进行讲解并将其应用于HEV能量管理策略的参数优化。

22 蚁群算法的优化计算——旅行商问题(TSP)优化(郁磊) 蚁群算法(Ant Colony Algorithm,ACA)是由意大利学者M.Dorigo等人于20世纪90年代初提出的一种新的模拟进化算法,其真实地模拟了自然界蚂蚁群体的觅食行为。M.Dorigo等人将其应用于解决旅行商问题(Traveling Salesman Problem,TSP),取得了较好的实验结果。 近年来,许多专家与学者致力于蚁群算法的研究,并将其应用于交通、通信、化工、电力等领域,成功解决了许多组合优化问题,如调度问题(Job-shop Scheduling Problem)、指派问题(Quadratic Assignment Problem)、旅行商问题(Traveling Salesman Problem)等。 本章将详细阐述蚁群算法的基本思想及原理,并以实例的形式介绍其应用于解决中国旅行商问题(Chinese TSP,CTSP)的情况。 23 基于蚁群算法的二维路径规划算法(史峰)

二维路径规划算法是机器人智能控制领域研究中的热点,算法目的是使机器人能够在有障碍物的工作环境中寻找一条恰当的从给定起点到终点的运动路径。蚁群算法具有分布计算,群体智能等优势,在路径规划算法上具有很大潜力,本案例研究了基于蚁群算法的二维路径规划算法。

24 基于蚁群算法的三维路径规划算法(史峰)

三维路径规划算法是机器人智能控制领域中的热点问题,是指机器人在三维地图中自动规划一条从出发点到目标点满足指标最优的路径。相对于二维路径规划算法来说,三维路径规划问题更加复杂,需要考虑的因素和约束条件更多,一般方法难以取得好的规划效果。蚁群算法具有分布计算,群体智能等优势,在路径规划算法上具有很大潜力,本案例研究了基于蚁群算法的三维路径规划算法。 25 有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测(郁磊)

神经网络的学习规则又称神经网络的训练算法,用来计算更新神经网络的权值和阈值。学习规则有两大类别:有导师学习和无导师学习。在有导师学习中,需要为学习规则提供一系列正确的网络输入/输出对(即训练样本),当网络输入时,将网络输出与相对应的期望值进行比较,然后应用学习规则调整权值和阈值,使网络的输出接近于期望值。而在无导师学习中,权值和阈值的调整只与网络输入有关系,没有期望值,这类算法大多用聚类法,将输入模式归类于有限的类别。本章将详细分析两种应用最广的有导师学习神经网络(BP神经网络及RBF神经网络)的原理及其在回归拟合中的应用。 26 有导师学习神经网络的分类——鸢尾花种类识别(郁磊)

有导师学习神经网络以其良好的学习能力广泛应用于各个领域中,其不仅可以解决拟合回归问题,亦可以用于模式识别、分类识别。本章将继续介绍两种典型的有导师学习神经网络(GRNN和PNN),并以实例说明其在分类识别中的应用。

27 无导师学习神经网络的分类——矿井突水水源判别(郁磊)

如第25章及第26章所述,对于有导师学习神经网络,事先需要知道与输入相对应的期望输出,根据期望输出与网络输出间的偏差来调整网络的权值和阈值。然而,在大多数情况下,由于人们认知能力以及环境的限制,往往无法或者很难获得期望的输出,在这种情况下,基于有导师学习的神经网络往往是无能为力的。 与有导师学习神经网络不同,无导师学习神经网络在学习过程中无需知道期望的输出。其与真实人脑中的神经网络类似,可以通过不断地观察、分析与比较,自动揭示样本中的内在规律和本质,从而可以对具有近似特征(属性)的样本进行准确地分类和识别。本章将详细介绍竞争神经网络与自组织特征映射(SOFM)神经网络的结构及原理,并以实例说明其具体的应用范围及效果。

28 支持向量机的分类——基于乳腺组织电阻抗特性的乳腺癌诊断(郁磊)

支持向量机(Support Vector Machine,SVM)是一种新的机器学习方法,其基础是Vapnik创建的统计学习理论(Statiscal Learning Theory,STL)。统计学习理论采用结构风险最小化(Structural Risk Minimization,SRM)准则,在最小化样本点误差的同时,最小化结构风险,提高了模型的泛化能力,且没有数据维数的限制。在进行线性分类时,将分类面取在离两类

样本距离较大的地方;进行非线性分类时通过高维空间变换,将非线性分类变成高维空间的线性分类问题。 本章将详细介绍支持向量机

的分类原理,并将其应用于基于乳腺组织电阻抗频谱特性的乳腺癌诊断。

29 支持向量机的回归拟合——混凝土抗压强度预测(郁磊) 与传统的神经网络相比,SVM具有以下几个优点: (1)SVM是专门针对小样本问题而提出的,其可以在有限样本的情况下获得最优解; (2)SVM算法最终将转化为一个二次规划问题,从理论上讲可以得到全局最优解,从而解决了传统神经网无法避免局部最优的问题; (3)SVM的拓扑结构由支持向量决定,避免了传统神经网络需要反复试凑确定网络结构的问题; (4)SVM利用非线性变换将原始变量映射到高维特征空间,在高维特征空间中构造线性分类函数,这既保证了模型具有良好的泛化能力,又解决了“维数灾难”问题。 同时,SVM不仅可以解决分类、模式识别等问题,还可以解决回归、拟合等问题。因此,其在各个领域中都得到了非常广泛的利用。 本章将详细介绍SVM回归拟合的基本思想和原理,并以实例的形式阐述其在混凝土抗压强度预测中的应用。

30 极限学习机的回归拟合及分类——对比实验研究(郁磊) 单隐含层前馈神经网络(Single-hidden Layer Feedforward Neural Network,SLFN)以其良好的学习能力在许多领域中得到了广泛的应用。然而,传统的学习算法(如BP算法等)固有的一些缺点,成为制约其发展的主要瓶颈。 因此,探索一种训练速度快、获得全局最优解,且具有良好的泛化性能的训练算法是提升前馈神经网络性能的主要目标,也是近年来的研究热点和难点。 本章将介绍一个针对

SLFN的新算法——极限学习机(Extreme Learning Machine,ELM),该算法随机产生输入层与隐含层间的连接权值及隐含层神经元的阈值,且在训练过程中无需调整,只需要设置隐含层神经元的个数,便可以获得唯一的最优解。与传统的训练方法相比,该方法具有学习速度快、泛化性能好等优点。 同时,在介绍ELM算法的基础上,本章以实例的形式将该算法分别应用于回归拟合(第25章——基于近红外光谱的汽油辛烷值预测)和分类(第26章——鸢尾花种类识别)中。

MATLAB 智能算法30个案例分析

智能算法是我们在学习中经常遇到的算法,主要包括遗传算法,免疫算法,粒子群算法,神经网络等,智能算法对于很多人来说,既爱又恨,爱是因为熟练的掌握几种智能算法,能够很方便的解决我们的论坛问题,恨是因为智能算法感觉比较“玄乎”,很难理解,更难用它来解决问题。

因此,我们组织了王辉,史峰,郁磊,胡斐四名高手共同写作MATLAB智能算法,该书包含了遗传算法,免疫算法,粒子群算法,鱼群算法,多目标pareto算法,模拟退火算法,蚁群算法,神经网络,SVM等,本书最大的特点在于以案例为导向,每个案例针对一个实际问题,给出全部程序和求解思路,并配套相关讲解视频,使读者在读过一个案例之后能够快速掌握这种方法,并且会套用案例程序来编写自己的程序。本书作者在线,读者和会员可以向作者提问,作者做到有问必答。

本书和目录如下:

1 基于遗传算法的TSP算法(王辉)

TSP (旅行商问题—Traveling Salesman Problem),是典型的NP完全问题,即其最坏情况下的时间复杂性随着问题规模的增大按指数方式增长,到目前为止不能找到一个多项式时间的有效算法。遗传算法是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法的做法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。实践证明,遗传算法对于解决TSP问题等组合优化问题具有较好的寻优性能。

2 基于遗传算法和非线性规划的函数寻优算法(史峰) 遗传算法提供了求解非线性规划的通用框架,它不依赖于问题的具体领域。遗传算法的优点是将问题参数编码成染色体后进行优化, 而不针对参数本身, 从而不受函数约束条件的限制; 搜索过程从问题解的一个集合开始, 而不是单个个体, 具有隐含并行搜索特性, 可

大大减少陷入局部最小的可能性。而且优化计算时算法不依赖于梯度信息,且不要求目标函数连续及可导,使其适于求解传统搜索方法难以解决的大规模、非线性组合优化问题。

3 基于遗传算法的BP神经网络优化算法(王辉)

BP模型被广泛地应用于模式分类、模式识别等方面.但BP算法收敛速度慢,且很容易陷入局部极小点,而遗传算法具有并行搜索、效率高、不存在局部收敛问题等优点而被广泛应用.遗传算法的寻优过程带有一定程度的随机性和盲从性,多数情况下只能收敛到全局次优解,且有过早收敛的现象.为了克服遗传算法寻优过程的盲从性,将有监督学习的BP算法与之结合以达到优势互补、提高算法的稳定性和全局搜索能力的目的。

4 设菲尔德大学的MATLAB遗传算法工具箱(王辉)

Matlab 遗传算法(Genetic Algorithm)优化工具箱是基于基本操作及终止条件、二进制和十进制相互转换等操作的综合函数库。其实现步骤包括:通过输入及输出函数求出遗传算法主函数、初始种群的生成函数,采用选择、交叉、变异操作求得基本遗传操作函数。以函数仿真为例,对该函数优化和GA 改进,只需改写函数m 文件形式即可。

5 基于遗传算法的LQR控制优化算法(胡斐) LQR控制在工程中得到了广泛的应用,对于LQR最优控制方法,性能指标中权重矩阵的选择对控制系统的性能有很大影响。权重矩阵通常的确定方法,首先是根据经验初步确定,然后通过模拟,根据输出响应量逐步调整权重系数,直到获得满意的输出响应量为止。这种确定方法不仅费时,而且无法获得最优的权重矩阵使系统性能达到最优。本案例将研究基于遗传算法的LQR控制优化算法,利用遗传算法的全局寻优能力,搜索权重矩阵。

6 遗传算法工具箱详解及应用(胡斐)

MATLAB自带的遗传算法与直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox, GADST),可以较好地解决与遗传算法相关的各种问题。GADST可以通过GUI界面调用,也可以通过命令行方式调用,使用简单方便。本案例将对GADST函数库的遗传算法部分进行详细的代码分析和讲解,并通过求解非线性方程组介绍GADST的使用方法。

7 多种群遗传算法的函数优化算法(王辉) 标准遗传算法有时候会出现未成熟收敛问题,在求解多目标优化问题时显得尤其严重。遗传算法存在未成熟收敛问题,在求解多目标优化问题时显得尤其严重。因此已有学者提出了多种群遗传算法。该算法中多个种群使用同一目标函数,各种群的交叉率和变异率取不同的固定值,以搜索不同解空间中的最优解,种群之间定期进行信息交换。多种群遗传算法能在一定程度上缓解遗传算法的不成熟收敛问题。

8 基于量子遗传算法的函数寻优算法(王辉)

量子遗传算法(Quantum Genetic Algorithm,QGA)是量子计算与遗传算法(Genetic Algorithm,GA)相结合的产物,是一种新发展起来的概率进化算法。量子遗传算法是将量子计算与遗传算法相结合而形成的一种混合遗传算法,它弥补了传统遗传算法的某些不足;利用量子计算的一些概念和理论,如量子位、量子叠加态等,使用量子比特编码染色体,这种概率幅表示可以使一个量子染色体同时表达多个状态的信息,用量子门对叠加态的作用作为进化操作,能很好地保持种群多样性和避免选择压力问题,而且当前最优个体的信息能够很容易用来引导变异,使得种群以大概率向着优良模式进化,从而实现目标的优化求解。

9 多目标Pareto最优解搜索算法(胡斐)

多目标优化是指在约束条件下有两个或两个以上的优化目标,而且这些目标之间相互矛盾,不能同时达到最优,也就是说,一个目标的最优往往是以牺牲其它目标作为代价的,因此多目标优化问题存在多个最优解,这些解之间无法比较优劣,统称为Pareto最优解。带精英策略的快速非支配排序遗传算法(Nondominated Sorting Genetic Algorithm II,NSGA-II)是目前应用较为广泛的一种多目标算法。本案例将对MATLAB自带的改进的NSGA-II进行讲解,并举例说明其应用。

10 基于多目标Pareto的二维背包搜索算法(史峰)

背包问题(knapsack problem)是运筹学一个典型的优化难题,但是它有着广泛的应用背景,如装载问题、材料切割、投资决策以及资源分配等, 往往还将其作为其他问题的子问题加以研究。它是个典型的NP问题,对其求解主要采用启发式算法,如贪心算法、遗传算法及模拟退火算法等。粒子群算法是一种新的进化算法,运算简单、易于实现,该案例将其用于多目标二维背包问题中,向读者阐明粒子群算法解决带有约束的多目标组合优化问题的方法。

11 基于免疫算法的柔性车间调度算法(史峰) 有效的调度方法与优化技术的研究和应用,对于制造企业提高生产效率,降低生产成本等方面起着重要作用。然而柔性车间调度问题计算复杂,约束条件多,普通算法容易陷入局部最优问题。免疫算法是模仿免疫系统抗原识别,抗原与抗体产生过程,并利用免疫系统多样性和记忆抽象得到的算法,具有非线性,全局化搜索等优势,本案例研究了基于免疫算法的柔性车间调度算法。

12 基于免疫算法的运输中心规划算法(史峰) 随着物流业的快速发展,配送在整个物流系统中的所起的作用越发重要,因而配送中心的选址对于企业的网络布局、经营方式等起到了重要作用。然而,配送中心的选择具有计算复杂、约束条件多等问题,普通算法难以找到问题的最优解。免疫算法具有非线性、全局搜索等优点,适合于此类复杂问题的研究,本案例研究了基于免疫算法的运输中心规划算法。

13 基于粒子群算法的函数寻优算法(史峰)

粒子群优化算法(PSO,particle swarm optimization)是计算智能领域,除了蚁群算法,鱼群算法之外的一种群体智能的优化算法。函数寻优是工程中经常遇到的问题,有些函数因为局部极小值点的存在,算法难以寻找到局部最优值。粒子群算法具有群体智能,全局寻优等优势,比较适合于函数寻优问题,本案例研究了基于粒子群算法的函数寻优算法。

14 基于粒子群算法的PID控制优化算法(史峰)

PID控制方法是工业领域中最常用的控制方法,然而在PID控制算法的使用中,P,I,D参数即比例参数、积分参数、微分参数的确定是个难题,一般是凭经验获得。粒子群算法具有全局寻优功能,可以寻找使控制指标值最优的PID参数。本案例研究了基于粒子群算法的PID控制优化算法。

15 基于混合粒子群算法的TSP寻优算法(史峰)

粒子群算法虽然具有算法简单,寻优速度快等优点,但同时存在算法容易收敛,易陷入局部

最优值等问题。采用遗传算法改进粒子群算法,通过选择、交叉和变异操作的引入,改进了算法性能,增强了算法的全局搜索能力。本案例研究了基于混合粒子群算法的TSP寻优算法。

16 基于动态粒子群算法的动态环境寻优算法(史峰) 普通粒子群算法无法感知外界环境的变化,在外界环境发生改变时无法实时进行响应,因而缺乏动态环境寻优能力。在普通粒子群算法基本上通过增加敏感粒子得到一种动态粒子群算法,该算法通过实时计算敏感粒子的适应度值从而感知外界环境的变化,当外界环境的变化超过一定的阈值时算法以按一定比例更新速度和粒子的方式进行相应,从而具有动态环境寻优的功能。本案例研究了基于动态粒子群算法的动态环境寻优算法。

17 粒子群算法工具箱(史峰)

粒子群算法工具箱包含了粒子群算法的基本操作和常用功能,实现步骤包括种群规模选择,粒子长度选取,适应度函数编写,粒子群参数确定等,可以方便实现函数极值寻找,系统参数寻优等功能。本案例以函数极值寻优为例,详细讲解了粒子群算法工具箱的使用。

18 基于鱼群算法的函数寻优算法(王辉)

人工鱼群算法是李晓磊等人于2002年提出的一类基于动物行为的群体智能优化算法.该算法是通过模拟鱼类的觅食、聚群、追尾等行为在搜索域中进行寻优,是集群体智能思想的一个具体应用.人工鱼群算法具有以下特点:具有克服局部极值、取得全局极值的较优秀的能力;算法中仅使用目标问题的函数值,对搜索空间有一定自适应能力;具有对初值与参数选择不敏感、鲁棒性强、简单易实现、收敛速度快和使用灵活等特点.可以解决经典方法不能求解的带有绝对值且不可导二元函数等的极值问题。本案例研究了基于鱼群算法的函数寻优算法。

19 基于模拟退火算法的TSP算法(王辉)

模拟退火算法(Simulated Annealing , 简称SA)为求解传统方法难处理的TSP问题提供了一个有效的途径和通用框架, 并逐渐发展成一种迭代自适应启发式概率性搜索算法。用以求解不同的非线性问题; 对不可微甚至不连续的函数优化, SA 能以较大概率求得全局优化解; 具有较强的鲁棒性、全局收敛性、隐含并行性及广泛的适应性; 并且能处理不同类型的优化设计变量( 离散的、连续的和混合型的) ; 不需要任何的辅助信息, 对目标函数和约束函数没有任何要求。利用Metropolis 算法并适当地控制温度下降过程, 在优化问题中具有很强的竞争力, 本案例研究了基于模拟退火算法的TSP算法。

20 基于遗传模拟退火算法的聚类算法(王辉) 遗传算法在运行早期个体差异较大,当采用经典的轮盘赌方式选择时,后代产生的个数与父个体适应度大小成正比,因此在早期容易使个别好的个体的后代充斥整个种群,造成早熟。在遗传算法后期,适应度趋向一致,优秀的个体在产生后代时,优势不明显,从而使整个种群进化停滞不前。因此对适应度适当地进行拉伸是必要的,这样在温度高时(遗传算法的前期),适应度相近的个体产生的后代概率相近;而当温度不断下降后,拉伸作用加强,使适应度相近的个体适应度差异放大,从而使得优秀的个体优势更明显。由于模拟退火算法和遗传算法可以互相取长补短,因此有效地克服了传统遗传算法的早熟现象,同时根据聚类问题的具体情况设计遗传编码方式、适应度函数,使该算法更有效、更快速地收敛到全局最优解。本案例研究了基于遗传模拟退火算法的聚类算法。

21 基于模拟退火算法的HEV能量管理策略参数优化(胡斐)

模拟退火算法(Simulated Annealing, SA)作为局部搜索算法的扩展,在每一次修改模型的过程中,随机产生一个新的状态模型,然后以一定的概率选择邻域中能量值大的状态。这种接受新模型的方式使其成为一种全局最优算法,并得到理论证明和实际应用的验证。能量管理策略是混合动力汽车(Hybrid Electric Vehicle, HEV)的核心技术之一。本案例将对SA进行讲解并将其应用于HEV能量管理策略的参数优化。

22 蚁群算法的优化计算——旅行商问题(TSP)优化(郁磊)

蚁群算法(Ant Colony Algorithm,ACA)是由意大利学者M.Dorigo等人于20世纪90年代初提出的一种新的模拟进化算法,其真实地模拟了自然界蚂蚁群体的觅食行为。M.Dorigo等人将其应用于解决旅行商问题(Traveling Salesman Problem,TSP),取得了较好的实验结果。 近年来,许多专家与学者致力于蚁群算法的研究,并将其应用于交通、通信、化工、电力等领域,成功解决了许多组合优化问题,如调度问题(Job-shop Scheduling Problem)、指派问题(Quadratic Assignment Problem)、旅行商问题(Traveling Salesman Problem)等。 本章将详细阐述蚁群算法的基本思想及原理,并以实例的形式介绍其应用于解决中国旅行商问题(Chinese TSP,CTSP)的情况。

23 基于蚁群算法的二维路径规划算法(史峰)

二维路径规划算法是机器人智能控制领域研究中的热点,算法目的是使机器人能够在有障碍物的工作环境中寻找一条恰当的从给定起点到终点的运动路径。蚁群算法具有分布计算,群体智能等优势,在路径规划算法上具有很大潜力,本案例研究了基于蚁群算法的二维路径规划算法。

24 基于蚁群算法的三维路径规划算法(史峰)

三维路径规划算法是机器人智能控制领域中的热点问题,是指机器人在三维地图中自动规划一条从出发点到目标点满足指标最优的路径。相对于二维路径规划算法来说,三维路径规划问题更加复杂,需要考虑的因素和约束条件更多,一般方法难以取得好的规划效果。蚁群算法具有分布计算,群体智能等优势,在路径规划算法上具有很大潜力,本案例研究了基于蚁群算法的三维路径规划算法。

25 有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测(郁磊) 神经网络的学习规则又称神经网络的训练算法,用来计算更新神经网络的权值和阈值。学习规则有两大类别:有导师学习和无导师学习。在有导师学习中,需要为学习规则提供一系列正确的网络输入/输出对(即训练样本),当网络输入时,将网络输出与相对应的期望值进行比较,然后应用学习规则调整权值和阈值,使网络的输出接近于期望值。而在无导师学习中,权值和阈值的调整只与网络输入有关系,没有期望值,这类算法大多用聚类法,将输入模式归类于有限的类别。本章将详细分析两种应用最广的有导师学习神经网络(BP神经网络及RBF神经网络)的原理及其在回归拟合中的应用。

26 有导师学习神经网络的分类——鸢尾花种类识别(郁磊)

有导师学习神经网络以其良好的学习能力广泛应用于各个领域中,其不仅可以解决拟合回归问题,亦可以用于模式识别、分类识别。本章将继续介绍两种典型的有导师学习神经网络(GRNN和PNN),并以实例说明其在分类识别中的应用。

27 无导师学习神经网络的分类——矿井突水水源判别(郁磊) 如第25章及第26章所述,对于有导师学习神经网络,事先需要知道与输入相对应的期望输出,根据期望输出与网络输出间的偏差来调整网络的权值和阈值。然而,在大多数情况下,由于人们认知能力以及环境的限制,往往无法或者很难获得期望的输出,在这种情况下,基于有导师学习的神经网络往往是无能为力的。 与有导师学习神经网络不同,无导师学习神经网络在学习过程中无需知道期望的输出。其与真实人脑中的神经网络类似,可以通过不断地观察、分析与比较,自动揭示样本中的内在规律和本质,从而可以对具有近似特征(属性)的样本进行准确地分类和识别。本章将详细介绍竞争神经网络与自组织特征映射(SOFM)神经网络的结构及原理,并以实例说明其具体的应用范围及效果。

28 支持向量机的分类——基于乳腺组织电阻抗特性的乳腺癌诊断(郁磊)

支持向量机(Support Vector Machine,SVM)是一种新的机器学习方法,其基础是Vapnik创建的统计学习理论(Statiscal Learning Theory,STL)。统计学习理论采用结构风险最小化(Structural Risk Minimization,SRM)准则,在最小化样本点误差的同时,最小化结构风险,提高了模型的泛化能力,且没有数据维数的限制。在进行线性分类时,将分类面取在离两类样本距离较大的地方;进行非线性分类时通过高维空间变换,将非线性分类变成高维空间的线性分类问题。

本章将详细介绍支持向量机的分类原理,并将其应用于基于乳腺组织电阻抗频谱特性的乳腺癌诊断。

29 支持向量机的回归拟合——混凝土抗压强度预测(郁磊) 与传统的神经网络相比,SVM具有以下几个优点:

(1)SVM是专门针对小样本问题而提出的,其可以在有限样本的情况下获得最优解; (2)SVM算法最终将转化为一个二次规划问题,从理论上讲可以得到全局最优解,从而解决了传统神经网无法避免局部最优的问题;

(3)SVM的拓扑结构由支持向量决定,避免了传统神经网络需要反复试凑确定网络结构的问题;

(4)SVM利用非线性变换将原始变量映射到高维特征空间,在高维特征空间中构造线性分类函数,这既保证了模型具有良好的泛化能力,又解决了“维数灾难”问题。

同时,SVM不仅可以解决分类、模式识别等问题,还可以解决回归、拟合等问题。因此,其在各个领域中都得到了非常广泛的利用。

本章将详细介绍SVM回归拟合的基本思想和原理,并以实例的形式阐述其在混凝土抗压强度预测中的应用。

30 极限学习机的回归拟合及分类——对比实验研究(郁磊)

单隐含层前馈神经网络(Single-hidden Layer Feedforward Neural Network,SLFN)以其良好的学习能力在许多领域中得到了广泛的应用。然而,传统的学习算法(如BP算法等)固有的一些缺点,成为制约其发展的主要瓶颈。

因此,探索一种训练速度快、获得全局最优解,且具有良好的泛化性能的训练算法是提升前馈神经网络性能的主要目标,也是近年来的研究热点和难点。

本章将介绍一个针对SLFN的新算法——极限学习机(Extreme Learning Machine,ELM),该算法随机产生输入层与隐含层间的连接权值及隐含层神经元的阈值,且在训练过程中无需调整,只需要设置隐含层神经元的个数,便可以获得唯一的最优解。与传统的训练方法相比,

该方法具有学习速度快、泛化性能好等优点。

同时,在介绍ELM算法的基础上,本章以实例的形式将该算法分别应用于回归拟合(第25章——基于近红外光谱的汽油辛烷值预测)和分类(第26章——鸢尾花种类识别)中。

第 1 章

1、案例背景

遗传算法(Genetic Algorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法的做法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。

在遗传算法中,染色体对应的是数据或数组,通常是由一维的串结构数据来表示,串上各个位置对应基因的取值。基因组成的串就是染色体,或者叫基因型个体( Individuals) 。一定数量的个体组成了群体(Population)。群体中个体的数目称为群体大小(Population Size),也叫群体规模。而各个个体对环境的适应程度叫做适应度( Fitness) 。

2、案例目录:

1.1 理论基础

1.1.1 遗传算法概述 1. 编码

2. 初始群体的生成 3. 适应度评估 4. 选择 5. 交叉 6. 变异

1.1.2 设菲尔德遗传算法工具箱 1. 工具箱简介 2. 工具箱添加 1.2 案例背景 1.2.1 问题描述

1. 简单一元函数优化 2. 多元函数优化

1.2.2 解决思路及步骤 1.3 MATLAB程序实现 1.3.1 工具箱结构

1.3.2 遗传算法中常用函数 1. 创建种群函数—crtbp 2. 适应度计算函数—ranking 3. 选择函数—select

4. 交叉算子函数—recombin 5. 变异算子函数—mut

6. 选择函数—reins 7. 实用函数—bs2rv 8. 实用函数—rep

1.3.3 遗传算法工具箱应用举例 1. 简单一元函数优化 2. 多元函数优化 1.4 延伸阅读 1.5 参考文献

3、主程序:

1. 简单一元函数优化: clc

clear all close all

%% 画出函数图 figure(1); hold on;

lb=1;ub=2; %函数自变量范围【1,2】

ezplot('sin(10*pi*X)/X',[lb,ub]); %画出函数曲线 xlabel('自变量/X') ylabel('函数值/Y')

%% 定义遗传算法参数 NIND=40; %个体数目

MAXGEN=20; %最大遗传代数 PRECI=20; %变量的二进制位数 GGAP=0.95; %代沟 px=0.7; %交叉概率 pm=0.01; %变异概率

trace=zeros(2,MAXGEN); %寻优结果的初始值 FieldD=[PRECI;lb;ub;1;0;1;1]; %区域描述器 Chrom=crtbp(NIND,PRECI); %初始种群 %% 优化

gen=0; %代计数器

X=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换 ObjV=sin(10*pi*X)./X; %计算目标函数值 while gen

FitnV=ranking(ObjV); %分配适应度值

SelCh=select('sus',Chrom,FitnV,GGAP); %选择 SelCh=recombin('xovsp',SelCh,px); %重组 SelCh=mut(SelCh,pm); %变异

X=bs2rv(SelCh,FieldD); %子代个体的十进制转换 ObjVSel=sin(10*pi*X)./X; %计算子代的目标函数值

[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新种群 X=bs2rv(Chrom,FieldD); gen=gen+1; %代计数器增加

%获取每代的最优解及其序号,Y为最优解,I为个体的序号 [Y,I]=min(ObjV);

trace(1,gen)=X(I); %记下每代的最优值 trace(2,gen)=Y; %记下每代的最优值 end

plot(trace(1,:),trace(2,:),'bo'); %画出每代的最优点 grid on;

plot(X,ObjV,'b*'); %画出最后一代的种群 hold off

%% 画进化图 figure(2);

plot(1:MAXGEN,trace(2,:)); grid on

xlabel('遗传代数') ylabel('解的变化') title('进化过程') bestY=trace(2,end); bestX=trace(1,end);

fprintf(['最优解:\\nX=',num2str(bestX),'\\nY=',num2str(bestY),'\\n'])

2. 多元函数优化 clc

clear all close all

%% 画出函数图 figure(1);

lbx=-2;ubx=2; %函数自变量x范围【-2,2】 lby=-2;uby=2; %函数自变量y范围【-2,2】

ezmesh('y*sin(2*pi*x)+x*cos(2*pi*y)',[lbx,ubx,lby,uby],50); %画出函数曲线 hold on;

%% 定义遗传算法参数 NIND=40; %个体数目

MAXGEN=50; %最大遗传代数 PRECI=20; %变量的二进制位数 GGAP=0.95; %代沟 px=0.7; %交叉概率 pm=0.01; %变异概率

trace=zeros(3,MAXGEN); %寻优结果的初始值

FieldD=[PRECI PRECI;lbx lby;ubx uby;1 1;0 0;1 1;1 1]; %区域描述器 Chrom=crtbp(NIND,PRECI*2); %初始种群 %% 优化

gen=0; %代计数器

XY=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换 X=XY(:,1);Y=XY(:,2);

ObjV=Y.*sin(2*pi*X)+X.*cos(2*pi*Y); %计算目标函数值 while gen

FitnV=ranking(-ObjV); %分配适应度值

SelCh=select('sus',Chrom,FitnV,GGAP); %选择 SelCh=recombin('xovsp',SelCh,px); %重组 SelCh=mut(SelCh,pm); %变异

XY=bs2rv(SelCh,FieldD); %子代个体的十进制转换 X=XY(:,1);Y=XY(:,2);

ObjVSel=Y.*sin(2*pi*X)+X.*cos(2*pi*Y); %计算子代的目标函数值

[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新种群 XY=bs2rv(Chrom,FieldD);

gen=gen+1; %代计数器增加

%获取每代的最优解及其序号,Y为最优解,I为个体的序号 [Y,I]=max(ObjV);

trace(1:2,gen)=XY(I,:); %记下每代的最优值 trace(3,gen)=Y; %记下每代的最优值 end

plot3(trace(1,:),trace(2,:),trace(3,:),'bo'); %画出每代的最优点 grid on;

plot3(XY(:,1),XY(:,2),ObjV,'bo'); %画出最后一代的种群 hold off

%% 画进化图 figure(2);

plot(1:MAXGEN,trace(3,:)); grid on

xlabel('遗传代数') ylabel('解的变化') title('进化过程') bestZ=trace(3,end); bestX=trace(1,end); bestY=trace(2,end);

fprintf(['最优解:\\nX=',num2str(bestX),'\\nY=',num2str(bestY),'\\nZ=',num2str(bestZ), '\\n'])

第 2 章 基于遗传算法和非线性规划的函数寻优算法

1.1案例背景 1.1.1 非线性规划方法

非线性规划是20世纪50年代才开始形成的一门新兴学科。1951年H.W.库恩和A.W.塔克发表的关于最优性条件(后来称为库恩.塔克条件)的论文是非线性规划正式诞生的一个重要标志。

非线性规划研究一个n元实函数在一组等式或不等式的约束条件下的极值问题,且目标函数和约束条件至少有一个是未知量的非线性函数。非线性规划的一个重要理论是1951年Kuhn-Tucker最优条件(简称KT条件)的建立。此后的50年代主要是对梯度法和牛顿法的研究。以Davidon(1959),Fletcher和Powell(1963)提出的DFP方法为起点,60年代是研究拟牛顿方法活跃时期,同时对共轭梯度法也有较好的研究。在1970年由Broyden,Fletcher、Goldfarb 和Shanno从不同的角度共同提出的BFGS方法是目前为止最有效的拟牛顿方法。由于Broyden,Dennis 和More的工作使得拟牛顿方法的理论变得很完善。 70年代是非线性规划飞速发展时期, 约束变尺度(SQP)方法(Han和Powell为代表)和Lagrange乘子法(代表人物是Powell 和Hestenes)是这一时期主要研究成果.计算机的飞速发展使非线性规划的研究如虎添翼。80年**始研究信赖域法、稀疏拟牛顿法、大规模问题的方法和并行计算,90年代研究解非线性规划问题的内点法和有限储存法。可以毫不夸张的说,这半个世纪是最优化发展的黄金时期。 1.1.2非线性规划函数

fmincon函数是Matlab最优化工具箱中用来求解非线性规划问题的重要函数,它从一个预估值出发,搜索约束条件下非线性多元函数的最小值。 1.1.3 案例

1.2 模型建立

算法流程图如下:

仿真结果

非线性遗传算法寻优结果如下:

普通遗传算法寻优结果如下:

1.3

主函数代码如下: %% 清空环境 clc clear

%% 遗传算法参数 maxgen=30; %进化代数 sizepop=100; %种群规模 pcross=[0.6]; %交叉概率

pmutation=[0.01]; %变异概率

lenchrom=[1 1 1 1 1]; %变量字串长度

bound=[0 0.9*pi;0 0.9*pi;0 0.9*pi;0 0.9*pi;0 0.9*pi]; %变量范围

%% 个体初始化

individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]); %种群结构体 avgfitness=[]; %种群平均适应度 bestfitness=[]; %种群最佳适应度 bestchrom=[]; %适应度最好染色体 % 初始化种群 for i=1:sizepop

individuals.chrom(i,:)=Code(lenchrom,bound); %随机产生个体 x=individuals.chrom(i,:);

individuals.fitness(i)=fun(x); %个体适应度 end

%找最好的染色体

[bestfitness bestindex]=min(individuals.fitness);

bestchrom=individuals.chrom(bestindex,:); %最好的染色体

avgfitness=sum(individuals.fitness)/sizepop; %染色体的平均适应度

% 记录每一代进化中最好的适应度和平均适应度 trace=[avgfitness bestfitness];

%% 进化开始 for i=1:maxgen

% 选择操作

individuals=Select(individuals,sizepop); avgfitness=sum(individuals.fitness)/sizepop;

% 交叉操作

individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound); % 变异操作

individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[i maxgen],bound);

% 计算适应度 for j=1:sizepop

x=individuals.chrom(j,:); individuals.fitness(j)=fun(x); end

%找到最小和最大适应度的染色体及它们在种群中的位置 [newbestfitness,newbestindex]=min(individuals.fitness); [worestfitness,worestindex]=max(individuals.fitness); % 代替上一次进化中最好的染色体 if bestfitness>newbestfitness bestfitness=newbestfitness;

bestchrom=individuals.chrom(newbestindex,:); end

individuals.chrom(worestindex,:)=bestchrom; individuals.fitness(worestindex)=bestfitness;

avgfitness=sum(individuals.fitness)/sizepop;

trace=[trace;avgfitness bestfitness]; %记录每一代进化中最好的适应度和平均适应度 end

%进化结束

%% 结果显示 [r c]=size(trace);

plot([1:r]',trace(:,1),'r-',[1:r]',trace(:,2),'b--');

title(['函数值曲线 ' '终止代数=' num2str(maxgen)]); xlabel('进化代数');ylabel('函数值'); legend('各代平均值','各代最佳值'); disp('函数值 变量');

% 窗口显示

disp([bestfitness x]);

第 3 章 基于遗传算法的BP神经网络优化算法

1、案例背景

BP网络是一类多层的前馈神经网络。它的名字源于在网络训练的过程中,调整网络的权值的算法是误差的反向传播的学习算法,即为BP学习算法。BP算法是Rumelhart等人在1986年提出来的。由于它的结构简单,可调整的参数多,训练算法也多,而且可操作性好,BP神经网络获得了非常广泛的应用。据统计,有80%~90%的神经网络模型都是采用了BP网络或者是它的变形。BP网络是前向网络的核心部分,是神经网络中最精华、最完美的部分。BP神经网络虽然是人工神经网络中应用最广泛的算法,但是也存在着一些缺陷,例如: ①、学习收敛速度太慢;

②、不能保证收敛到全局最小点; ③、网络结构不易确定。 另外,网络结构、初始连接权值和阈值的选择对网络训练的影响很大,但是又无法准确获得,针对这些特点可以采用遗传算法对神经网络进行优化。

本节以某型号拖拉机的齿轮箱为工程背景,介绍使用基于遗传算法的BP神经网络进行齿轮箱故障的诊断。

2、案例目录:

第3章 基于遗传算法的BP神经网络优化算法 3.1 理论基础

3.1.1 BP神经网络概述 3.1.2 遗传算法概述 3.2 案例背景 3.2.1 问题描述

3.2.2 解决思路及步骤 1. 算法流程

2. 神经网络算法实现 3. 遗传算法实现 3.3 MATLAB程序实现 3.3.1 神经网络算法

3.3.2 遗传算法主函数

3.3.3 比较使用遗传算法前后的差别 3.3.4 结果分析

3.4 延伸阅读 3.5 参考文献

3、主程序:

clc

clear all close all

%% 加载神经网络的训练样本 测试样本每列一个样本 输入P 输出T %样本数据就是前面问题描述中列出的数据 load data

% 初始隐层神经元个数 hiddennum=31;

% 输入向量的最大值和最小值

threshold=[0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1;0 1]; inputnum=size(P,1); % 输入层神经元个数 outputnum=size(T,1); % 输出层神经元个数

w1num=inputnum*hiddennum; % 输入层到隐层的权值个数 w2num=outputnum*hiddennum;% 隐层到输出层的权值个数

N=w1num+hiddennum+w2num+outputnum; %待优化的变量的个数

%% 定义遗传算法参数 NIND=40; %个体数目

MAXGEN=50; %最大遗传代数 PRECI=10; %变量的二进制位数 GGAP=0.95; %代沟 px=0.7; %交叉概率 pm=0.01; %变异概率

trace=zeros(N+1,MAXGEN); %寻优结果的初始值

FieldD=[repmat(PRECI,1,N);repmat([-0.5;0.5],1,N);repmat([1;0;1;1],1,N)]; %区域描述器 Chrom=crtbp(NIND,PRECI*N); %初始种群 %% 优化

gen=0; %代计数器

X=bs2rv(Chrom,FieldD); %计算初始种群的十进制转换

ObjV=Objfun(X,P,T,hiddennum,P_test,T_test); %计算目标函数值 while gen

FitnV=ranking(ObjV); %分配适应度值

SelCh=select('sus',Chrom,FitnV,GGAP); %选择 SelCh=recombin('xovsp',SelCh,px); %重组 SelCh=mut(SelCh,pm); %变异

X=bs2rv(SelCh,FieldD); %子代个体的十进制转换

ObjVSel=Objfun(X,P,T,hiddennum,P_test,T_test); %计算子代的目标函数值

[Chrom,ObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel); %重插入子代到父代,得到新种群 X=bs2rv(Chrom,FieldD); gen=gen+1; %代计数器增加

%获取每代的最优解及其序号,Y为最优解,I为个体的序号 [Y,I]=min(ObjV);

trace(1:N,gen)=X(I,:); %记下每代的最优值 trace(end,gen)=Y; %记下每代的最优值 end

%% 画进化图 figure(1);

plot(1:MAXGEN,trace(end,:)); grid on

xlabel('遗传代数') ylabel('误差的变化') title('进化过程')

bestX=trace(1:end-1,end); bestErr=trace(end,end);

fprintf(['最优初始权值和阈值:\\nX=',num2str(bestX'),'\\n最小误差err=',num2str(bestErr),'\\n'])

第 4 章 基于遗传算法的TSP算法

1、案例背景

TSP (旅行商问题—Traveling Salesman Problem),是典型的NP完全问题,即其最坏情况下的时间复杂性随着问题规模的增大按指数方式增长,到目前为止不能找到一个多项式时间的有效算法。遗传算法是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法的做法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。实践证明,遗传算法对于解决TSP问题等组合优化问题具有较好的寻优性能。

2、案例目录:

第4章 基于遗传算法的TSP算法 4.1 理论基础 4.1.1 遗传算法概述 4.1.2 TSP问题介绍 4.2 案例背景 4.2.1 问题描述 4.2.2解决思路及步骤 4.2.2.1 算法流程 4.2.2.2 遗传算法实现 1. 编码 2. 种群初始化 3. 适应度函数 4. 选择操作 5. 交叉操作 6. 变异操作 7. 进化逆转操作 4.3 MATLAB程序实现 4.3.1 种群初始化 4.3.2 适应度函数 4.3.3 选择操作 4.3.4 交叉操作 4.3.5 变异操作 4.3.6 进化逆转操作 4.3.7 画路线轨迹图 4.3.8 遗传算法主函数 4.3.9 结果分析 4.4 延伸阅读 4.4.1 应用扩展 4.4.2 遗传算法的改进 4.4.3 算法的局限性 4.5 参考文献

3、案例实例及结果:

本案例以14个城市为例,假定14个城市的位置坐标为:

表4.1 14个城市的位置坐标

城市编号 1 2 3 4 5 6 7 8 9 10 11 12 13 14

X坐标 16.47 16.47 20.09 22.39 25.23 22 20.47 17.2 16.3 14.05 16.53 21.52 19.41 20.09

Y坐标 96.1 94.44 92.54 93.37 97.24 96.05 97.02 96.29 97.38 98.12 97.38 95.59 97.13 92.55

从某个城市出发访问每个城市一次且仅一次, 最后回到出发城市,如何安排才使其所走路线最短。

结果:

优化前的一个随机路线轨迹图

图4.1 随机路线图

随机路线为:

11—>7—>10—>4—>12—>9—>14—>8—>13—>5—>2—>3—>6—>1—>11 总距离:71.1144 优化后的路线图:

图4.2 最优解路线图

最优解路线:

5—>4—>3—>14—>2—>1—>10—>9—>11—>8—>13—>7—>12—>6—>5 总距离:29.3405 优化迭代过程:

图4.3 遗传算法进化过程图

4、主程序:

clear clc

close all

load CityPosition1;%个城市坐标位置 NIND=100; %种群大小 MAXGEN=200;

Pc=0.9; %交叉概率 Pm=0.05; %变异概率

GGAP=0.9; %代沟(Generation gap) D=Distanse(X); %生成距离矩阵 N=size(D,1); %(34*34) %% 初始化种群

Chrom=InitPop(NIND,N);

%% 在二维图上画出所有坐标点 % figure

% plot(X(:,1),X(:,2),'o'); %% 画出随机解的路线图 DrawPath(Chrom(1,:),X) pause(0.0001)

%% 输出随机解的路线和总距离 disp('初始种群中的一个随机值:') OutputPath(Chrom(1,:));

Rlength=PathLength(D,Chrom(1,:));

disp(['总距离:',num2str(Rlength)]);

disp('~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~') %% 优化 gen=0; figure;

hold on;box on xlim([0,MAXGEN]) title('优化过程') xlabel('代数') ylabel('最优值')

ObjV=PathLength(D,Chrom); %计算路线长度 preObjV=min(ObjV); while gen

%% 计算适应度

ObjV=PathLength(D,Chrom); %计算路线长度 % fprintf('%d %1.10f\\n',gen,min(ObjV))

line([gen-1,gen],[preObjV,min(ObjV)]);pause(0.0001) preObjV=min(ObjV); FitnV=Fitness(ObjV); %% 选择

SelCh=Select(Chrom,FitnV,GGAP); %% 交叉操作

SelCh=Recombin(SelCh,Pc); %% 变异

SelCh=Mutate(SelCh,Pm); %% 逆转操作

SelCh=Reverse(SelCh,D); %% 重插入子代的新种群

Chrom=Reins(Chrom,SelCh,ObjV); %% 更新迭代次数 gen=gen+1 ; end

%% 画出最优解的路线图

ObjV=PathLength(D,Chrom); %计算路线长度 [minObjV,minInd]=min(ObjV); DrawPath(Chrom(minInd(1),:),X) %% 输出最优解的路线和总距离 disp('最优解:')

p=OutputPath(Chrom(minInd(1),:));

disp(['总距离:',num2str(ObjV(minInd(1)))]);

disp('-------------------------------------------------------------')

第 5章 基于遗传算法的LQR控制器优化设计

1、案例背景

LQR控制在工程中得到了广泛的应用,对于LQR最优控制,其最优性完全取决于加权矩阵的选择,然而该加权矩阵如何选择并没有解析方法,只能定性地去选择矩阵参数,所以这样的“最优”控制事实上完全是认为的。如果选择不当,虽然可以求出最优解,但这样的“最优解”没有任何意义。另一方面,加权矩阵的选择依赖于设计者的经验,需要设计者根据系统输出逐步调整加权矩阵,直到获得满意的输出响应量为止,这样不仅费时,而且无法保证获得最优的权重矩阵,因此获得的最优控制反馈系数不能保证使系统达到最优。遗传算法(Genetic Algorithm,GA)是模仿自然界生物进化机制发展起来的全局搜索优化方法,它在迭代过程中使用适者生存的原则,采用交叉、变异等操作使得种群朝着最优的方向进化,最终获得最优解。鉴于LQR 控制方法权重矩阵确定困难的问题,本案例以汽车主动悬架作为被控对象,将遗传算法应用于LQR控制器的设计中,利用遗传算法的全局搜索能力,以主动悬架的性能指标作为目标函数对加权矩阵进行优化设计,以提高LQR的设计效率和性能。

2、案例目录:

第5章 基于遗传算法的LQR控制器优化设计 5.1 案例背景 5.1.1 LQR控制

5.1.2 基于遗传算法设计LQR控制器 5.2 模型建立

5.2.1 主动悬架及其LQR控制器

5.2.2 基于遗传算法的主动悬架LQR控制器优化设计 5.3 模型及算法实现 5.3.1 模型实现 5.3.2 遗传算法实现 5.3.3 结果分析 5.4 参考文献

3、案例实例及结果:

4、主程序:

clear clc

fitnessfcn = @GA_LQR; % 适应度函数句柄 nvars=3; % 个体变量数目 LB = [0.1 0.1 0.1]; % 下限 UB = [1e6 1e6 1e6]; % 上限

options=gaoptimset('PopulationSize',100,'PopInitRange',[LB;UB],'EliteCount',10,'CrossoverFraction',0.4,'Generations',20,'StallGenLimit',20,'TolFun',1e-100,'PlotFcns',{@gaplotbestf,@gaplotbestindiv}); % 算法参数设置

[x_best,fval]=ga(fitnessfcn,nvars, [],[],[],[],LB,UB,[],options); % 运行遗传算法

第 6 章 遗传算法工具箱详解及应用

1、案例背景

MATLAB自带的遗传算法与直接搜索工具箱(Genetic Algorithm and Direct Search Toolbox, GADST),可以较好地解决与遗传算法相关的各种问题。GADST可以通过GUI界面调用,也可以通过命令行方式调用,使用简单方便。本案例将对GADST函数库的遗传算法部分进行详细的代码分析和讲解,并通过求解非线性方程组介绍GADST的使用方法。

2、案例目录:

第6章 遗传算法工具箱详解及应用 6.1 遗传算法与直接搜索工具箱

6.1.1 遗传算法与直接搜索工具箱简介 6.1.2 GADST详解

6.1.2.1 遗传算法的一些基本概念 6.1.2.2 stepGA函数

6.1.2.3 fitscalingrank函数和selectionstochunif函数 6.1.2.4 crossoverscattered函数mutationgaussian函数 6.1.3 GADST的使用

6.1.3.1 GUI方式使用GADST 6.1.3.2 命令行方式使用GADST 6.2 案例分析 6.2.1 模型建立

6.2.2 GADST的应用 6.2.2.1 使用GUI 6.2.2.2 使用命令行 6.2.3 结果分析 6.3 参考文献

3、案例实例及结果:

作为案例,这里将使用遗传算法与直接搜索工具箱(GADST)求解一个非线性方程组。求解以下非线性方程组:

优化过程如下:

得到的最优解为

[x1,x2] = [-0.247800834353742, 1.62131572868496]

4、主程序:

clear clc

fitnessfcn = @GA_demo; % 适应度函数句柄

nvars = 2; % 个体所含的变量数目 options = gaoptimset('PopulationSize',100,'EliteCount',10,'CrossoverFraction',0.75,'Generations',500,'StallGenLimit',500,'TolFun',1e-100,'PlotFcns',{@gaplotbestf,@gaplotbestindiv}); % 参数设置

[x_best,fval] =ga(fitnessfcn,nvars,[],[],[],[],[],[],[],options);% 调用ga函数

第 7 章 多种群遗传算法的函数优化算法

1、案例背景

针对遗传算法所存在的问题,一种多种群遗传算法结构模型(Multiple Population GA,简称MPGA)可以用来取代常规的标准计算模型(SGA)。 MPGA在SGA的基础上主要引入了以下几个概念:

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

(2)各个种群之间通过移民算子进行联系,实现多种群的协同进化;最优解的获取是多个种群协同进化的综合结果。 (3)通过人工选择算子保存各种群每个进化代中的最优个体,并作为判断算法收敛的依据。

图 7-1 MPGA的算法结构示意图

复杂二元函数求最值:

图 7-2 二元函数图像

2、案例目录:

第7章 多种群遗传算法的函数优化算法 7.1 理论基础

7.1.1遗传算法早熟问题 7.1.2多种群遗传算法概述 7.2案例背景 7.2.1问题描述

7.2.2解决思路及步骤 7.3 MATLAB程序实现

7.3.1移民算子 7.3.2人工选择算子 7.3.3目标函数

7.3.4标准遗传算法主函数 7.3.5多种群遗传算法主函数 7.3.6结果分析 7.4延伸阅读 7.5 参考文献

3、主程序:

%% 多种群遗传算法 clear; clc

close all

NIND=40; %个体数目 NVAR=2; %变量的维数

PRECI=20; %变量的二进制位数 GGAP=0.9; %代沟 MP=10; %种群数目

FieldD=[rep(PRECI,[1,NVAR]);[-3,4.1;12.1,5.8];rep([1;0;1;1],[1,NVAR])]; %译码矩阵 for i=1:MP

Chrom{i}=crtbp(NIND, NVAR*PRECI); %创建初始种群 end

pc=0.7+(0.9-0.7)*rand(MP,1); %在【0.7,0.9】范围i内随机产生交叉概率

pm=0.001+(0.05-0.001)*rand(MP,1); %在【0.001,0.05】范围内随机产生变异概率 gen=0; %初始遗传代数 gen0=0; %初始保持代数

MAXGEN=10; %最优个体最少保持代数 maxY=0; %最优值 for i=1:MP

ObjV{i}=ObjectFunction(bs2rv(Chrom{i}, FieldD));%计算各初始种群个体的目标函数值 end

MaxObjV=zeros(MP,1); %记录精华种群

MaxChrom=zeros(MP,PRECI*NVAR); %记录精华种群的编码 while gen0<=MAXGEN

gen=gen+1; %遗传代数加1 for i=1:MP

FitnV{i}=ranking(-ObjV{i}); % 各种群的适应度

SelCh{i}=select('sus', Chrom{i}, FitnV{i},GGAP); % 选择操作 SelCh{i}=recombin('xovsp',SelCh{i}, pc(i)); % 交叉操作 SelCh{i}=mut(SelCh{i},pm(i)); % 变异操作

ObjVSel=ObjectFunction(bs2rv(SelCh{i}, FieldD)); % 计算子代目标函数值 [Chrom{i},ObjV{i}]=reins(Chrom{i},SelCh{i},1,1,ObjV{i},ObjVSel); %重插入操作 end

[Chrom,ObjV]=immigrant(Chrom,ObjV); % 移民操作

[MaxObjV,MaxChrom]=EliteInduvidual(Chrom,ObjV,MaxObjV,MaxChrom); % 人工选择精华种群 YY(gen)=max(MaxObjV); %找出精华种群中最优的个体

if YY(gen)>maxY %判断当前优化值是否与前一次优化值相同 maxY=YY(gen); %更新最优值 gen0=0; else

gen0=gen0+1; %最优值保持次数加1 end end

%% 进化过程图 plot(1:gen,YY) xlabel('进化代数') ylabel('最优解变化') title('进化过程') xlim([1,gen])

%% 输出最优解

[Y,I]=max(MaxObjV); %找出精华种群中最优的个体 X=(bs2rv(MaxChrom(I,:), FieldD)); %最优个体的解码解 disp(['最优值为:',num2str(Y)])

disp(['对应的自变量取值:',num2str(X)])

4、运行结果:

标准遗传算法运行5次得到的结果图:

多种群遗传算法运行5次得到的结果图:

第 8 章 基于量子遗传算法的函数寻优算法

1、案例背景

量子遗传算法就是基于量子计算原理的一种遗传算法。将量子的态矢量表达引入了遗传编码,利用量子逻辑门实现染色体的演化,实现了比常规遗传算法更好的效果。 量子遗传算法建立在量子的态矢量表示的基础之上,将量子比特的几率幅表示应用于染色体的编码,使得一条染色体可以表达多个态的叠加,并利用量子逻辑门实现染色体的更新操作,从而实现了目标的优化求解。 复杂二元函数求最值:

图 8-1 二元函数图像

2、案例目录:

第8章 基于量子遗传算法的函数寻优算法 8.1 理论基础

8.1.1 量子遗传算法概述 8.1.2 量子比特编码 8.1.3 量子门更新 8.2案例背景 8.2.1 问题描述

8.2.2 解决思路及步骤

8.2.2.1 量子遗传算法流程 8.2.2.2 量子遗传算法实现 1. 量子比特编码 2. 量子旋转门 8.3 MATLAB程序实现

8.3.1 种群初始化—量子比特编码 8.3.2测量函数—得到二进制编码 8.3.3 量子旋转门函数 8.3.4 适应度函数 8.3.5 量子遗传算法主函数 8.3.6 结果分析 8.4 延伸阅读 8.5 参考文献

3、主程序:

clc;

clear all; close all;

%----------------参数设置----------------------- MAXGEN=200; % 最大遗传代数 sizepop=40; % 种群大小

lenchrom=[20 20]; % 每个变量的二进制长度 trace=zeros(1,MAXGEN);

%--------------------------------------------------------------------------

% 最佳个体 记录其适应度值、十进制值、二进制编码、量子比特编码

本文来源:https://www.bwwdw.com/article/l43o.html

Top