衡量算法的主要指标对比时,还有没有其他指标作为标准

建筑节能计算规定性指标合格,权衡判断不合格是怎么回事。 [已结贴,悬赏分,未有满意答案]
相关问题本周热门问题
人气[1501]
人气[4039]
人气[3031]
人气[1951]
人气[1209]
人气[1314]
人气[8658]
人气[1591]
(提示:完整回复可上传图片和附件)
分享到微博,让朋友了解您的动态吧!
* 验证码:
我已经阅读并接受
选择类型:技术提问 求资料
精准标题(50字内):
概念、入门知识去首页搜索,无需提问哦!
请选择想回答的类型:技术提问 资料提问
请在上面勾选将要搜索的区域
请输入您想要回答的关键词:
关键词不能超过50个字
您将移动主题所属的分类
可同时对发布人执行如下操作:
进行处罚(默认扣去积分5分,威望值1分)
禁止发言(设置后发布人需要做改过自新任务后才能继续发言)
永久封号(永久不能再登录网站)
删除评论(删除楼层,楼层将从本主题里移除)
隐藏评论(保留楼层,并用下面的描述代替原评论的内容)
请选择或输入隐藏评论的描述:
--可用的快速描述--
和主题无关
请选择置顶的范围:
全社区置顶
本专业置顶
本版面置顶
本版面以及下属所有子版面都置顶
请选择高亮的颜色:
高亮有效期: 天(0为永久有效)
您将对水木发布的“”进行奖励操作
奖励积分:
您今日奖励操作还剩积分0分,威望值0
奖励原因:
---请选择---
分析得有道理
进行处罚操作:
请选择处罚积分:
请选择或填写处罚原因:
---请选择---
可同时进行以下操作
删除该内容
隐藏该内容
禁止发言(发布人需要做改过自新任务后才能继续发言)
永久封号(发布人永久不能再登录网站)
举报有奖,但请注意举报的真实性。恶意举报,将被惩罚!您可以查看该人的所有动态,便于发现其他违规行为,进行批量举报。
举报操作:
原因选择:
内容天工网已有,重复
内容不完整、无法查看;参考价值太低或质量太差
广告、违法、灌水、胡乱发帖、复制他人内容等违规现象
其他 (请填写具体原因)
请直接输入该资料在天工网上的链接地址:
您给出的悬赏或奖励的分数还剩下15积分
给该内容奖励: 分
您当前可用的积分为15积分
追回悬赏: 分
准备将此评论设为主题的最佳答案
可同时给此评论指派悬赏分: 分 (您当前还可分派的悬赏分为:0分)
可同时给此最佳答案给出评价:
设置最佳答案的同时将自动进行结贴操作
结贴提示:
(1)主题的悬赏分还剩下15积分,可先给出剩下的悬赏分后再结贴
(2)还未设置最佳答案,此时结贴则为“无满意答案结贴”(可先设定最佳答案再结贴)
提示:当前是内测期,只有内测会员才能进行交互。
您当前不是内测会员,需要获得内测资格后方能进行交互。
内测资格需要在“发布”或者“回复”或者“追问”时输入邀请码来获得。您可以通过以下方式来获得邀请码:
一、向周围有邀请码的同事、同学、朋友们索取。
二、访问天工网社区微博、抢得邀请码。》
三、完成下列任务之一,取得内测资格。
(1)发起1个高质量的提问或者讨论投票,等待审核通过。
(2)推广3个用户注册激活成功。可通过多种形式和渠道(包括论坛、QQ、Q群、邮箱等)发送您专属的推广链接给好友。》
您的推广连接为:
您可以复制上面的地址,或者点击
来获得推广连接
#userNickName#
您也可以通过QQ,MSN等工具,或者发送邮件,把下面的链接发送给您的好友,推荐他阅读!
回复成功!
分享到微博,让好友了解您的动态吧!Si指数计算_图文_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
Si指数计算
阅读已结束,下载文档到电脑
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,方便使用
还剩3页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢标准遗传算法有时候会出现未成熟收敛问题
时间: 4:05:39
&&&&&&&&&&&&&&&&MATLAB智能算法30个案例分析&&&&智能算法是我们在学习中经常遇到的算法,主要包括遗传算法,免疫算法,粒子群算法,神经网络等,智能算法对于很多人来说,既爱又恨,爱是因为熟练的掌握几种智能算法,能够很方便的解决我们的论坛问题,恨是因为智能算法感觉比较“玄乎”,很难理解,更难用它来解决问题。因此,我们组织了王辉,史峰,郁磊,胡斐四名高手共同写作MATLAB智能算法,该书包含了遗传算法,免疫算法,粒子群算法,鱼群算法,多目标pareto算法,模拟退火算法,蚁群算法,神经网络,SVM等,本书最大的特点在于以案例为导向,每个案例针对一个实际问题,给出全部程序和求解思路,并配套相关讲解视频,使读者在读过一个案例之后能够快速掌握这种方法,并且会套用案例程序来编写自己的程序。本书作者在线,读者和会员可以向作者提问,作者做到有问必答。本书和目录如下:1基于遗传算法的TSP算法(王辉)TSP(旅行商问题—TravelingSalesmanProblem),是典型的NP完全问题,即其最坏情况下的时间复杂性随着问题规模的增大按指数方式增长,到目前为止不能找到一个多项式时间的有效算法。遗传算法是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法的做法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。实践证明,遗传算法对于解决TSP问题等组合优化问题具有较好的寻优性能。2基于遗传算法和非线性规划的函数寻优算法(史峰)遗传算法提供了求解非线性规划的通用框架,它不依赖于问题的具体领域。遗传算法的优点是将问题参数编码成染色体后进行优化,而不针对参数本身,从而不受函数约束条件的限制;搜索过程从问题解的一个集合开始,而不是单个个体,具有隐含并行搜索特性,可大大减少陷入局部最小的可能性。而且优化计算时算法不依赖于梯度信息,且不要求目标函数连续及可导,使其适于求解传统搜索方法难以解决的大规模、非线性组合优化问题。3基于遗传算法的BP神经网络优化算法(王辉)BP模型被广泛地应用于模式分类、模式识别等方面.但BP算法收敛速度慢,且很容易陷入局部极小点,而遗传算法具有并行搜索、效率高、不存在局部收敛问题等优点而被广泛应用.遗传算法的寻优过程带有一定程度的随机性和盲从性,多数情况下只能收敛到全局次优解,且有过早收敛的现象.为了克服遗传算法寻优过程的盲从性,将有监督学习的BP算法与之结合以达到优势互补、提高算法的稳定性和全局搜索能力的目的。4设菲尔德大学的MATLAB遗传算法工具箱(王辉)Matlab遗传算法(GeneticAlgorithm)优化工具箱是基于基本操作及终止条件、二进制和十进制相互转换等操作的综合函数库。其实现步骤包括:通过输入及输出函数求出遗传算法主函数、初始种群的生成函数,采用选择、交叉、变异操作求得基本遗传操作函数。以函数仿真&&&&&&&&&&&&为例,对该函数优化和GA改进,只需改写函数m文件形式即可。5基于遗传算法的LQR控制优化算法(胡斐)LQR控制在工程中得到了广泛的应用,对于LQR最优控制方法,性能指标中权重矩阵的选择对控制系统的性能有很大影响。权重矩阵通常的确定方法,首先是根据经验初步确定,然后通过模拟,根据输出响应量逐步调整权重系数,直到获得满意的输出响应量为止。这种确定方法不仅费时,而且无法获得最优的权重矩阵使系统性能达到最优。本案例将研究基于遗传算法的LQR控制优化算法,利用遗传算法的全局寻优能力,搜索权重矩阵。6遗传算法工具箱详解及应用(胡斐)MATLAB自带的遗传算法与直接搜索工具箱(GeneticAlgorithmandDirectSearchToolbox,GADST),可以较好地解决与遗传算法相关的各种问题。GADST可以通过GUI界面调用,也可以通过命令行方式调用,使用简单方便。本案例将对GADST函数库的遗传算法部分进行详细的代码分析和讲解,并通过求解非线性方程组介绍GADST的使用方法。7多种群遗传算法的函数优化算法(王辉)标准遗传算法有时候会出现未成熟收敛问题,在求解多目标优化问题时显得尤其严重。遗传算法存在未成熟收敛问题,在求解多目标优化问题时显得尤其严重。因此已有学者提出了多种群遗传算法。该算法中多个种群使用同一目标函数,各种群的交叉率和变异率取不同的固定值,以搜索不同解空间中的最优解,种群之间定期进行信息交换。多种群遗传算法能在一定程度上缓解遗传算法的不成熟收敛问题。8基于量子遗传算法的函数寻优算法(王辉)量子遗传算法(QuantumGeneticAlgorithm,QGA)是量子计算与遗传算法(GeneticAlgorithm,GA)相结合的产物,是一种新发展起来的概率进化算法。量子遗传算法是将量子计算与遗传算法相结合而形成的一种混合遗传算法,它弥补了传统遗传算法的某些不足;利用量子计算的一些概念和理论,如量子位、量子叠加态等,使用量子比特编码染色体,这种概率幅表示可以使一个量子染色体同时表达多个状态的信息,用量子门对叠加态的作用作为进化操作,能很好地保持种群多样性和避免选择压力问题,而且当前最优个体的信息能够很容易用来引导变异,使得种群以大概率向着优良模式进化,从而实现目标的优化求解。9多目标Pareto最优解搜索算法(胡斐)多目标优化是指在约束条件下有两个或两个以上的优化目标,而且这些目标之间相互矛盾,不能同时达到最优,也就是说,一个目标的最优往往是以牺牲其它目标作为代价的,因此多目标优化问题存在多个最优解,这些解之间无法比较优劣,统称为Pareto最优解。带精英策略的快速非支配排序遗传算法(NondominatedSortingGeneticAlgorithmII,NSGA-II)是目前应用较为广泛的一种多目标算法。本案例将对MATLAB自带的改进的NSGA-II进行讲解,并举例说明其应用。10基于多目标Pareto的二维背包搜索算法(史峰)背包问题(knapsackproblem)是运筹学一个典型的优化难题,但是它有着广泛的应用背景,如装载问题、材料切割、投资决策以及资源分配等,往往还将其作为其他问题的子问题加以研究。它是个典型的NP问题,对其求解主要采用启发式算法,如贪心算法、遗传算法及模拟退火算法等。粒子群算法是一种新的进化算法,运算简单、易于实现,该案例将其用于&&&&&&&&&&&&多目标二维背包问题中,向读者阐明粒子群算法解决带有约束的多目标组合优化问题的方法。11基于免疫算法的柔性车间调度算法(史峰)有效的调度方法与优化技术的研究和应用,对于制造企业提高生产效率,降低生产成本等方面起着重要作用。然而柔性车间调度问题计算复杂,约束条件多,普通算法容易陷入局部最优问题。免疫算法是模仿免疫系统抗原识别,抗原与抗体产生过程,并利用免疫系统多样性和记忆抽象得到的算法,具有非线性,全局化搜索等优势,本案例研究了基于免疫算法的柔性车间调度算法。12基于免疫算法的运输中心规划算法(史峰)随着物流业的快速发展,配送在整个物流系统中的所起的作用越发重要,因而配送中心的选址对于企业的网络布局、经营方式等起到了重要作用。然而,配送中心的选择具有计算复杂、约束条件多等问题,普通算法难以找到问题的最优解。免疫算法具有非线性、全局搜索等优点,适合于此类复杂问题的研究,本案例研究了基于免疫算法的运输中心规划算法。13基于粒子群算法的函数寻优算法(史峰)粒子群优化算法(PSO,particleswarmoptimization)是计算智能领域,除了蚁群算法,鱼群算法之外的一种群体智能的优化算法。函数寻优是工程中经常遇到的问题,有些函数因为局部极小值点的存在,算法难以寻找到局部最优值。粒子群算法具有群体智能,全局寻优等优势,比较适合于函数寻优问题,本案例研究了基于粒子群算法的函数寻优算法。14基于粒子群算法的PID控制优化算法(史峰)PID控制方法是工业领域中最常用的控制方法,然而在PID控制算法的使用中,P,I,D参数即比例参数、积分参数、微分参数的确定是个难题,一般是凭经验获得。粒子群算法具有全局寻优功能,可以寻找使控制指标值最优的PID参数。本案例研究了基于粒子群算法的PID控制优化算法。15基于混合粒子群算法的TSP寻优算法(史峰)粒子群算法虽然具有算法简单,寻优速度快等优点,但同时存在算法容易收敛,易陷入局部最优值等问题。采用遗传算法改进粒子群算法,通过选择、交叉和变异操作的引入,改进了算法性能,增强了算法的全局搜索能力。本案例研究了基于混合粒子群算法的TSP寻优算法。16基于动态粒子群算法的动态环境寻优算法(史峰)普通粒子群算法无法感知外界环境的变化,在外界环境发生改变时无法实时进行响应,因而缺乏动态环境寻优能力。在普通粒子群算法基本上通过增加敏感粒子得到一种动态粒子群算法,该算法通过实时计算敏感粒子的适应度值从而感知外界环境的变化,当外界环境的变化超过一定的阈值时算法以按一定比例更新速度和粒子的方式进行相应,从而具有动态环境寻优的功能。本案例研究了基于动态粒子群算法的动态环境寻优算法。17粒子群算法工具箱(史峰)粒子群算法工具箱包含了粒子群算法的基本操作和常用功能,实现步骤包括种群规模选择,粒子长度选取,适应度函数编写,粒子群参数确定等,可以方便实现函数极值寻找,系统参数寻优等功能。本案例以函数极值寻优为例,详细讲解了粒子群算法工具箱的使用。&&&&&&&&&&&&18基于鱼群算法的函数寻优算法(王辉)人工鱼群算法是李晓磊等人于2002年提出的一类基于动物行为的群体智能优化算法.该算法是通过模拟鱼类的觅食、聚群、追尾等行为在搜索域中进行寻优,是集群体智能思想的一个具体应用.人工鱼群算法具有以下特点:具有克服局部极值、取得全局极值的较优秀的能力;算法中仅使用目标问题的函数值,对搜索空间有一定自适应能力;具有对初值与参数选择不敏感、鲁棒性强、简单易实现、收敛速度快和使用灵活等特点.可以解决经典方法不能求解的带有绝对值且不可导二元函数等的极值问题。本案例研究了基于鱼群算法的函数寻优算法。19基于模拟退火算法的TSP算法(王辉)模拟退火算法(SimulatedAnnealing,简称SA)为求解传统方法难处理的TSP问题提供了一个有效的途径和通用框架,并逐渐发展成一种迭代自适应启发式概率性搜索算法。用以求解不同的非线性问题;对不可微甚至不连续的函数优化,SA能以较大概率求得全局优化解;具有较强的鲁棒性、全局收敛性、隐含并行性及广泛的适应性;并且能处理不同类型的优化设计变量(离散的、连续的和混合型的);不需要任何的辅助信息,对目标函数和约束函数没有任何要求。利用Metropolis算法并适当地控制温度下降过程,在优化问题中具有很强的竞争力,本案例研究了基于模拟退火算法的TSP算法。20基于遗传模拟退火算法的聚类算法(王辉)遗传算法在运行早期个体差异较大,当采用经典的轮盘赌方式选择时,后代产生的个数与父个体适应度大小成正比,因此在早期容易使个别好的个体的后代充斥整个种群,造成早熟。在遗传算法后期,适应度趋向一致,优秀的个体在产生后代时,优势不明显,从而使整个种群进化停滞不前。因此对适应度适当地进行拉伸是必要的,这样在温度高时(遗传算法的前期),适应度相近的个体产生的后代概率相近;而当温度不断下降后,拉伸作用加强,使适应度相近的个体适应度差异放大,从而使得优秀的个体优势更明显。由于模拟退火算法和遗传算法可以互相取长补短,因此有效地克服了传统遗传算法的早熟现象,同时根据聚类问题的具体情况设计遗传编码方式、适应度函数,使该算法更有效、更快速地收敛到全局最优解。本案例研究了基于遗传模拟退火算法的聚类算法。21基于模拟退火算法的HEV能量管理策略参数优化(胡斐)模拟退火算法(SimulatedAnnealing,SA)作为局部搜索算法的扩展,在每一次修改模型的过程中,随机产生一个新的状态模型,然后以一定的概率选择邻域中能量值大的状态。这种接受新模型的方式使其成为一种全局最优算法,并得到理论证明和实际应用的验证。能量管理策略是混合动力汽车(HybridElectricVehicle,HEV)的核心技术之一。本案例将对SA进行讲解并将其应用于HEV能量管理策略的参数优化。22蚁群算法的优化计算——旅行商问题(TSP)优化(郁磊)蚁群算法(AntColonyAlgorithm,ACA)是由意大利学者M.Dorigo等人于20世纪90年代初提出的一种新的模拟进化算法,其真实地模拟了自然界蚂蚁群体的觅食行为。M.Dorigo等人将其应用于解决旅行商问题(TravelingSalesmanProblem,TSP),取得了较好的实验结果。近年来,许多专家与学者致力于蚁群算法的研究,并将其应用于交通、通信、化工、电力等领域,成功解决了许多组合优化问题,如调度问题(Job-shopSchedulingProblem)、指派问题(QuadraticAssignmentProblem)、旅行商问题(TravelingSalesmanProblem)等。&&&&&&&&&&&&本章将详细阐述蚁群算法的基本思想及原理,并以实例的形式介绍其应用于解决中国旅行商问题(ChineseTSP,CTSP)的情况。23基于蚁群算法的二维路径规划算法(史峰)二维路径规划算法是机器人智能控制领域研究中的热点,算法目的是使机器人能够在有障碍物的工作环境中寻找一条恰当的从给定起点到终点的运动路径。蚁群算法具有分布计算,群体智能等优势,在路径规划算法上具有很大潜力,本案例研究了基于蚁群算法的二维路径规划算法。24基于蚁群算法的三维路径规划算法(史峰)三维路径规划算法是机器人智能控制领域中的热点问题,是指机器人在三维地图中自动规划一条从出发点到目标点满足指标最优的路径。相对于二维路径规划算法来说,三维路径规划问题更加复杂,需要考虑的因素和约束条件更多,一般方法难以取得好的规划效果。蚁群算法具有分布计算,群体智能等优势,在路径规划算法上具有很大潜力,本案例研究了基于蚁群算法的三维路径规划算法。25有导师学习神经网络的回归拟合——基于近红外光谱的汽油辛烷值预测(郁磊)神经网络的学习规则又称神经网络的训练算法,用来计算更新神经网络的权值和阈值。学习规则有两大类别:有导师学习和无导师学习。在有导师学习中,需要为学习规则提供一系列正确的网络输入/输出对(即训练样本),当网络输入时,将网络输出与相对应的期望值进行比较,然后应用学习规则调整权值和阈值,使网络的输出接近于期望值。而在无导师学习中,权值和阈值的调整只与网络输入有关系,没有期望值,这类算法大多用聚类法,将输入模式归类于有限的类别。本章将详细分析两种应用最广的有导师学习神经网络(BP神经网络及RBF神经网络)的原理及其在回归拟合中的应用。26有导师学习神经网络的分类——鸢尾花种类识别(郁磊)有导师学习神经网络以其良好的学习能力广泛应用于各个领域中,其不仅可以解决拟合回归问题,亦可以用于模式识别、分类识别。本章将继续介绍两种典型的有导师学习神经网络(GRNN和PNN),并以实例说明其在分类识别中的应用。27无导师学习神经网络的分类——矿井突水水源判别(郁磊)如第25章及第26章所述,对于有导师学习神经网络,事先需要知道与输入相对应的期望输出,根据期望输出与网络输出间的偏差来调整网络的权值和阈值。然而,在大多数情况下,由于人们认知能力以及环境的限制,往往无法或者很难获得期望的输出,在这种情况下,基于有导师学习的神经网络往往是无能为力的。与有导师学习神经网络不同,无导师学习神经网络在学习过程中无需知道期望的输出。其与真实人脑中的神经网络类似,可以通过不断地观察、分析与比较,自动揭示样本中的内在规律和本质,从而可以对具有近似特征(属性)的样本进行准确地分类和识别。本章将详细介绍竞争神经网络与自组织特征映射(SOFM)神经网络的结构及原理,并以实例说明其具体的应用范围及效果。28支持向量机的分类——基于乳腺组织电阻抗特性的乳腺癌诊断(郁磊)支持向量机(SupportVectorMachine,SVM)是一种新的机器学习方法,其基础是Vapnik创建的统计学习理论(StatiscalLearningTheory,STL)。统计学习理论采用结构风险最小化&&&&&&&&&&&&(StructuralRiskMinimization,SRM)准则,在最小化样本点误差的同时,最小化结构风险,提高了模型的泛化能力,且没有数据维数的限制。在进行线性分类时,将分类面取在离两类样本距离较大的地方;进行非线性分类时通过高维空间变换,将非线性分类变成高维空间的线性分类问题。本章将详细介绍支持向量机的分类原理,并将其应用于基于乳腺组织电阻抗频谱特性的乳腺癌诊断。29支持向量机的回归拟合——混凝土抗压强度预测(郁磊)与传统的神经网络相比,SVM具有以下几个优点:(1)SVM是专门针对小样本问题而提出的,其可以在有限样本的情况下获得最优解;(2)SVM算法最终将转化为一个二次规划问题,从理论上讲可以得到全局最优解,从而解决了传统神经网无法避免局部最优的问题;(3)SVM的拓扑结构由支持向量决定,避免了传统神经网络需要反复试凑确定网络结构的问题;(4)SVM利用非线性变换将原始变量映射到高维特征空间,在高维特征空间中构造线性分类函数,这既保证了模型具有良好的泛化能力,又解决了“维数灾难”问题。同时,SVM不仅可以解决分类、模式识别等问题,还可以解决回归、拟合等问题。因此,其在各个领域中都得到了非常广泛的利用。本章将详细介绍SVM回归拟合的基本思想和原理,并以实例的形式阐述其在混凝土抗压强度预测中的应用。30极限学习机的回归拟合及分类——对比实验研究(郁磊)单隐含层前馈神经网络(Single-hiddenLayerFeedforwardNeuralNetwork,SLFN)以其良好的学习能力在许多领域中得到了广泛的应用。然而,传统的学习算法(如BP算法等)固有的一些缺点,成为制约其发展的主要瓶颈。因此,探索一种训练速度快、获得全局最优解,且具有良好的泛化性能的训练算法是提升前馈神经网络性能的主要目标,也是近年来的研究热点和难点。本章将介绍一个针对SLFN的新算法——极限学习机(ExtremeLearningMachine,ELM),该算法随机产生输入层与隐含层间的连接权值及隐含层神经元的阈值,且在训练过程中无需调整,只需要设置隐含层神经元的个数,便可以获得唯一的最优解。与传统的训练方法相比,该方法具有学习速度快、泛化性能好等优点。同时,在介绍ELM算法的基础上,本章以实例的形式将该算法分别应用于回归拟合(第25章——基于近红外光谱的汽油辛烷值预测)和分类(第26章——鸢尾花种类识别)中。&&&&&&&&第1章&&&&&&&&1、案例背景&&&&遗传算法(GeneticAlgorithm,GA)是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法的做法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。&&&&&&&&&&&&在遗传算法中,染色体对应的是数据或数组,通常是由一维的串结构数据来表示,串上各个位置对应基因的取值。基因组成的串就是染色体,或者叫基因型个体(Individuals)。一定数量的个体组成了群体(Population)。群体中个体的数目称为群体大小(PopulationSize),也叫群体规模。而各个个体对环境的适应程度叫做适应度(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.3MATLAB程序实现1.3.1工具箱结构1.3.2遗传算法中常用函数1.创建种群函数—crtbp2.适应度计算函数—ranking3.选择函数—select4.交叉算子函数—recombin5.变异算子函数—mut6.选择函数—reins7.实用函数—bs2rv8.实用函数—rep1.3.3遗传算法工具箱应用举例1.简单一元函数优化2.多元函数优化1.4延伸阅读1.5参考文献&&&&&&&&3、主程序:&&&&1.简单一元函数优化:&&&&&&&&&&&&clcclearallcloseall%%画出函数图figure(1);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;1;0;1;1];%区域描述器Chrom=crtbp(NIND,PRECI);%初始种群%%优化gen=0;%代计数器X=bs2rv(Chrom,FieldD);%计算初始种群的十进制转换ObjV=sin(10*pi*X)./X;%计算目标函数值whilegenMAXGENFitnV=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;%记下每代的最优值endplot(trace(1,:),trace(2,:),'bo');%画出每代的最优点plot(X,ObjV,'b*');%画出最后一代的种群holdoff%%画进化图&&&&&&&&&&&&figure(2);plot(1:MAXGEN,trace(2,:));gridonxlabel('遗传代数')ylabel('解的变化')title('进化过程')bestY=trace(2,end);bestX=trace(1,end);fprintf(['最优解:\nX=',num2str(bestX),'\nY=',num2str(bestY),'\n'])2.多元函数优化clcclearallcloseall%%画出函数图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);%画出函数曲线%%定义遗传算法参数NIND=40;%个体数目MAXGEN=50;%最大遗传代数PRECI=20;%变量的二进制位数GGAP=0.95;%代沟px=0.7;%交叉概率pm=0.01;%变异概率trace=zeros(3,MAXGEN);%寻优结果的初始值FieldD=[PRECIPRECI;11;00;11;11];%区域描述器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);%计算目标函数值whilegenMAXGENFitnV=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;%记下每代的最优值endplot3(trace(1,:),trace(2,:),trace(3,:),'bo');%画出每代的最优点plot3(XY(:,1),XY(:,2),ObjV,'bo');%画出最后一代的种群holdoff%%画进化图figure(2);plot(1:MAXGEN,trace(3,:));gridonxlabel('遗传代数')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仿真结果非线性遗传算法寻优结果如下:&&&&&&&&&&&&普通遗传算法寻优结果如下:&&&&&&&&主函数代码如下:%%清空环境clcclear%%遗传算法参数maxgen=30;%进化代数sizepop=100;%种群规模pcross=[0.6];%交叉概率pmutation=[0.01];%变异概率lenchrom=[11111];%变量字串长度bound=[00.9*00.9*00.9*00.9*00.9*pi];%变量范围&&&&&&&&&&&&%%个体初始化individuals=struct('fitness',zeros(1,sizepop),'chrom',[]);%种群结构体avgfitness=[];%种群平均适应度bestfitness=[];%种群最佳适应度bestchrom=[];%适应度最好染色体%初始化种群fori=1:sizepopindividuals.chrom(i,:)=Code(lenchrom,bound);%随机产生个体x=individuals.chrom(i,:);individuals.fitness(i)=fun(x);%个体适应度end%找最好的染色体[bestfitnessbestindex]=min(individuals.fitness);bestchrom=individuals.chrom(bestindex,:);%最好的染色体avgfitness=sum(individuals.fitness)/%染色体的平均适应度%记录每一代进化中最好的适应度和平均适应度trace=[avgfitnessbestfitness];%%进化开始fori=1:maxgen%选择操作individuals=Select(individuals,sizepop);avgfitness=sum(individuals.fitness)/%交叉操作individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);%变异操作individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,[imaxgen],bound);%计算适应度forj=1:sizepopx=individuals.chrom(j,:);individuals.fitness(j)=fun(x);end%找到最小和最大适应度的染色体及它们在种群中的位置[newbestfitness,newbestindex]=min(individuals.fitness);[worestfitness,worestindex]=max(individuals.fitness);%代替上一次进化中最好的染色体ifbestfitnessnewbestfitnessbestfitness=bestchrom=individuals.chrom(newbestindex,:);end&&&&&&&&&&&&individuals.chrom(worestindex,:)=individuals.fitness(worestindex)=avgfitness=sum(individuals.fitness)/trace=[avgfitnessbestfitness];%记录每一代进化中最好的适应度和平均适应度end%进化结束%%结果显示[rc]=size(trace);plot([1:r]',trace(:,1),'r-',[1:r]',trace(:,2),'b--');title(['函数值曲线''终止代数='num2str(maxgen)]);xlabel('进化代数');ylabel('函数值');legend('各代平均值','各代最佳值');disp('函数值变量');%窗口显示disp([bestfitnessx]);&&&&&&&&第3章基于遗传算法的BP神经网络优化算法&&&&&&&&1、案例背景&&&&BP网络是一类多层的前馈神经网络。它的名字源于在网络训练的过程中,调整网络的权值的算法是误差的反向传播的学习算法,即为BP学习算法。BP算法是Rumelhart等人在1986年提出来的。由于它的结构简单,可调整的参数多,训练算法也多,而且可操作性好,BP神经网络获得了非常广泛的应用。据统计,有80%~90%的神经网络模型都是采用了BP网络或者是它的变形。BP网络是前向网络的核心部分,是神经网络中最精华、最完美的部分。BP神经网络虽然是人工神经网络中应用最广泛的算法,但是也存在着一些缺陷,例如:①、学习收敛速度太慢;②、不能保证收敛到全局最小点;③、网络结构不易确定。另外,网络结构、初始连接权值和阈值的选择对网络训练的影响很大,但是又无法准确获得,针对这些特点可以采用遗传算法对神经网络进行优化。&&&&&&&&本节以某型号拖拉机的齿轮箱为工程背景,介绍使用基于遗传算法的BP神经网络进行齿轮箱故障的诊断。&&&&&&&&&&&&2、案例目录:&&&&第3章基于遗传算法的BP神经网络优化算法3.1理论基础3.1.1BP神经网络概述3.1.2遗传算法概述3.2案例背景3.2.1问题描述3.2.2解决思路及步骤1.算法流程2.神经网络算法实现3.遗传算法实现3.3MATLAB程序实现3.3.1神经网络算法3.3.2遗传算法主函数3.3.3比较使用遗传算法前后的差别3.3.4结果分析3.4延伸阅读3.5参考文献&&&&&&&&3、主程序:&&&&clcclearallcloseall%%加载神经网络的训练样本测试样本每列一个样本输入P输出T%样本数据就是前面问题描述中列出的数据loaddata%初始隐层神经元个数hiddennum=31;%输入向量的最大值和最小值threshold=[01;01;01;01;01;01;01;01;01;01;01;01;01;01;01];inputnum=size(P,1);%输入层神经元个数outputnum=size(T,1);%输出层神经元个数w1num=inputnum*%输入层到隐层的权值个数w2num=outputnum*%隐层到输出层的权值个数N=w1num+hiddennum+w2num+%待优化的变量的个数%%定义遗传算法参数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);%计算目标函数值whilegenMAXGENfprintf('%d\n',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,:));gridonxlabel('遗传代数')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(旅行商问题—TravelingSalesmanProblem),是典型的NP完全问题,即其最坏情况下的时间复杂性随着问题规模的增大按指数方式增长,到目前为止不能找到一个多项式时间的有效算法。遗传算法是一种进化算法,其基本原理是仿效生物界中的“物竞天择、适者生存”的演化法则。遗传算法的做法是把问题参数编码为染色体,再利用迭代的方式进行选择、交叉以及变异等运算来交换种群中染色体的信息,最终生成符合优化目标的染色体。实践证明,遗传算法对于解决TSP问题等组合优化问题具有较好的寻优性能。&&&&&&&&2、案例目录:&&&&第4章基于遗传算法的TSP算法4.1理论基础4.1.1遗传算法概述4.1.2TSP问题介绍4.2案例背景4.2.1问题描述4.2.2解决思路及步骤4.2.2.1算法流程4.2.2.2遗传算法实现1.编码2.种群初始化3.适应度函数4.选择操作5.交叉操作6.变异操作7.进化逆转操作4.3MATLAB程序实现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.114个城市的位置坐标&&&&&&&&城市编号&&&&&&&&X坐标16.22..&&&&&&&&Y坐标96.194.97.96.2997.38&&&&&&&&&&&&&&&&&&&&14.19.4120.09&&&&&&&&98.97.1392.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&&&&&&&&&&&&clccloseallloadCityPosition1;%个城市坐标位置NIND=100;%种群大小MAXGEN=200;Pc=0.9;%交叉概率Pm=0.05;%变异概率GGAP=0.9;%代沟(Generationgap)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;boxonxlim([0,MAXGEN])title('优化过程')xlabel('代数')ylabel('最优值')ObjV=PathLength(D,Chrom);%计算路线长度preObjV=min(ObjV);whilegenMAXGEN%%计算适应度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最优控制,其最优性完全取决于加权矩阵的选择,然而该加权矩阵如何选择并没有解析方法,只能定性地去选择矩阵参数,所以这样的“最优”控制事实上完全是认为的。如果选择不当,虽然可以求出最优解,但这样的“最优解”没有任何意义。另一方面,加权矩阵的选择依赖于设计者的经验,需要设计者根据系统输出逐步调整加权矩阵,直到获得满意的输出响应量为止,这样不仅费时,而且无法保证获得最优的权重矩阵,因此获得的最优控制反馈系数不能保证使系统达到最优。遗传算法(GeneticAlgorithm,GA)是模仿自然界生物进化机制发展起来的全局搜索优化方法,它在迭代过程中使用适者生存的原则,采用交叉、变异等操作使得种群朝着最优的方向进化,最终获得最优解。鉴于LQR控制方法权重矩阵确定困难的问题,本案例以汽车主动悬架作为被控对象,将遗传算法应用于LQR控制器的设计中,利用遗传算法的全局搜索能力,以主动悬架的性能指标作为目标函数对加权矩阵进行优化设计,以提高LQR的设计效率和性能。&&&&&&&&2、案例目录:&&&&&&&&&&&&第5章基于遗传算法的LQR控制器优化设计5.1案例背景5.1.1LQR控制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、主程序:&&&&clearclcfitnessfcn=@GA_LQR;%适应度函数句柄nvars=3;%个体变量数目LB=[0.10.10.1];%下限UB=[1e61e61e6];%上限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自带的遗传算法与直接搜索工具箱(GeneticAlgorithmandDirectSearchToolbox,GADST),可以较好地解决与遗传算法相关的各种问题。GADST可以通过GUI界面调用,也可以通过命令行方式调用,使用简单方便。本案例将对GADST函数库的遗传算法部分进行详细的代码分析和讲解,并通过求解非线性方程组介绍GADST的使用方法。&&&&&&&&2、案例目录:&&&&第6章遗传算法工具箱详解及应用6.1遗传算法与直接搜索工具箱6.1.1遗传算法与直接搜索工具箱简介6.1.2GADST详解6.1.2.1遗传算法的一些基本概念6.1.2.2stepGA函数6.1.2.3fitscalingrank函数和selectionstochunif函数6.1.2.4crossoverscattered函数mutationgaussian函数6.1.3GADST的使用6.1.3.1GUI方式使用GADST6.1.3.2命令行方式使用GADST6.2案例分析&&&&&&&&&&&&6.2.1模型建立6.2.2GADST的应用6.2.2.1使用GUI6.2.2.2使用命令行6.2.3结果分析6.3参考文献&&&&&&&&3、案例实例及结果:&&&&作为案例,这里将使用遗传算法与直接搜索工具箱(GADST)求解一个非线性方程组。求解以下非线性方程组:&&&&&&&&优化过程如下:&&&&&&&&得到的最优解为[x1,x2]=[-0.742,1.96]&&&&&&&&4、主程序:&&&&clearclcfitnessfcn=@GA_%适应度函数句柄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、案例背景&&&&针对遗传算法所存在的问题,一种多种群遗传算法结构模型(MultiplePopulationGA,简称MPGA)可以用来取代常规的标准计算模型(SGA)。MPGA在SGA的基础上主要引入了以下几个概念:(1)突破SGA仅靠单个群体进行遗传进化的框架,引入多个种群同时进行优化搜索;不同的种群赋以不同的控制参数,实现不同的搜索目的。(2)各个种群之间通过移民算子进行联系,实现多种群的协同进化;最优解的获取是多个种群协同进化的综合结果。(3)通过人工选择算子保存各种群每个进化代中的最优个体,并作为判断算法收敛的依据。&&&&&&&&图7-1MPGA的算法结构示意图&&&&&&&&复杂二元函数求最值:&&&&&&&&&&&&图7-2二元函数图像&&&&&&&&2、案例目录:&&&&第7章多种群遗传算法的函数优化算法7.1理论基础7.1.1遗传算法早熟问题7.1.2多种群遗传算法概述7.2案例背景7.2.1问题描述7.2.2解决思路及步骤7.3MATLAB程序实现7.3.1移民算子7.3.2人工选择算子7.3.3目标函数7.3.4标准遗传算法主函数7.3.5多种群遗传算法主函数7.3.6结果分析7.4延伸阅读7.5参考文献&&&&&&&&3、主程序:&&&&%%多种群遗传算法clccloseallNIND=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])];%译码矩阵fori=1:MPChrom{i}=crtbp(NIND,NVAR*PRECI);%创建初始种群endpc=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;%最优值fori=1:MPObjV{i}=ObjectFunction(bs2rv(Chrom{i},FieldD));%计算各初始种群个体的目标函数值endMaxObjV=zeros(MP,1);%记录精华种群MaxChrom=zeros(MP,PRECI*NVAR);%记录精华种群的编码whilegen0=MAXGENgen=gen+1;%遗传代数加1fori=1:MPFitnV{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);%找出精华种群中最优的个体ifYY(gen)maxY%判断当前优化值是否与前一次优化值相同maxY=YY(gen);%更新最优值gen0=0;elsegen0=gen0+1;%最优值保持次数加1endend%%进化过程图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.3MATLAB程序实现8.3.1种群初始化—量子比特编码8.3.2测量函数—得到二进制编码8.3.3量子旋转门函数8.3.4适应度函数8.3.5量子遗传算法主函数8.3.6结果分析8.4延伸阅读8.5参考文献&&&&&&&&3、主程序:&&&&&&&&%----------------参数设置----------------------MAXGEN=200;%最大遗传代数sizepop=40;%种群大小lenchrom=[2020];%每个变量的二进制长度trace=zeros(1,MAXGEN);%-------------------------------------------------------------------------%最佳个体记录其适应度值、十进制值、二进制编码、量子比特编码best=struct('fitness',0,'X',[],'binary',[],'chrom',[]);%%初始化种群chrom=InitPop(sizepop*2,sum(lenchrom));%%对种群实施一次测量得到二进制编码binary=collapse(chrom);%%求种群个体的适应度值,和对应的十进制值[fitness,X]=FitnessFunction(binary,lenchrom);%使用目标函数计算适应度%%记录最佳个体到best[best.fitnessbestindex]=max(fitness);%找出最大值best.binary=binary(bestindex,:);best.chrom=chrom([2*bestindex-1:2*bestindex],:);best.X=X(bestindex,:);trace(1)=best.fprintf('%d\n',1)%%进化forgen=2:MAXGENfprintf('%d\n',gen)%提示进化代数&&&&&&&&&&&&%%对种群实施一次测量binary=collapse(chrom);%%计算适应度[fitness,X]=FitnessFunction(binary,lenchrom);%%量子旋转门chrom=Qgate(chrom,fitness,best,binary);[newbestfitness,newbestindex]=max(fitness);%找到最佳值%记录最佳个体到bestifnewbestfitnessbest.fitnessbest.fitness=best.binary=binary(newbestindex,:);best.chrom=chrom([2*newbestindex-1:2*newbestindex],:);best.X=X(newbestindex,:);endtrace(gen)=best.end%%画进化曲线plot(1:MAXGEN,trace);title('进化过程');xlabel('进化代数');ylabel('每代的最佳适应度');%%显示优化结果disp(['最优解X:',num2str(best.X)])disp(['最大值Y:',num2str(best.fitness)]);&&&&&&&&4、运行结果:&&&&最优解X:11.最大值Y:17.3503量子遗传算法优化200代得到的进化过程图如图8-3所示。&&&&&&&&&&&&图8-3QGA进化过程图&&&&&&&&第9章基于遗传算法的多目标优化算法&&&&&&&&1、案例背景&&&&目前的多目标优化算法有很多,KalyanmoyDeb的NSGA-II(NondominatedSortingGeneticAlgorithmII,带精英策略的快速非支配排序遗传算法)无疑是其中应用最为广泛也是最为成功的一种。MATLAB自带的gamultiobj函数所采用的算法,就是基于NSGA-II改进的一种多目标优化算法(avariantofNSGA-II)。gamultiobj函数的出现,为在MATLAB平台下解决多目标优化问题提供了良好的途径。gamultiobj函数包含在遗传算法与直接搜索工具箱(GeneticAlgorithmandDirectSearchToolbox,GADST)中,这里我们称gamultiobj函数为基于遗传算法的多目标优化函数,相应的算法为基于遗传算法的多目标优化算法。本案例将以gamultiobj函数为基础,对基于遗传算法的多目标优化算法进行讲解,并详细分析其代码,同时通过一个简单的案例介绍gamultiobj函数的使用。&&&&&&&&2、案例目录:&&&&第9章基于遗传算法的多目标优化算法9.1案例背景9.1.1多目标优化及Pareto最优解9.1.2gamultiobj函数9.2程序实现9.2.1gamultiobj组织结构9.2.2gamultiobj函数中的一些基本概念9.2.3stepgamultiobj函数分析9.2.3.1stepgamultiobj函数结构及图形描述9.2.3.2选择(selectiontournament.m)9.2.3.3交叉、变异、产生子种群和父子种群合并9.2.3.4计算序值和拥挤距离(nonDominatedRank.m,distancecrowding.m,&&&&&&&&&&&&trimPopulation.m)9.2.3.5distanceAndSpread函数9.2.4gamultiobj函数的调用9.2.4.1通过GUI方式调用gamultiobj函数9.2.4.2通过命令行方式调用gamultiobj函数9.3案例分析9.3.1模型建立9.3.2使用gamultiobj函数求解多目标优化问题9.3.3结果分析9.4参考文献&&&&&&&&3、案例实例及结果:&&&&作为案例,这里将使用MATLAB自带的基于遗传算法的多目标优化函数gamultiobj求解一个简单的多目标优化问题。待优化的多目标问题表述如下:&&&&&&&&可以看到,在基于遗传算法的多目标优化算法的运行过程中,自动绘制了第一前端中个体的分布情况,且分布随着算法进化一代而更新一次。当迭代停止后,得到如图9.5所示的第一前端个体分布图。同时,Worksapce中返回了gamultiobj函数得到的Pareto解集x及与x对应的目标函数值,如表9.2所示。&&&&&&&&4、主程序:&&&&clear&&&&&&&&&&&&clcfitnessfcn=@my_first_%Functionhandletothefitnessfunctionnvars=2;%Numberofdecisionvariableslb=[-5,-5];%Lowerboundub=[5,5];%UpperboundA=[];b=[];%NolinearinequalityconstraintsAeq=[];beq=[];%Nolinearequalityconstraintsoptions=gaoptimset('ParetoFraction',0.3,'PopulationSize',100,'Generations',200,'StallGenLimit',200,'TolFun',1e-100,'PlotFcns',@gaplotpareto);[x,fval]=gamultiobj(fitnessfcn,nvars,A,b,Aeq,beq,lb,ub,options);&&&&&&&&第10章基于粒子群算法的多目标搜索算法&&&&&&&&1、案例背景&&&&&&&&在实际工程优化问题中,多数问题是多目标优化问题。相对于单目标优化问题,多目标优化问题的显著特点是优化各个目标使其同时达到综合的最优值。然而,由于多目标优化问题的各个目标之间往往是相互冲突的,在满足其中一个目标最优的同时,其他的目标往往可能会受其影响而变得很差。因此,一般适用于单目标问题的方法难以用于多目标问题的求解。多目标优化问题很早就引起了人们的重视,现已经发展出多种求解多目标优化问题的方法。多目标优化问题求解中的最重要概念是非劣解和非劣解集,两者的定义如下。非劣解(noninferiorsolution):在多目标优化问题的可行域中存在一个问题解,若不存在另一个可行解,使得一个解中的目标全部劣于该解,则该解称为多目标优化问题的非劣解。所有非劣解的集合叫做非劣解集(noninferiorSet)。&&&&&&&&2、案例目录&&&&本案例的目录为:案例十基于粒子群算法的多目标搜索算法...110.1理论基础...110.2案例背景...2&&&&&&&&&&&&10.2.1问题描述...210.2.3适应度计算...310.2.4筛选非劣解集...310.2.5粒子速度和位置更新...310.2.6粒子最优...410.3MATLAB程序实现...410.3.1种群初始化...410.3.2种群更新...410.3.3更新个体最优粒子...510.3.4非劣解筛选...510.3.5仿真结果...610.4延伸阅读...710.5参考文献...8&&&&&&&&3、主程序&&&&%%循环迭代foriter=1:MaxIt%权值更新w=wmax-(wmax-wmin)*iter/MaxIt;%从非劣解中选择粒子作为全局最优解s=size(fljx,1)index=randi(s,1,1);gbest=fljx(index,:);%%群体更新fori=1:xSize%速度更新v(i,:)=w*v(i,:)+c1*rand(1,1)*(xbest(i,:)-x(i,:))+c2*rand(1,1)*(gbest-x(i,:));&&&&&&&&&&&&%位置更新x(i,:)=x(i,:)+v(i,:);x(i,:)=rem(x(i,:),objnum)/double(objnum);index1=find(x(i,:)=0);iflength(index1)~=0x(i,index1)=rand(size(index1));endx(i,:)=ceil(4*x(i,:));end%%更新粒子历史最佳fori=1:xSize%现在的支配原有的,替代原有的if((px(i)ppx(i))(rx(i)rrx(i)))||((abs(px(i)-ppx(i))tol)...(rx(i)rrx(i)))||((px(i)ppx(i))(abs(rx(i)-rrx(i))tol))||(cx(i)weight)xbest(i,:)=x(i,:);%没有记录目标值pxbest(i)=ppx(i);rxbest(i)=rrx(i);cxbest(i)=ccx(i);end%%更新非劣解集合px=rx=cx=%更新升级非劣解集合s=size(flj,1);%目前非劣解集合中元素个数%先将非劣解集合和xbest合并pppx=zeros(1,s+xSize);rrrx=zeros(1,s+xSize);cccx=zeros(1,s+xSize);pppx(1:xSize)=pppx(xSize+1:end)=flj(:,1)';rrrx(1:xSize)=rrrx(xSize+1:end)=flj(:,2)';cccx(1:xSize)=cccx(xSize+1:end)=flj(:,3)';xxbest=zeros(s+xSize,Dim);xxbest(1:xSize,:)=xxbest(xSize+1:end,:)=&&&&&&&&%筛选非劣解flj=[];fljx=[];k=0;tol=1e-7;fori=1:xSize+s&&&&&&&&&&&&flag=0;%没有被支配%判断该点是否非劣forj=1:xSize+sifj~=iif((pppx(i)pppx(j))(rrrx(i)rrrx(j)))||((abs(pppx(i)-pppx(j))tol)...(rrrx(i)rrrx(j)))||((pppx(i)pppx(j))(abs(rrrx(i)-rrrx(j))tol))...||(cccx(i)weight)%有一次被支配flag=1;endendend%去掉重复粒子repflag=0;%重复标志k=1;%不同非劣解粒子数flj2=[];%存储不同非劣解fljx2=[];%存储不同非劣解粒子位置flj2(k,:)=flj(1,:);fljx2(k,:)=fljx(1,:);forj=2:size(flj,1)repflag=0;%重复标志fori=1:size(flj2,1)result=(fljx(j,:)==fljx2(i,:));iflength(find(result==1))==Dimrepflag=1;%有重复endend%粒子不同,存储ifrepflag==0k=k+1;flj2(k,:)=flj(j,:);fljx2(k,:)=fljx(j,:);endend%非劣解更新flj=flj2;fljx=fljx2;end&&&&&&&&4、运行结果&&&&&&&&&&&&第11章基于多层编码遗传算法的车间调度算法&&&&&&&&1案例背景&&&&遗传算法具有较强的问题求解能力,能够解决非线性优化问题。对于遗传算法中的染色体表示问题中的一个潜在最优解,对于简单的问题来说,染色体可以方便的表达问题的潜在解,然而,对于较为复杂的优化问题,一个染色体难以准确表达问题的解。多层编码遗传算法,把个体编码分为多层,每层编码均表示不同的含义,多层编码共同完整表达了问题的解,从而用一个染色体准确表达出了复杂问题的解。多层编码遗传算法扩展了遗传算法的使用领域,使得遗传算法可以方便用于复杂问题的求解。&&&&&&&&2、案例目录&&&&第十一章基于多层编码遗传算法的车间调度算法...1&&&&11.1理论基础...111.2案例背景...111.2.1问题描述...111.2.2模型建立...211.2.3算法实现...311.3MATLAB程序实现...411.3.1主函数...411.3.2适应度值计算...511.3.3交叉函数...711.3.4变异函数...811.3.5仿真结果...8&&&&&&&&&&&&11.4案例扩展...模糊目标...代码分析...仿真结果...1211.5参考文献...12&&&&&&&&3、主程序:&&&&%%基本参数NIND=40;%个体数目MAXGEN=50;%最大遗传代数GGAP=0.9;%代沟XOVR=0.8;%交叉率MUTR=0.6;%变异率gen=0;%代计数器%PNumber工件个数MNumber工序个数[PNumberMNumber]=size(Jm);trace=zeros(2,MAXGEN);%寻优结果的初始值WNumber=PNumber*MN%工序总个数%%初始化Number=zeros(1,PNumber);%PNumber工件个数fori=1:PNumberNumber(i)=MN%MNumber工序个数end%代码2层,第一层工序,第二层机器Chrom=zeros(NIND,2*WNumber);forj=1:NINDWPNumberTemp=Nfori=1:WNumber%随机产成工序val=unidrnd(PNumber);whileWPNumberTemp(val)==0val=unidrnd(PNumber);end%第一层代码表示工序Chrom(j,i)=WPNumberTemp(val)=WPNumberTemp(val)-1;%第2层代码表示机器&&&&&&&&&&&&Temp=Jm{val,MNumber-WPNumberTemp(val)};SizeTemp=length(Temp);%随机产成工序机器Chrom(j,i+WNumber)=unidrnd(SizeTemp);endend%计算目标函数值[PValObjVPS]=cal(Chrom,JmNumber,T,Jm);%%循环寻找whilegenMAXGEN%分配适应度值FitnV=ranking(ObjV);%选择操作SelCh=select('rws',Chrom,FitnV,GGAP);%交叉操作SelCh=across(SelCh,XOVR,Jm,T);%变异操作SelCh=aberranceJm(SelCh,MUTR,Jm,T);%计算目标适应度值[PValObjVSelPS]=cal(SelCh,JmNumber,T,Jm);%重新插入新种群[ChromObjV]=reins(Chrom,SelCh,1,1,ObjV,ObjVSel);%代计数器增加gen=gen+1;%保存最优值trace(1,gen)=min(ObjV);trace(2,gen)=mean(ObjV);%记录最佳值ifgen==1Val1=PVVal2=P;MinVal=min(ObjV);%最小时间STemp=S;end%记录最小的工序ifMinValtrace(1,gen)Val1=PV&&&&&&&&&&&&Val2=P;MinVal=trace(1,gen);STemp=S;endend&&&&&&&&第12章免疫优化算法在物流配送中心选址中的应用.&&&&&&&&1、案例背景&&&&12.1.1物流中心选址问题随着世界经济的快速发展以及现代科学技术的进步,物流业作为国民经济的一个新兴服务部门,正在全球范围内迅速发展。物流业的发展给社会的生产和管理、人们的生活和就业乃至政府的职能以及社会的法律制度等都带来巨大的影响,因此物流业被认为是国民经济发展的动脉和基础产业,被形象地喻为促进经济发展的“加速器”。在物流系统的运作中,配送中心的任务就是根据各个用户的需求及时、准确和经济地配送商品货物。配送中心是连接供应商与客户的中间桥梁,其选址方式往往决定着物流的配送距离和配送模式,进而影响着物流系统的运作效率;另外物流中心的位置一旦被确定,其位置难以再改变。因此,研究物流配送中心的选址具有重要的理论和现实应用意义,一般说来,物流中心选址模型是非凸和非光滑的带有复杂约束的非线性规划模型,属NP-hard问题。12.1.2免疫算法的基本思想生物免疫系统是一个高度进化的生物系统,它旨在区分外部有害抗原和自身组织,从而保持有机体的稳定。从计算的角度来看,生物免疫系统是一个高度并行、分布、自适应和自组织的系统,具有很强的学习、识别和记忆能力。&&&&&&&&2、案例目录&&&&第十二章免疫优化算法在物流配送中心选址中的应用.12.1理论基础12.1.1物流中心选址问题12.1.2免疫算法的基本思想12.2案例背景12.2.1问题描述12.2.2解决思路及步骤12.3MATLAB程序实现12.3.1免疫算法主函数13.3.2多样性评价&&&&&&&&&&&&12.3.3免疫操作12.3.4仿真实验12.4案例扩展12.5参考文献&&&&&&&&3、主程序&&&&%免疫优化算法在物流配送中心选址中的应用%%免疫优化算法求解clcclear%算法基本参数sizepop=50;%种群规模overbest=10;%记忆库容量MAXGEN=100;%迭代次数pcross=0.5;%交叉概率pmutation=0.4;%变异概率ps=0.95;%多样性评价参数length=6;%配送中心数M=sizepop+%step1识别抗原,将种群信息定义为一个结构体individuals='concentration',zeros(1,M),'excellence',zeros(1,M),'chrom',[]);%step2产生初始抗体群individuals.chrom=popinit(M,length);trace=[];%记录每代最个体优适应度和平均适应度%迭代寻优foriii=1:MAXGENiii%step3抗体群多样性评价fori=1:Mindividuals.fitness(i)=fitness(individuals.chrom(i,:));%抗体与抗原亲和度(适应度值)计算individuals.concentration(i)=concentration(i,M,individuals);%抗体浓度计算end%综合亲和度和浓度评价抗体优秀程度,得出繁殖概率individuals.excellence=excellence(individuals,M,ps);%记录当代最佳个体和种群平均适应度[best,index]=min(individuals.fitness);%找出最优适应度bestchrom=individuals.chrom(index,:);%找出最优个体average=mean(individuals.fitness);%计算平均适应度trace=[best,average];%记录&&&&&&&&struct('fitness',zeros(1,M),&&&&&&&&&&&&%step4根据excellence,形成父代群,更新记忆库(加入精英保留策略,可由s控制)bestindividuals=bestselect(individuals,M,overbest);%更新记忆库individuals=bestselect(individuals,M,sizepop);%形成父代群%step6选择,交叉,变异操作,再加入记忆库中抗体,产生新种群individuals=Select(individuals,sizepop);%选择individuals.chrom=Cross(pcross,individuals.chrom,sizepop,length);%交叉individuals.chrom=Mutation(pmutation,individuals.chrom,sizepop,length);%变异individuals=incorporate(individuals,sizepop,bestindividuals,overbest);%加入记忆库中抗体end&&&&&&&&第13章粒子群优化算法的寻优算法&&&&&&&&1、案例背景&&&&&&&&粒子群优化算法(PSO,particleswarmoptimization)是计算智能领域,除了蚁群算法,鱼群算法之外的一种群体智能的优化算法,该算法最早由Kennedy和Eberhart在1995年提出的。PSO算法源于对鸟类捕食行为的研究,鸟类捕食时,找到食物最简单有效的策略就是搜寻当前距离食物最近的鸟的周围区域。PSO算法是从这种生物种群行为特征中得到启发并用于求解优化问题的,算法中每个粒子都代表问题的一个潜在解,每个粒子对应一个由适应度函数决定的适应度值。粒子的速度决定了粒子移动的方向和距离,速度随自身及其他粒子的移动经验进行动态调整,从而实现个体在可解空间中的寻优。PSO算法首先在可行解空间中初始化一群粒子,每个粒子都代表极值优化问题的一个潜在最优解,用位置、速度和适应度值三项指标表示该粒子特征,适应度值由适应度函数计算得到,其值的好坏表示粒子的优劣。粒子在解空间中运动,通过跟踪个体极值Pbest和群体极值Gbest更新个体位置,个体极值Pbest是指个体所经历位置中计算得到的适应度值最优位置,群体极值Gbest是指种群中的所有粒子搜索到的适应度最优位置。粒子每更新一次位置,就计算一次适应度值,并且通过比较新粒子的适应度值和个体极值、群体极值的适应度值更新个体极值Pbest和群体极值Gbest位置。&&&&&&&&&&&&2、案例目录&&&&本案例的目录为:第十三章粒子群优化算法的寻优算法13.1理论基础13.2案例背景13.2.1问题描述13.2.2解决思路及步骤13.3MATLAB程序实现13.3.1PSO算法参数设置13.3.2种群初始化13.3.3初始极值寻找13.3.4迭代寻优13.3.5结果分析13.4延伸阅读13.4.1惯性权重的选择13.4.2变化的算法性能分析.13.5参考文献&&&&&&&&3、主程序&&&&%%迭代寻优fori=1:maxgenforj=1:sizepop%速度更新V(j,:)=V(j,:)+c1*rand*(gbest(j,:)-pop(j,:))+c2*rand*(zbest-pop(j,:));V(j,find(V(j,:)Vmax))=V&&&&&&&&&&&&V(j,find(V(j,:)Vmin))=V%种群更新pop(j,:)=pop(j,:)+V(j,:);pop(j,find(pop(j,:)popmax))=pop(j,find(pop(j,:)popmin))=%适应度值fitness(j)=fun(pop(j,:));endforj=1:sizepop%个体最优更新iffitness(j)fitnessgbest(j)gbest(j,:)=pop(j,:);fitnessgbest(j)=fitness(j);end%群体最优更新iffitness(j)fitnesszbestzbest=pop(j,:);fitnesszbest=fitness(j);endendyy(i)=end&&&&&&&&第14章基于粒子群算法的PID控制器优化设计&&&&&&&&1、案例背景&&&&PID控制器的性能取决于Kp、Ki、Kd这3个参数是否合理,因此,优化PID控制器参数具&&&&&&&&&&&&有重要意义。目前,PID控制器参数主要是人工调整,这种方法不仅费时,而且不能保证获得最佳的性能。PSO已经广泛应用于函数优化、神经网络训练、模式分类、模糊系统控制以及其它应用领域,本案例将使用PSO进行PID控制器参数的优化设计。&&&&&&&&2、案例目录:&&&&第14章基于粒子群算法的PID控制器优化设计14.1案例背景14.1.1粒子群算法原理14.1.2PID控制器优化设计14.2模型建立14.2.1PID控制器模型14.2.2算法流程14.2.2.1优化过程14.2.2.2粒子群算法实现14.3编程实现14.3.1Simulink部分的程序实现14.3.2PSO部分的程序实现14.3.3结果分析14.4案例扩展14.5参考文献&&&&&&&&3、案例实例及结果:&&&&PID控制器的系统结构图如图14-1所示。&&&&&&&&选取的被控对象为以下不稳定系统:&&&&&&&&运行代码,得到优化过程如图14-4和图14-5所示,前者为PID控制器3个参数Kp、Ki、Kd的变化曲线,后者为性能指标ITAE的变化曲线。得到的最优控制器参数及性能指标为Kp=33.6469,Ki=0.1662,Kd=38.8063,ITAE=1.0580,将以上参数代回如图14-2所示的模型,得到的单位阶跃响应曲线如图14-6所示。&&&&&&&&&&&&本案例使用粒子群算法优化PID控制器参数,事实上,其它的优化算法,比如遗传算法、模拟退火算法等,也可以用于PID控制器的参数优化,这里将使用遗传算法(GeneticAlgorithm,GA)对PID控制器进行参数优化。得到的进化过程曲线、最优参数对应的单位阶跃响应曲线分别如图14-7、图14-8所示。&&&&&&&&&&&&4、主程序:&&&&%%清空环境clearclc%%参数设置w=0.6;%惯性因子c1=2;%加速常数c2=2;%加速常数Dim=3;%维数SwarmSize=100;%粒子群规模ObjFun=@PSO_PID;%待优化函数句柄MaxIter=100;MinFit=0.1;Vmax=1;Vmin=-1;Ub=[];Lb=[000];%最大迭代次数%最小适应值&&&&&&&&&&&&%%粒子群初始化Range=ones(SwarmSize,1)*(Ub-Lb);Swarm=rand(SwarmSize,Dim).*Range+ones(SwarmSize,1)*LbVStep=rand(SwarmSize,Dim)*(Vmax-Vmin)+VminfSwarm=zeros(SwarmSize,1);fori=1:SwarmSizefSwarm(i,:)=feval(ObjFun,Swarm(i,:));end%%个体极值和群体极值[bestfbestindex]=min(fSwarm);zbest=Swarm(bestindex,:);gbest=Sfgbest=fSfzbest=%%迭代寻优iter=0;y_fitness=zeros(1,MaxIter);%预先产生4个空矩阵K_p=zeros(1,MaxIter);K_i=zeros(1,MaxIter);K_d=zeros(1,MaxIter);while((iterMaxIter)(fzbestMinFit))forj=1:SwarmSize%速度更新VStep(j,:)=w*VStep(j,:)+c1*rand*(gbest(j,:)-Swarm(j,:))+c2*rand*(zbestSwarm(j,:));ifVStep(j,:)Vmax,VStep(j,:)=VendifVStep(j,:)Vmin,VStep(j,:)=Vend%位置更新Swarm(j,:)=Swarm(j,:)+VStep(j,:);fork=1:DimifSwarm(j,k)Ub(k),Swarm(j,k)=Ub(k);endifSwarm(j,k)Lb(k),Swarm(j,k)=Lb(k);endend%适应值fSwarm(j,:)=feval(ObjFun,Swarm(j,:));%个体最优更新iffSwarm(j)fgbest(j)gbest(j,:)=Swarm(j,:);fgbest(j)=fSwarm(j);end%群体最优更新%全局最佳%个体最佳%个体最佳适应值%全局最佳适应值%初始化粒子群%初始化速度&&&&&&&&%粒子群的适应值&&&&&&&&&&&&iffSwarm(j)fzbestzbest=Swarm(j,:);fzbest=fSwarm(j);endenditer=iter+1;y_fitness(1,iter)=K_p(1,iter)=zbest(1);K_i(1,iter)=zbest(2);K_d(1,iter)=zbest(3);end%%绘图输出figure(1)%绘制性能指标ITAE的变化曲线plot(y_fitness,'LineWidth',2)title('最优个体适应值','fontsize',18);xlabel('迭代次数','fontsize',18);ylabel('适应值','fontsize',18);set(gca,'Fontsize',18);figure(2)%绘制PID控制器参数变化曲线plot(K_p)holdonplot(K_i,'k','LineWidth',3)plot(K_d,'--r')title('Kp、Ki、Kd优化曲线','fontsize',18);xlabel('迭代次数','fontsize',18);ylabel('参数值','fontsize',18);set(gca,'Fontsize',18);legend('Kp','Ki','Kd',1);%迭代次数更新%为绘图做准备&&&&&&&&第15章基于混合粒子群算法的TSP搜索算法&&&&&&&&&&&&1、案例背景&&&&&&&&粒子群算法(ParticleSwarmOptimization,PSO)是Kennedy博士和Eberhart博士在1995年提出的一种基于群体智能的优化算法,它首先初始化一群随机粒子,然后通过迭代寻找问题的最优解,在每一次迭代过程中,粒子通过个体极值和群体极值更新自身的速度和位置。标准粒子群算法通过追随个体极值和群体极值来完成极值寻优的,虽然操作简单,且能够快速收敛,但是随着迭代次数的不断增加,在种群收敛集中的同时,各粒子也越来越相似,可能在局部解周边无法跳出。混合粒子群算法摒弃了传统粒子群算法中的通过跟踪极值来更新粒子位置的方法,而是引入了遗传算法中的交叉和变异操作,通过粒子同个体极值和群体极值的交叉以及粒子自身变异的方式来搜索最优解。&&&&&&&&2、案例目录&&&&本案例的目录为:第十五章基于混合粒子群算法的TSP搜索算法15.1理论基础15.2案例背景15.2.1问题描述15.2.2算法流程15.2.3算法实现15.3MATLAB程序实现15.3.1适应度函数15.3.2粒子初始化15.3.3交叉操作15.3.4变异操作15.3.5仿真结果15.4延伸阅读.15.5参考文献..&&&&&&&&3、主程序&&&&%%循环寻找最优路径forN=1:nMaxN%计算适应度值indiFit=fitness(individual,cityCoor,cityDist);%更新当前最优和历史最优fori=1:indiNumberifindiFit(i)recordPbest(i)recordPbest(i)=indiFit(i);tourPbest(i,:)=individual(i,:);end&&&&&&&&&&&&ifindiFit(i)recordGbestrecordGbest=indiFit(i);tourGbest=individual(i,:&&&&);endend[value,index]=min(recordPbest);recordGbest(N)=recordPbest(index);%%变异操作c1=round(rand*(n-1))+1;%产生变异位c2=round(rand*(n-1))+1;%产生变异位whilec1==c2c1=round(rand*(n-2))+1;c2=round(rand*(n-2))+1;endtemp=xnew1(i,c1);xnew1(i,c1)=xnew1(i,c2);xnew1(i,c2)=%新路径长度变短则接受dist=0;forj=1:n-1dist=dist+cityDist(xnew1(i,j),xnew1(i,j+1));enddist=dist+cityDist(xnew1(i,1),xnew1(i,n));ifindiFit(i)distindividual(i,:)=xnew1(i,:);endend[value,index]=min(indiFit);L_best(N)=indiFit(index);tourGbest=individual(index,:);end&&&&&&&&第16章基于动态粒子群算法的动态环境寻优算&&&&&&&&1、案例背景&&&&&&&&&&&&为了跟踪动态极值,需要对基本的PSO算法进行两方面改进,第一是引入探测机制,使种群或粒子获得感知外部环境变化的能力;第二是引入响应机制,在探测到环境的变化后,采取某种响应方式对种群进行更新,以适应动态环境。基于敏感粒子的动态粒子群算法是一种典型的动态粒子群算法,它在算法初始化时随机选择一个或多个位置,称为敏感粒子,每次迭代中计算敏感粒子适应度值,当发现适应度值变化时,认为环境已发生变化。响应的方式是按照一定比例重新初始化粒子位置和粒子速度。&&&&&&&&2、案例目录&&&&第十六章基于动态粒子群算法的动态环境寻优算法...16.1理论基础...16.1.1动态粒子群算法...16.1.2动态环境...16.2案例背景...16.3MATLAB程序实现...16.3.1动态环境函数...16.3.2种群初始化...16.3.3循环动态寻找...16.3.4仿真结果...16.4延伸阅读...16.4.1.APSO..16.4.2.EPSO..16.4.3TDPSO..16.5参考文献...10&&&&&&&&3、主程序&&&&%%循环寻找最优点fork=1:1200k%新数字地图h=DF1function(X1,Y1,H1,X2(k),Y2(k),H2(k));%敏感粒子变化fori=1:5*nfitnessTest(i)=h(popTest(i,1),popTest(i,2));endoFitness=sum(fitnessTest);%变化超过一定范围,重新初始化ifabs(oFitness-nFitness)1index=randperm(20);pop(index(1:10),:)=unidrnd(501,[10,2]);V(index(1:10),:)=unidrnd(100,[10,2])-50;&&&&&&&&&&&&end%粒子搜索fori=1:Tmaxforj=1:n%速度更新V(j,:)=V(j,:)+floor(rand*(popgbest(j,:)-pop(j,:)))+floor(rand*(popzbest-pop(j,:)));index1=find(V(j,:)Vmax);V(j,index1)=Vindex2=find(V(j,:)Vmin);V(j,index2)=V%个体更新pop(j,:)=pop(j,:)+V(j,:);index1=find(pop(j,:)popMax);pop(j,index1)=popMindex2=find(pop(j,:)popMin);pop(j,index2)=popM%新适应度值fitness(j)=h(pop(j,1),pop(j,2));%个体极值更新iffitness(j)fitnessgbest(j)popgbest(j,:)=pop(j,:);fitnessgbest(j)=fitness(j);end%群体极值更新iffitness(j)fitnesszbestpopzbest=pop(j,:);fitnesszbest=fitness(j);endendendfitnessRecord(k)=fitnesszbest=0;fitnessgbest=zeros(1,20);end&&&&&&&&4、运行结果&&&&&&&&&&&&第17章基于PSO工具箱的函数优化算法&&&&&&&&1、案例背景&&&&&&&&粒子群算法具有操作简单,算法搜索效率较高等优点,该算法对待优化函数没有连续,可微的要求,算法通用性较强,对多变量、非线性、不连续及不可微的问题求解有较大的优势。PSO工具箱由美国北卡罗来纳州立大学航天航空与机械系教授BrianBirge开发,该工具箱将PSO算法的核心部分封装起来,提供给用户的为算法的可调参数,用户只需要定义需要优化的函数,并设置好函数自变量的取值范围、每步迭代允许的最大变化量等,即可进行优化。&&&&&&&&2、案例目录&&&&第十七章基于PSO工具箱的函数寻优算法...17.1理论基础...17.1.1工具箱介绍...17.1.2工具箱函数解释...17.2案例背景...17.2.1问题描述...17.2.2工具箱设置...17.3MATLAB程序实现...17.3.1适应度函数...17.3.2主函数...17.3.3仿真结果...&&&&&&&&&&&&17.4延伸阅读...17.5参考文献...&&&&&&&&3、主程序&&&&Max_V=0.2*(range(:,2)-range(:,1));%最大速度取变化范围的10%~20%n=2;%待优化函数的维数,此例子中仅x、y两个自变量,故为2PSOparams=[.90.250NaN00];pso_Trelea_vectorized('Rosenbrock',n,Max_V,range,0,PSOparams)%调用PSO核心模块&&&&&&&&第18章基于鱼群算法的函数寻优算法&&&&&&&&1、人工鱼群算法原理&&&&人工鱼群算法是李晓磊等人于2002年提出的一类基于动物行为的群体智能优化算法.该算法是通过模拟鱼类的觅食、聚群、追尾、随机等行为在搜索域中进行寻优,是集群体智能思想的一个具体应用.生物的视觉是极其复杂的,它能快速感知大量的空间事物,这对于任何仪器和程序都是难以与之相比的,为了实施的简便和有效,在鱼群模式中应用了如下的方法来实现虚拟人工鱼的视觉:如图5.1所示,一虚拟人工鱼实体的当前位置为,它的视野范围为,位置为其在某时刻的视点所在的位置,如果该位置的食物浓度高于当前位置,则考虑向该位置方向前进一步,即到达位置;如果位置不比当前位置食物浓度更高,则继续巡视视野内的其他位置。巡视的次数越多,则对视野内的状态了解更全面,从而对周围的环境有一个全方面立体的认知,这有助于做出相应的判断和决策,当然,对于状态多或无限状态的环境也不必全部遍历,允许一定的不确定性对于摆脱局部最优,从而寻找全局最优是有帮助的。&&&&&&&&&&&&人工鱼的视野和移动步长其中,位置,位置,则该过程可以表示如下:式中,函数为产生范围(-1,1)之间的随机数,为移动步长。由于环境中同伴的数目是有限的,因此在视野中感知同伴的位置,并相应的调整自身位置的方法与上式类似。&&&&&&&&2、案例目录:&&&&第五章人工鱼群算法1—ARTIFICIALFISHSCHOOLALGORITHM(AFSA)15.1案例背景15.1.1人工鱼群算法原理15.1.2人工鱼群算法的主要行为25.1.3问题的解决25.1.4案例分析25.2模型建立45.2.1变量及函数定义45.2.2算法流程55.2.3人工鱼群算法实现75.2.3.1鱼群初始化75.2.3.2觅食行为75.2.3.4聚群行为75.2.3.5追**为85.2.3.6随机行为95.3编程实现95.3.1鱼群初始化函数95.3.2觅食行为105.3.3聚群行为115.3.4追**为125.3.5食物浓度函数135.3.6案例案例2165.4总结195.4.1人工鱼群算法优点195.4.2算法改进的几个方向195.5参考文献20&&&&&&&&3、案例实例及结果:&&&&案例1:&&&&&&&&&&&&一元函数的优化实例:,该函数的图形如图5.2所示:&&&&&&&&图5.2一元函数图像&&&&&&&&结果:鱼群算法的运行结果如下:&&&&&&&&图5.850次鱼群算法迭代结果&&&&&&&&&&&&图5.9最优解的变化C&&&&&&&&ommandWindow上的运行结果:最优解X:1.85060最优解Y:3.85027Elapsedtimeis1.640857seconds.&&&&&&&&案例2二元函数的优化实例:该函数的图形如图5.3所示:&&&&&&&&图5.3二元函数图像&&&&&&&&&&&&结果:鱼群算法的运行结果如下:&&&&&&&&图5.1050次鱼群算法迭代结果&&&&&&&&图5.11最优解的变化&&&&&&&&CommandWindow上的运行结果:最优解X:-0.18最优解Y:1.00000Elapsedtimeis3.094503seconds.&&&&&&&&&&&&4、主程序&&&&案例1:clcclearallcloseallticfigure(1);holdonezplot('x*sin(10*pi*x)+2',[-1,2]);%%参数设置fishnum=50;%生成50只人工鱼MAXGEN=50;%最多迭代次数try_number=100;%最多试探次数visual=1;%感知距离delta=0.618;%拥挤度因子step=0.1;%步长%%初始化鱼群lb_ub=[-1,2,1];X=AF_init(fishnum,lb_ub);LBUB=[];fori=1:size(lb_ub,1)LBUB=[LBUB;repmat(lb_ub(i,1:2),lb_ub(i,3),1)];endgen=1;BestY=-1*ones(1,MAXGEN);%每步中最优的函数值BestX=-1*ones(1,MAXGEN);%每步中最优的自变量besty=-100;%最优函数值Y=AF_foodconsistence(X);whilegen=MAXGENfprintf(1,'%d\n',gen)fori=1:fishnum[Xi1,Yi1]=AF_swarm(X,i,visual,step,delta,try_number,LBUB,Y);%聚群行为[Xi2,Yi2]=AF_follow(X,i,visual,step,delta,try_number,LBUB,Y);%追**为ifYi1Yi2X(:,i)=Xi1;Y(1,i)=Yi1;elseX(:,i)=Xi2;Y(1,i)=Yi2;endend[Ymax,index]=max(Y);figure(1);plot(X(1,index),Ymax,'.','color',[gen/MAXGEN,0,0])&&&&&&&&&&&&ifYmaxbestybesty=Ybestx=X(:,index);BestY(gen)=Y[BestX(:,gen)]=X(:,index);elseBestY(gen)=BestY(gen-1);[BestX(:,gen)]=BestX(:,gen-1);endgen=gen+1;endplot(bestx(1),besty,'ro','MarkerSize',100)xlabel('x')ylabel('y')title('鱼群算法迭代过程中最优坐标移动')figureplot(1:MAXGEN,BestY)xlabel('迭代次数')ylabel('优化值')title('鱼群算法迭代过程')disp(['最优解X:',num2str(bestx,'%1.5f')])disp(['最优解Y:',num2str(besty,'%1.5f')])toc案例2:clcclearallcloseallticfigure(1);holdon%%参数设置fishnum=100;%生成50只人工鱼MAXGEN=50;%最多迭代次数try_number=100;%最多试探次数visual=1;%感知距离delta=0.618;%拥挤度因子step=0.1;%步长%%初始化鱼群lb_ub=[-10,10,2;];X=AF_init(fishnum,lb_ub);LBUB=[];fori=1:size(lb_ub,1)LBUB=[LBUB;repmat(lb_ub(i,1:2),lb_ub(i,3),1)];end&&&&&&&&&&&&gen=1;BestY=-1*ones(1,MAXGEN);%每步中最优的函数值BestX=-1*ones(2,MAXGEN);%每步中最优的自变量besty=-100;%最优函数值Y=AF_foodconsistence(X);whilegen=MAXGENfprintf(1,'%d\n',gen)fori=1:fishnum[Xi1,Yi1]=AF_swarm(X,i,visual,step,delta,try_number,LBUB,Y);%聚群行为[Xi2,Yi2]=AF_follow(X,i,visual,step,delta,try_number,LBUB,Y);%追**为ifYi1Yi2X(:,i)=Xi1;Y(1,i)=Yi1;elseX(:,i)=Xi2;Y(1,i)=Yi2;endend[Ymax,index]=max(Y);figure(1);plot(X(1,index),X(2,index),'.','color',[gen/MAXGEN,0,0])ifYmaxbestybesty=Ybestx=X(:,index);BestY(gen)=Y[BestX(:,gen)]=X(:,index);elseBestY(gen)=BestY(gen-1);[BestX(:,gen)]=BestX(:,gen-1);endgen=gen+1;endplot(bestx(1),bestx(2),'ro','MarkerSize',100)xlabel('x')ylabel('y')title('鱼群算法迭代过程中最优坐标移动')figureplot(1:MAXGEN,BestY)xlabel('迭代次数')ylabel('优化值')title('鱼群算法迭代过程')disp(['最优解X:',num2str(bestx','%1.5f')])disp(['最优解Y:',num2str(besty,'%1.5f')])toc&&&&&&&&&&&&第19章基于模拟退火算法的TSP算法&&&&&&&&1、案例背景&&&&模拟退火算法(SimulatedAnnealing,简称SA)的思想最早是由Metropolis等提出的。其出发点是基于物理中固体物质的退火过程与一般的组合优化问题之间的相似性。模拟退火法是一种通用的优化算法,其物理退火过程由以下三部分组成:(1)加温过程。其目的是增强粒子的热运动,使其偏离平衡位置。当温度足够高时,固体将熔为液体,从而消除系统原先存在的非均匀状态。(2)等温过程。对于与周围环境交换热量而温度不变的封闭系统,系统状态的自发变化总是朝自由能减少的方向进行的,当自由能达到最小时,系统达到平衡状态。(3)冷却过程。使粒子热运动减弱,系统能量下降,得到晶体结构。其中,加温过程对应算法的设定初温,等温过程对应算法的Metropolis抽样过程,冷却过程对应控制参数的下降。这里能量的变化就是目标函数,我们要得到的最优解就是能量最低态。其中Metropolis准则是SA算法收敛于全局最优解的关键所在,Metropolis准则以一定的概率接受恶化解,这样就使算法跳离局部最优的陷阱。&&&&&&&&2、案例目录:&&&&第19章基于模拟退火算法的TSP算法19.1理论基础19.1.1模拟退火算法基本原理19.1.2TSP问题介绍19.2案例背景19.2.1问题描述19.2.2解决思路及步骤19.2.2.1算法流程19.2.2.2模拟退火算法实现1.控制参数的设置2.初始解3.解变换生成新解4.Metropolis准则5.降温19.3MATLAB程序实现19.3.1计算距离矩阵19.3.2初始解19.3.3生成新解&&&&&&&&&&&&19.3.4Metropolis准则函数19.3.5画路线轨迹图19.3.6输出路径函数19.3.7可行解路线长度函数19.3.8模拟退火算法主函数19.3.9结果分析19.4延伸阅读19.4.1模拟退火算法的改进19.4.2算法的局限性19.5参考文献&&&&&&&&3、主程序:&&&&%%ticT0=1000;%初始温度Tend=1e-3;%终止温度L=200;%各温度下的迭代次数(链长)q=0.9;%降温速率loadCityPosition1;%加载数据%%D=Distanse(X);%计算距离矩阵N=size(D,1);%城市的个数%%初始解S1=randperm(N);%随机产生一个初始路线%%画出随机解的路径图DrawPath(S1,X)pause(0.0001)%%输出随机解的路径和总距离disp('初始种群中的一个随机值:')OutputPath(S1);Rlength=PathLength(D,S1);disp(['总距离:',num2str(Rlength)]);%%计算迭代的次数TimeTime=ceil(double(solve([')^x}

我要回帖

更多关于 衡量算法的主要指标 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信