GA函数的最大值寻优
- 格式:ppt
- 大小:135.00 KB
- 文档页数:7
基于GA-SVM的高压输电线路弧垂预测模型姬波;杨文东;张驰;卢红星;安致嫄【摘要】导线弧垂是反映输电线路运行状态的重要参数之一,为了预知和预警高压输电线路弧垂的变化,提出了一种基于遗传算法(genetic algorithm,GA)特征自适应赋权的支持向量机(support vector machine,SVM),预测输电线路弧垂的方法(GA-SVM).该方法主要分为两个阶段,首先使用GA对实验数据自适应赋权,以突出重要属性,抑制冗余或次要属性,然后使用SVM预测输电线路弧垂.实验结果表明,该方法在预测输电线路弧垂方面是可行有效的,并且优于贝叶斯(Bayes)算法、K-最近邻算法(KNN)、决策树算法和BPNN神经网络算法.【期刊名称】《郑州大学学报(理学版)》【年(卷),期】2018(050)004【总页数】7页(P94-100)【关键词】输电线路;弧垂;遗传算法;特征赋权;支持向量机【作者】姬波;杨文东;张驰;卢红星;安致嫄【作者单位】郑州大学信息工程学院河南郑州450001;郑州大学信息工程学院河南郑州450001;郑州大学信息工程学院河南郑州450001;郑州大学信息工程学院河南郑州450001;国网河南省电力公司信息通信公司通信运行部河南郑州450000【正文语种】中文【中图分类】TP391.40 引言高压输电线路的弧垂是反映线路安全运行的重要参数,也是输电线路在线监测和动态增容重点关注的指标之一[1-2],当前国内外都非常重视输电线路弧垂的监测研究. 现有弧垂的监测方法主要有:图像技术法[3],GPS监测法[4],倾斜角法[5]以及通过导线温度和应力测量弧垂[6-7]等. 但是,除了实时监测弧垂变化外,预知和预警弧垂变化也是一个亟待解决的问题,目前还未见有这方面相关的研究.SVM是一种基于统计学习理论的机器学习算法,已被广泛应用到现代经济和工业领域中[8]. 文献[9]通过支持向量回归算法建立股票分析模型,对股票价格进行预测分析.文献[10]应用支持向量机算法对混凝土抗压强度进行预测.文献[11]采用支持向量回归算法对山西月度最大电力负荷进行预测.文献[12]进行项目控制预测. 因为线路运行的电压、电流、导线的温度,以及周围环境的温度、风速、湿度等都会造成输电线路弧垂的变化[13]. 本文提出一种基于GA特征自适应赋权的SVM预测高压输电线路弧垂的方法(GA-SVM). 该方法主要分为两个阶段:1) 根据每个属性对弧垂影响的重要程度不同,使用GA自适应对特征赋权,以突出重要属性,抑制次要或冗余属性. 2) 以第一阶段处理过的数据作为SVM的输入,对弧垂进行预测分析. 实证研究表明,本文提出的基于GA-SVM预测高压输电线路弧垂的方法是可行和有效的,并且其预测精度优于Bayes算法、KNN算法、决策树算法和BPNN神经网络算法.1 背景1.1 输电线路弧垂输电线路任一点的弧垂是指该点与悬线两端连线的铅锤距离,通常所说的弧垂是指一个档距导线段的最大弧垂. 输电线路的弧垂是线路设计和安全运行的重要指标,弧垂过小,会导致输电线应力过大,影响输电线路的机械安全;弧垂过大,将导致输电线距离地面太低,会造成对地放电的危险. 因此必须保证弧垂在规定的安全范围内.1.2 支持向量机SVM在构造最优分类超平面时,采用迭代训练算法来减小误差函数. SVM分类模型可以描述为一个数学优化问题,所用公式为(1)其中:w为权值向量;c是惩罚系数;ξ是处理不可分数据时的松弛变量;b是偏置量;φ(x)是一个非线性的映射函数,将输入样本映射到高维特征空间.最终,求得SVM分类决策函数为其中K(x, y)是核函数.常用的核函数有多项式核函数、Sigmoid核函数、径向基核函数等. 本文采用径向基核函数,K(x,y)=e-‖x-y‖2/2σ2.2 基于GA-SVM的高压输电线路弧垂预测模型2.1 离散化方法输电线路弧垂是连续属性,但有时候预测弧垂属于哪一个范围比预测弧垂的确切值更有意义. 所以本实验采用等宽离散化方法把弧垂离散化为N个区间.等宽离散化方法是一种典型的无监督离散化方法,是将属性的值域划分为具有相同宽度区间.等宽离散化算法过程如下所示.输入:属性A,A的个数为M,离散区间个数为N;输出:离散化后的属性为F.1) 计算A的最大值MAX和最小值MIN.2) 计算属性A的离散区间宽度W=(MAX-MIN)/N.3) F=A4) For i in M do5) For j in N do6) If Ai<=MIN +j*W7) Fi=j8) Else9) Continue10) End11) End12) Return F.2.2 特征变换特征(属性)变换是指用于属性变量的全体或部分的变换. 主要包括两种变换类型:函数变换和标准化(规范化). 函数变换是指用一个简单数学函数分别作用于变量的每一个值. 假设x是属性变量,常用的函数变换有xk、log (x)、sin (x)、tan (x)、1/x等. 标准化的目的是使属性整体值的集合具有特定的性质. 特征变换的主要作用包括:1) 将不具有正态分布的数据变换为正态分布;2) 避免较大值域的变量左右计算结果. 根据实验数据分布特征,本文采用标准化变换,所用公式为其中:为均值;s为均方差. 创建了1个具有均值为0和标准差为1的新变量x′.为了与标准化变换方法的实验效果对比,本文给出max-min变换法和反正切函数变换法. max-min变换法为x′=(x-Minvalue)/(Maxvalue-Minvalue),变化后的值域为[0,1];反正切函数变换法为x′=(2arctan (x))/π,变换后的值域为[-1, 1].2.3 基于GA特征自适应赋权特征权重可以有效提高模型的精确度[14-15]. 特征权重是对数据的各个特征赋予不同的重要程度,从而达到突出重要特征,抑制次要特征或冗余特征.主要有以下3种方法:1) 单一权重方法赋权;2) 综合权重方法赋权;3) 自适应赋权. 自适应赋权是一种客观的赋权方法,不需要人为干预,能更有效地搜索重要特征,抑制次要特征或冗余特征提高模型精度[16-17]. 本文采用基于GA的特征自适应赋权方法. GA是一种求解问题高效并行的全局自适应搜索方法[18],以自然选择和遗传理论为基础,在搜索过程中自动获取和积累有关搜索空间知识,并自适应地控制搜索过程以求得最优解. 利用遗传算法实现特征自动赋权步骤如下.1) 基因编码. 本文采用表达精确的浮点数编码方法.2) 种群初始化. 随机生成M个染色体组成一个群体,群体内个体的数量即是群体规模,每个初始个体即表示问题的初始解.3) 计算个体的适应度. 适应度函数是唯一评价个体好坏的标准. 在GA寻优过程中,一个良好的适应度函数能够指导寻优的方向. 为了保证GA能搜索到最优的特征权值,定义的适应度函数为Fitness=N′/N,其中:N′表示进行特征赋权后,能够正确分类训练实例的个数;N表示用于训练实例的总个数.4) 选择. 选择的目的是从当前种群中选出优良的个体为父代. 根据个体的适应度,适应度大的个体被选中的概率大. 本文采用轮盘赌方法选择优良的个体,设种群的大小为M,每个个体的适应度为Fi,则个体i被选中的概率为5) 交叉. 交叉是遗传算法中最主要的遗传操作,且是产生新个体的主要方式之一.本文采用分散交叉法.6) 变异. 变异是模拟生物进化中的基因突变,它使GA在接近最优解邻域时能够加速向最优解收敛. 本文选用高斯函数作为变异函数.为了对比实验效果,本文在此给出另外两种经常使用的特征赋权方法:互信息权重和熵权重. 互信息是信息论中对有用信息的度量,可以看作一个随机变量中包含的另一个随机变量的信息量,包含的信息量越多则权重越大;熵是对信息不确定性的度量,不确定性越大熵值越高,则权重越大. 实验数据集的属性集合为{X1,X2,…,Xn},类标属性为Y,令p(xi)为属性Xi的概率分布,p(xi, yi)为属性Xi和Yi之间的联合概率分布,m为属性的个数. 则属性的互信息权重为熵权重为2.4 GA-SVM预测高压输电线路弧垂方法本文所提出的输电线路弧垂预测模型是一个多阶段的过程:包括数据的特征变换,GA特征自适应赋权,支持向量机预测弧垂,性能评价. GA-SVM预测输电线路弧垂算法过程如下.输入:训练数据集Train_set,测试集Test_set;输出:弧垂预测值L.1) 使用标准化特征变换方法处理训练数据集Train_set,得到Train_set1.2) 使用遗传算法自适应计算Train_set1的特征权重,得到Train_set2.3) 使用Train_set2作为SVM的输入,训练SVM.4) 把测试集Test_set输入到训练好的SVM模型中.5) 得到弧垂预测值L.3 实验3.1 实验数据集实验数据取自郑州市某电力公司,共1 502条记录,每条记录包括6个属性:输电线路温度、环境温度、环境风速、环境湿度、载荷电流、输电线路弧垂. 本实验以前5个属性作为GA-SVM算法的输入属性,输电线路弧垂作为预测属性.3.2 实验性能评估方法实验评估中采用10次十折交叉验证结果的平均正确率,作为GA-SVM预测输电线路弧垂方法的效果评估方法.十折交叉验证方法将数据集随机分成10份,轮流将其中1份作为测试集,另外9份合并作为训练集. 平均正确率的计算方法为其中:m为十折交叉验证次数;n为实验次数;rightnum为测试集中正确分类的记录数目;num为测试集中的总记录数目.3.3 实验结果在本实验中,使用台湾大学林智仁教授开发的LIBSVM工具箱进行输电线路弧垂预测. 其中,支持向量机类型选择c-SVC,核函数选择径向基函数,惩罚系数c和内核参数g使用网格搜索算法进行寻优. 网格搜索算法是支持向量机参数寻优常用的一种方法,它将待选取的参数限定在一定的取值范围内,然后将参数按一定的步长分割成一个个网格,同时按次序遍历网格内的所有点,从而获取最优参数组合. 网格搜索算法得到的最优参数组合为:惩罚系数c=2 048,内核参数g=0.007 812 5.3.3.1 不同离散化区间个数的实验结果表1给出了5种不同等宽离散化区间个数的10次十折实验结果. 从表1可以看出,随着类标属性离散化区间个数的增加,输电线路弧垂的预测准确率逐渐下降. 弧垂离散化为3箱的10次十折平均预测准确率为76.68%,比离散化为7箱的平均预测准确率59.95%高16.73%. 但是较少的区间划分不能充分反应弧垂的变化,而较多的区间划分准确率又太低. 所以综合考虑输电线路弧垂的分布状态,本实验把弧垂等宽离散化分为5个区间.3.3.2 特征变换后的实验结果表2给出了4种特征变换的10次十折实验结果,包括未进行特征变换的SVM方法,MAX-MIN特征变换的SVM方法,反正切特征变换的SVM方法和标准化特征变换的SVM方法. 从中可以看出:1) 未进行特征变换的SVM方法10次十折平均正确率是71.38%,比MAX-MIN 特征变换和反正切特征变换的SVM方法平均正确率分别高11.91%和13.16%,比标准化特征变换的SVM方法平均正确率75.10%低3.72%. 这说明合理的特征变换能够提高弧垂的预测精度,不当的特征变换则降低预测精度.2) 标准化特征变换的SVM方法10次十折平均正确率最高,比未进行特征变换的SVM方法提高3.72%,比MAX-MIN特征变换和反正切特征变换的SVM方法分别提高15.63%和16.88%. 这说明本文采用的标准化特征变换方法能够更加准确地描述实验数据特征,从而提升弧垂的预测正确率.表1 5种不同离散化区间个数的实验结果对比Tab.1 Experimental resultscomparison of five different discre-tization intervals %实验次数34567176.36 75.44 70.57 64.11 59.99 276.63 75.37 70.70 63.84 59.72 377.49 76.03 71.24 64.72 59.59 477.23 74.71 71.51 64.38 59.52 575.83 73.96 71.77 64.25 60.65 676.96 75.03 72.63 63.71 60.65 776.57 75.43 71.64 64.45 59.19 876.70 74.90 71.30 65.31 59.46 976.70 75.64 70.83 63.51 60.25 1076.30 75.23 71.57 64.72 60.46 AVG76.68 75.17 71.38 64.30 59.95表2 4种不同特征变换方法的实验结果对比Tab.2 Experimental results comparison of four different feature transformation methods %实验次数未变换MAX-MIN变换反正切变换标准化变换170.57 59.6558.26 75.90 270.70 59.3257.79 74.70 371.24 59.7858.66 74.96 471.51 59.6558.05 74.43 571.77 59.5258.39 75.43 672.63 59.1258.05 75.70 771.64 59.7258.45 74.90 871.30 59.4558.19 74.83 970.83 59.2657.52 75.10 1071.57 59.1958.79 75.03AVG71.38 59.4758.22 75.103.3.3 特征加权后的实验结果上述实验说明本文提出的标准化特征变换是最佳的特征变换方法,在此基础上,我们采用特征加权方法对实验数据赋权,以突出重要属性,抑制冗余或次要属性. 表3给出了标准化特征变换并加权后的实验结果. 从表3中可以看出:GA自适应特征赋权方法10次十折实验平均正确率最高,比未加权方法提高2.68%,比熵权重方法提高3.32%,比互信息权重方法提高3.5%. 这说明GA自适应特征赋权方法能够进一步突出重要属性,抑制冗余或次要属性,从而提高SVM预测输电线路弧垂的精度.为了更详细地分析特征权重对实验结果的影响,在图1和图2中分别给出了10组十折实验的第1组和第2组GA权重、互信息权重和熵权重的正确率曲线. 可以看出:表3 标准化特征变换并加权后的实验结果对比Tab.3 Experimental resultscomparison of standardized feature transformation and weighting %实验次数未加权熵权重互信息权重GA175.90 73.44 74.16 77.23 274.70 74.57 73.96 77.90 374.96 74.43 73.97 77.89 474.43 74.30 73.97 78.10 575.43 74.83 75.10 78.56 675.70 74.90 73.50 77.77 774.90 74.83 74.23 77.50 874.83 74.09 74.90 77.36 975.10 74.37 74.70 78.10 1075.03 74.84 74.30 77.43 AVG75.10 74.46 74.28 77.781) 在第1组的10个数据集上,GA权重在其中的6个数据集上优于互信息权重,在1个数据集上等于互信息权重,在2个数据集上低于互信息权重;GA权重在其中的7个数据集上优于熵权重,在3个数据集上低于熵权重.2) 在第2组的10个数据集上,GA权重在其中的8个数据集上优于互信息权重,在1个数据集上等于互信息权重,在1个数据集上低于互信息权重;GA权重在其中的9个数据集上优于熵权重,在1个数据集上低于熵权重.3) GA权重的效果在总体上优于互信息权重和熵权重,更适合用于本实验数据集进行特征赋权,以突出重要属性,抑制冗余或次要属性.图1 第1组3种特征权重方法正确率曲线对比Fig.1 Correctness curve comparison of three kinds feature weighting methods in the first group图2 第2组3种特征权重方法正确率曲线对比Fig.2 Correctness curve comparison of three kinds feature weighting methods in the second group 3.3.4 与其他机器学习算法实验对比为了验证本文所提出方法的有效性,图3给出了贝叶斯算法、KNN算法、决策树算法、BPNN神经网络算法和本文提出的GA-SVM方法的10次十折实验的正确率对比柱状图. 贝叶斯算法输入特征离散化采用等宽离散化方法,图中所示Bayes_9表示将每个属性分别离散为9箱后的实验结果. KNN算法的输入属性采用标准化方法变换,图中所示KNN_9表示KNN算法采用9近邻. 图中所示Tree表示决策树采用CART算法. BPNN神经网络采用3层网状结构,5个输入节点,10个隐藏层节点,5个输出节点,激活函数选用logsig和purelin,网络训练函数选用traingdm. 图中所示BPNN_0.3表示神经网络采用0.3作为学习速率训练BPNN模型. 从图3中可以看出,参与比较的5种算法中,本文所提出的GA-SVM算法预测输电线路弧垂的10次十折正确率均是最优,且明显高于其他4种算法.图3 5种算法最优结果对比Fig.3 Five algorithms optimal results comparison 4 结束语针对在预测高压输电线路弧垂方面,还未见有相关的研究,本文提出一种基于GA 特征自适应赋权的SVM预测高压输电线路弧垂方法(GA-SVM). 该方法首先使用GA给实验数据自适应赋权,以突出重要属性,抑制冗余或次要属性,然后再使用SVM预测输电线路弧垂. 实证结果表明,本文提出的GA-SVM预测输电线路弧垂的方法是可行有效的,并且优于Bayes算法、KNN算法、决策树算法和BPNN 算法. GA-SVM算法模型还有一些不足和待完善的地方,如引入更多和输电线路相关的属性特征,研究不同的SVM参数选择方法对实验精度的影响等.参考文献:【相关文献】[1] 王红斌,陈扬,高雅,等. 输电线路弧垂对动态增容的影响[J].华北电力大学学报(自然科学版),2014, 41(2): 41-46.[2] 王孔森,孙旭日,盛戈皞,等. 架空输电线路导线弧垂在线监测误差分析及比较方法[J].高压电网,2014,50(4):27-34.[3] 王礼田,邵凤莹,萧宝瑾. 基于双目视觉稀疏点云重建的输电线路弧垂测量方法[J].太原理工大学学报, 2016,47(6):747-751.[4] 董晓虎,易东. 基于北斗卫星差分定位技术的输电线路弧垂监测[J].电子设计工程,2015,23(19):41-42.[5] 陈思明,闫斌,周小佳,等. 基于倾角的输电线路弧垂三维模型算法研究[J].计算机应用与软件, 2014,31(3):82-84.[6] 姚陈果,张磊,李成祥,等. 基于力学分析和弧垂测量的导线覆冰厚度测量方法[J].高电压技术, 2013,39(5):1204-1209.[7] 张江华. 高压输电线路弧垂在线监测研究[D].武汉:华中科技大学,2012.[8] SUGANYADEVI M V, BABULAL C K. Support vector regression model for the prediction of loadability margin of a power system[J]. Applied soft computing, 2014,24:304-315. [9] WANG J Z, HOU R, WANG C,et al. Improved v-support vector regression model based on variable selection and brain storm optimization for stock price forecasting[J]. Applied soft computing, 2016,49:164-178.[10] 靳江伟, 董春芳, 冯国红. 基于灰色关联支持向量机的混凝土抗压强度预测[J].郑州大学学报(理学版), 2015,47(3):59-63.[11] 尹立. 基于支持向量机的某区域电网电力需求的预测研究[D].北京:北京交通大学, 2014.[12] WAUTERS M, VANHOUCKE M. Support vector machine regression for project control forecasting [J]. Automation in constuction, 2014,47:92-106.[13] MALHARA S, VITTAL V. Mechanical state estimation of overhead transmission lines using tilt sensors[J]. IEEE transactions on power systems, 2010,25(3):1282-1290.[14] DIALAMEH M, JAHROMI M Z. A general feature-weighting function for classification problems[J].Expert systems with applications, 2017,72:177-188.[15] 姬波. 信息瓶颈方法的特征权重研究[D].郑州:郑州大学, 2013.[16] PHAN A V, NGUYEN M L, BUI L T. Feature weighting and SVM parameters optimization based on genetic algorithms for classification problems[J]. Applied intelligence, 2017, 46(2):455-469.[17] PENG L Z, ZHANG H L, ZHANG H B,et al. A fast feature weighting algorithm of data gravitation classification[J]. Information sciences, 2017, 375:54-78.[18] 田晋跃, 王晨阳, 李得志. 基于遗传算法的某工程车辆起步特性研究[J].郑州大学学报(理学版), 2016, 48(2):121-126.。
基于遗传算法的函数寻优算法龙源期刊⽹ /doc/198723271.html基于遗传算法的函数寻优算法作者:沈晓芳来源:《课程教育研究·上》2015年第03期【摘要】遗传算法对问题的依赖性⼩,是⼀种全局优化算法,可⽤于函数寻优。
本⽂利⽤Maflab优化⼯具箱,有效地实现了⽤遗传算法求解函数优化问题,实验结果表明该算法收敛速度快,寻优性能良好。
【关键词】遗传算法函数寻优⽬标函数【中图分类号】G64 【⽂献标识码】A 【⽂章编号】2095-3089(2015)03-0152-01遗传算法(Genetic Algorithm,GA)起始于20世纪60年代,主要由美国密执根⼤学的John Holland与同事和学⽣研究形成了较为完整的理论和⽅法,是⼀种重要的现代优化算法。
遗传算法对问题的依赖性⼩,是⼀种全局优化算法,所以在很多领域获得了⼴泛的应⽤。
遗传算法基本思想:将“优胜劣汰,适者⽣存”的⽣物进化思想引⼊优化参数形成的编码串联群体中,按所选择的适配值函数并通过遗传中的选择、交叉及变异对个体进⾏筛选,使适配值⾼的个体被保留下来,组成新的群体,这样周⽽复始,群体中的个体适应度不断升⾼,直到满⾜⼀定的条件。
遗传算法的⼀个重要应⽤是函数寻优,该算法对于寻优的函数基本⽆限制,既不要求函数连续,更不要求函数可微;既可以是函数解析式所表达的显函数,⼜可以是映射矩阵等隐函数,应⽤范围很⼴。
⼀、遗传算法的实现1.遗传算法的应⽤步骤(1)确定决策变量及各种约束条件,即确定出个体的表现型和问题的解空间。
(2)建⽴优化模型,即确定出⽬标函数的类型及数学描述形式或量化⽅法。
(3)确定表⽰可⾏解的染⾊体编码⽅法,即确定出个体的基因型及遗传算法的搜索空间。
(4)确定解码⽅法,即确定出由个体基因型到个体表现型的对应关系或转化⽅法。
(5)确定个体适应度的量化评价⽅法,即确定出由⽬标函数值到个体适应度函数的转换规则。
(6)设计遗传算⼦,即确定选择运算、交叉运算、变异运算等算⼦的具体操作⽅法。
遗传算法原理
遗传算法(Genetic Algorithm, GA)是一种进行寻优的计算机算法,它模拟了生物学中的遗传进化过程,以解决复杂的优化问题。
遗传算法以可解释的方式,模拟了自然界中物种进化的过程,该算法是基于遗传学原理,被广泛应用于计算机科学和人工智能领域,通常用于解决复杂的优化问题,如函数优化,规划,调度等。
遗传算法的基本思想是:模拟生物种群的进化过程,通过这个过程,使“更有效的染色体”在种群中得到更多的保留,而“较差的染色体”被淘汰。
染色体的变异也可以提供更好的适应性,从而引入新的染色体,从而改善种群的适应性。
遗传算法一般由以下步骤组成:初始化种群,评估染色体的适应性,选择优良的染色体,交叉,变异,替换,重复上述步骤,直至满足结束条件。
遗传算法的优势在于它可以解决复杂的优化问题,而且它具有可靠性,可重复性,适应性,可扩展性和可解释性。
此外,它还可以有效地避免局部最优解,因为它模拟了自然进化的过程,可以自动搜索和探索全局最优解。
总之,遗传算法是一种用于解决复杂优化问题的有效算法,它模拟了自然界中物种进化的过程,可以有效解决全局最优解问题,具有
可靠性,可重复性,适应性,可扩展性和可解释性。
主程序%% GAclc % 清屏clear all; % 删除workplace变量close all; % 关掉显示图形窗口warning off%% 参数初始化popsize=100; %种群规模lenchrom=7; %变量字串长度pc=0.7; %设置交叉概率,本例中交叉概率是定值,若想设置变化的交叉概率可用表达式表示,或从写一个交叉概率函数,例如用神经网络训练得到的值作为交叉概率pm=0.3; %设置变异概率,同理也可设置为变化的maxgen=100; % 进化次数%种群popmax=50;popmin=0;bound=[popminpopmax;popminpopmax;popminpopmax;popminpopmax;popminpopmax;popminpopmax;popm inpopmax]; %变量范围%% 产生初始粒子和速度fori=1:popsize%随机产生一个种群GApop(i,:)=Code(lenchrom,bound); %随机产生个体%计算适应度fitness(i)=fun(GApop(i,:)); %染色体的适应度end%找最好的染色体[bestfitnessbestindex]=min(fitness);zbest=GApop(bestindex,:); %全局最佳gbest=GApop; %个体最佳fitnessgbest=fitness; %个体最佳适应度值fitnesszbest=bestfitness; %全局最佳适应度值%% 迭代寻优fori=1:maxgeni%种群更新GA选择更新GApop=Select2(GApop,fitness,popsize);% 交叉操作GAGApop=Cross(pc,lenchrom,GApop,popsize,bound);% 变异操作GA变异GApop=Mutation(pm,lenchrom,GApop,popsize,[imaxgen],bound);pop=GApop;for j=1:popsize%适应度值if0.072*pop(j,1)+0.063*pop(j,2)+0.057*pop(j,3)+0.05*pop(j,4)+0.032*pop(j,5)+0.0442*pop(j,6)+0.0675*pop(j,7) <=264.4if128*pop(j,1)+78.1*pop(j,2)+64.1*pop(j,3)+43*pop(j,4)+58.1*pop(j,5)+36.9*pop(j,6)+50.5*pop(j,7)<=69719 fitness(j)=fun(pop(j,:));endend%个体最优更新if fitness(j) <fitnessgbest(j)gbest(j,:) = pop(j,:);fitnessgbest(j) = fitness(j);end%群体最优更新if fitness(j) <fitnesszbestzbest = pop(j,:);fitnesszbest = fitness(j);endendyy(i)=fitnesszbest;end%% 结果disp '*************best particle number****************'zbest%%plot(yy,'linewidth',2);title(['适应度曲线' '终止代数=' num2str(maxgen)]);xlabel('进化代数');ylabel('适应度');grid on子程序funfunction y = fun(x)y=0.072*x(1)+0.063*x(2)+0.057*x(3)+0.05*x(4)+0.032*x(5)+0.0442*x(6)+0.0675*x(7);Mutationfunction ret=Mutation(pmutation,lenchrom,chrom,sizepop,pop,bound)% 本函数完成变异操作% pcorss input : 变异概率% lenchrom input : 染色体长度% chrom input : 染色体群% sizepop input : 种群规模% pop input : 当前种群的进化代数和最大的进化代数信息% ret output : 变异后的染色体fori=1:sizepop% 随机选择一个染色体进行变异pick=rand;while pick==0pick=rand;endindex=ceil(pick*sizepop);% 变异概率决定该轮循环是否进行变异pick=rand;if pick>pmutationcontinue;endflag=0;while flag==0% 变异位置pick=rand;while pick==0pick=rand;endpos=ceil(pick*sum(lenchrom)); %随机选择了染色体变异的位置,即选择了第pos个变量进行变异v=chrom(i,pos);v1=v-bound(pos,1);v2=bound(pos,2)-v;pick=rand; %变异开始if pick>0.5delta=v2*(1-pick^((1-pop(1)/pop(2))^2));chrom(i,pos)=v+delta;elsedelta=v1*(1-pick^((1-pop(1)/pop(2))^2));chrom(i,pos)=v-delta;end %变异结束flag=test(lenchrom,bound,chrom(i,:)); %检验染色体的可行性endendret=chrom;Crossfunction ret=Cross(pcross,lenchrom,chrom,sizepop,bound)%本函数完成交叉操作% pcorss input : 交叉概率% lenchrom input : 染色体的长度% chrom input : 染色体群% sizepop input : 种群规模% ret output : 交叉后的染色体fori=1:sizepop% 随机选择两个染色体进行交叉pick=rand(1,2);while prod(pick)==0pick=rand(1,2);endindex=ceil(pick.*sizepop);% 交叉概率决定是否进行交叉pick=rand;while pick==0pick=rand;endif pick>pcrosscontinue;endflag=0;while flag==0% 随机选择交叉位置pick=rand;while pick==0pick=rand;endpos=ceil(pick.*sum(lenchrom)); %随机选择进行交叉的位置,即选择第几个变量进行交叉,注意:两个染色体交叉的位置相同pick=rand; %交叉开始v1=chrom(index(1),pos);v2=chrom(index(2),pos);chrom(index(1),pos)=pick*v2+(1-pick)*v1;chrom(index(2),pos)=pick*v1+(1-pick)*v2; %交叉结束flag1=test(lenchrom,bound,chrom(index(1),:)); %检验染色体1的可行性flag2=test(lenchrom,bound,chrom(index(2),:)); %检验染色体2的可行性if flag1*flag2==0flag=0;else flag=1;end %如果两个染色体不是都可行,则重新交叉endendret=chrom;Codefunction ret=Code(lenchrom,bound)%本函数将变量编码成染色体,用于随机初始化一个种群% lenchrom input : 染色体长度% bound input : 变量的取值范围% ret output: 染色体的编码值flag=0;while flag==0pick=rand(1,lenchrom);ret=bound(:,1)'+(bound(:,2)-bound(:,1))'.*pick; %线性插值flag=test(lenchrom,bound,ret); %检验染色体的可行性endSelect2function ret=Select(individuals,fitness,sizepop)% 本函数对每一代种群中的染色体进行选择,以进行后面的交叉和变异% individuals input : 种群信息% fitness input : 适应度% sizepop input : 种群规模% opts input : 选择方法的选择% ret output : 经过选择后的种群fitness= 1./(fitness);sumfitness=sum(fitness);sumf=fitness./sumfitness;index=[];for i=1:sizepop %转sizepop次轮盘pick=rand;while pick==0pick=rand;endfor j=1:sizepoppick=pick-sumf(j);if pick<0index=[index j];break; %寻找落入的区间,此次转轮盘选中了染色体i,注意:在转sizepop次轮盘的过程中,有可能会重复选择某些染色体endendendindividuals=individuals(index,:);fitness=fitness(index);ret=individuals;testfunction flag=test(lenchrom,bound,code)% lenchrom input : 染色体长度% bound input : 变量的取值范围% code output: 染色体的编码值flag=1;[n,m]=size(code);fori=1:nif code(i)<bound(i,1) || code(i)>bound(i,2)flag=0;endend。
matlab寻优算法Matlab寻优算法介绍与应用一、引言在现实世界中,我们经常面临需要找出问题最优解的情况,例如最小化成本、最大化效益等。
而Matlab作为一种强大的数值计算工具,提供了多种寻优算法,能够帮助我们解决各类寻优问题。
本文将以Matlab中的寻优算法为主题,介绍其原理、常用算法以及在实际应用中的案例分析。
二、Matlab中的寻优算法1. 优化问题Matlab中的寻优算法主要用于解决优化问题。
优化问题可分为两类:无约束优化问题和带约束优化问题。
无约束优化问题是指在没有约束条件的情况下,求取目标函数的极值;带约束优化问题则是在约束条件下,寻找目标函数的极值。
Matlab提供了多种寻优函数,用于求解不同类型的优化问题。
2. 原理介绍Matlab中的寻优算法主要基于数值计算的原理,通过迭代计算方法逐步逼近问题的最优解。
其中,一些常见的寻优算法包括梯度下降法、遗传算法、模拟退火算法、粒子群算法等。
3. 常用寻优算法3.1 梯度下降法梯度下降法是一种基于函数的局部变化率来求解最小值的算法。
它的主要思想是通过计算目标函数对各个变量的偏导数,找到使目标函数值下降最快的方向,并不断往该方向移动,直到达到最小值。
Matlab中的"gradient"和"fminsearch"函数就是基于梯度下降法的优化算法。
3.2 遗传算法遗传算法是一种模拟自然界进化过程的优化算法。
它借鉴了生物学中的遗传、进化、适应等概念,通过选择、交叉和变异等操作,不断迭代寻找问题的最优解。
Matlab中的"ga"函数就是基于遗传算法的寻优算法。
3.3 模拟退火算法模拟退火算法是一种通过模拟金属退火过程来求解优化问题的算法。
它通过随机接受较差解的方式,跳出局部最优解,从而在可能的解空间中找到全局最优解。
Matlab中的"sa"函数就是基于模拟退火算法的寻优算法。
贴片机贴装路径优化的改进遗传算法董健腾;龙绪明;曹宏耀;吕文强;胡少华;朱舜文;曾驰鹤【摘要】贴片机贴装顺序是影响设备生产效率的重要问题,针对此问题,已有各种优化算法提出,包括遗传算法.但是传统的遗传算法(GA)包括一些改进的遗传算法,在解决这个问题上还是存在全局性差、收敛速度慢和易陷入局部最优解的问题.在此基础上加入一个复合算子来优化种群,保证向最优解收敛的同时兼顾种群多样性.配合有效的交叉算子和变异算子,在优化结果上有了更大的改进,能更有效地提高贴装效率.【期刊名称】《电子工业专用设备》【年(卷),期】2015(044)012【总页数】6页(P17-21,46)【关键词】遗传算法;贴片机;元件贴装顺序优化;复合算子【作者】董健腾;龙绪明;曹宏耀;吕文强;胡少华;朱舜文;曾驰鹤【作者单位】西南交通大学,四川成都610031;西南交通大学,四川成都610031;西南交通大学,四川成都610031;西南交通大学,四川成都610031;西南交通大学,四川成都610031;西南交通大学,四川成都610031;西南交通大学,四川成都610031【正文语种】中文【中图分类】TN605随着表面组装技术 SMT(Surface Mounted Technology)越来越广泛的应用,电子产品装配较之手工装配发生了质的飞跃,SMT装配线中的关键设备贴片机得到了广泛的关注。
为进一步的提高贴片机的性能,其关键因素之一就是提高贴片的效率。
对于单台贴片机而言,提高贴片的效率存在两个关键的问题:即贴片机送料器位置分配问题和元件的贴装顺序优化问题。
这两者都属于NP-Hard问题,其中后一个问题在单头贴片机情况下一般被规划为旅行商问题(Traveling Salesman Problem,TSP)[2]。
很多学者已经对此提出了各种算法来优化,包括不少遗传算法(GA)[2,3]。
但随着贴片机技术的发展,贴片机的结构变得越来越复杂,多头贴片机已成为市场的潮流,其头数已多达12头,甚至更多,结构的复杂化和贴片头的增加使得这些算法不再适用。
遗传算法多目标优化matlab源代码遗传算法(Genetic Algorithm,GA)是一种基于自然选择和遗传学原理的优化算法。
它通过模拟生物进化过程,利用交叉、变异等操作来搜索问题的最优解。
在多目标优化问题中,GA也可以被应用。
本文将介绍如何使用Matlab实现遗传算法多目标优化,并提供源代码。
一、多目标优化1.1 多目标优化概述在实际问题中,往往存在多个冲突的目标函数需要同时优化。
这就是多目标优化(Multi-Objective Optimization, MOO)问题。
MOO不同于单一目标优化(Single Objective Optimization, SOO),因为在MOO中不存在一个全局最优解,而是存在一系列的Pareto最优解。
Pareto最优解指的是,在不降低任何一个目标函数的情况下,无法找到更好的解决方案。
因此,在MOO中我们需要寻找Pareto前沿(Pareto Front),即所有Pareto最优解组成的集合。
1.2 MOO方法常见的MOO方法有以下几种:(1)加权和法:将每个目标函数乘以一个权重系数,并将其加和作为综合评价指标。
(2)约束法:通过添加约束条件来限制可行域,并在可行域内寻找最优解。
(3)多目标遗传算法:通过模拟生物进化过程,利用交叉、变异等操作来搜索问题的最优解。
1.3 MOO评价指标在MOO中,我们需要使用一些指标来评价算法的性能。
以下是常见的MOO评价指标:(1)Pareto前沿覆盖率:Pareto前沿中被算法找到的解占总解数的比例。
(2)Pareto前沿距离:所有被算法找到的解与真实Pareto前沿之间的平均距离。
(3)收敛性:算法是否能够快速收敛到Pareto前沿。
二、遗传算法2.1 遗传算法概述遗传算法(Genetic Algorithm, GA)是一种基于自然选择和遗传学原理的优化算法。
它通过模拟生物进化过程,利用交叉、变异等操作来搜索问题的最优解。
MATLAB遗传⼯具箱ga求函数在某区间最⼤值问题让你求解⼀个⾮线性规划问题的最优解\[y=200\times \exp(-0.05x)\times \sin(x)\\ s.t. \ -2<x<2 \]GA遗传算法,(Genetic Algorithm,GA)是模拟⽣物进化论中⾃然选择和遗传学机理的⽣物进化过程中的计算模型,是⼀种通过模拟⾃然进化过程搜索最优解的⽅法。
它是智能计算技术之⼀。
matlab求解%使⽤matlab遗传算法⼯具箱进⾏计算%参考《智能计算⽅法及其应⽤》国防⼯业出版社clc;close all;clear all;options= optimoptions('ga','PlotFcn',{@ gaplotbestf, @ gaplotbestindiv, @gaplotexpectation ..., @ gaplotstopping});[x,fval,exitflag,output] =ga(@fitnessfun,1,[],[],[],[],[],[],[],options);%x是最优值%fval是最优值适应度%exitflag是算法结束标志%output是输出参数%fitnessfun是适应度函数%nvars是变量的个数function f =fitnessfun(x)if x<-2 | x>2f=150;elsef=-200*exp(-0.05*x)*sin(x);endend每次运⾏的结果不⼀定⼀样,截图⾥的结果显⽰是在x=1.523时y取得最⼤值mma求解参考。
机电学院通信工程系
实验报告
课程名称: 模式识别实验名称:GA与PSO算法寻优比较实验地点:指导老师: 侯强实验时间: 4月18日提交时间:
班级: 075084姓名:邢晨、秦辉、林声东、荣令金
PSO算法:运行时间:0.174sec,最有个体:[-0.9809*1e-3 0.8722*1e-3],最优适应度:0.0038;适应度曲线如下:
由结果来看,两种算法都取得了较好的效果,都很接近真实极值。
GA算法相较PSO算法精度高些,虽然GA算法比PSO复杂,但是运行时间都差不多。
不过从多次运行的情况来看,GA算法相对不太稳定,极值相较PSO变化较大。
个人分析主要原因应该是初始种群对GA算法的影响比较大,因为后续的交叉及变异不稳定性较高,这点从GA算法的平均适应度曲线即可看出,交叉与变异操作并不一定会使个体往好的方向改善。
从总体情况上来看,结果都还可以。
本次试验对GA及PSO算法的整体架构有了一定的认识。