基于MATALB平台的多约束PSO优化算法设计
2018-09-21杨青斌
王 玮, 何 松, 杨青斌
(1.石河子国能能源投资有限公司西工业区分公司, 新疆 石河子 832000;2.石河子国能能源投资有限公司南热电, 新疆 石河子 832000;3.新能源研究所中国电力科学研究院, 江苏 南京 210003)
引言
现实生活中,单目标、多约束优化模型的求解较为普遍。例如,在机械螺母加工过程中,为使螺母符合技术要求,需要使螺母需满足尺寸、棱角、厚度,甚至铸件重量等多个方面的要求。多于这类问题的优化或模型求解,约束优化条件的合理处理尤为关键。传统的单目标无约束或者目标与约束均唯一的模型求解方法难以直接适用该类问题或模型求解。因此,设计一种单目标、多约束的优化模型求解算法尤为重要与紧迫。
1MATALB平台
MATALB平台具有较强的数字处理与计算能力,以及良好的交互式语言编写能力,分别论述。
1.1 MATALB平台的数字处理与计算能力
MATALB平台具备优良的算法开发、数据可视化处理与分析、交互式处理与分析的特性。其中,simulink是MATALB平台中一个可对现约束、多目标实动态系统多域建模、多时间尺度分析子平台,对于许多问题可视化处理、分析以及仿真具有重要意义。
MATALB平台的数字处理与计算能力主要体现于以下几个方面:
1)数据分析与处理能力。
2)符号数学的计算能力。
3)概率统计与分析能力。
4)偏微分仿真的设计与处理能力。
以符号数学的计算能力为例,论述MATALB平台强大的数字处理与计算能力。在模型构建或者求解过程中,为突出待求解问题的物理意义与客观规律,需将求解问题进行一般化的数学处理,例如计算某一地区重力加速度时,一般都是加速度抽象地设置为符号g,通过多次重力加速度的计算,最终获取该地区的重力加速度。此时,原本的仅可处理数字符号的语言或平台就难以处理该类问题。而MATALB平台简单的几条语句就可处理该类问题,如下所示:
上述语句中,syms、*、/分别为 MATALB 平台中符号变量的创建语句、乘法表示方法、除法表示方法。在此基础上,可进行有关重力加速度g的处理与计算。
1.2 MATALB平台的交互式语言编写能力
MATALB平台可与C/C++a语言、JAVA语言等多种语言建立良好的关联关系,实现多种语言的互联互通,优势互补。例如,通过与JAVA语言的交互,可以极为方便的获取互联网或其他数据库的数据。如下为在MATALB平台测试的JAVA虚拟机信息:命令窗口输入:version-java
命令窗口现实信息:Java 1.7.0_60-b19 with Oracle Corporation Java HotSpot(TM)64-Bit Server VM mixed mode
可根据命令窗口中显示的信息,选择合适版本的JAVA语言,实现MATALB平台与JAVA语言良好的交互。
2 基于MATALB平台的多约束PSO优化算法设计
基于前述分析,MATALB平台具有较强的数字处理与计算以及良好的交互式语言编写能力。为此,论文将基于MATALB平台编写单目标、多约束优化模型的PSO求解算法。
2.1 粒子初始化程序设计
PSO算法求解过程的实质是其粒子朝着规定的目标不断前进、渐序寻优的过程。为此,应首先设计PSO算法的初始粒子种群,如下所示。
式中,Function为MATALB平台中函数设计语句;Dimension、Size、Xmax、Xmin、Vmax 与 Vmin 分别表示初始粒子种群的维度、数目、最大值、最小值、最大速度与最小速度。
2.2 粒子的更新设计
如前所述,PSO算法求解过程的实质是其粒子朝着规定的目标不断前进、渐序寻优的过程。为此,PSO算法设计过程中粒子种群的不断更新也是较为重要的一环。程序如下。
式中,Weight为PSO算法的惯性常数,一般取值为1;c1与c2均为权重系数,一般均取值为2;Pos(:,i)与Vel(:,i)分别表示第i个粒子的当前位置与速度;Pbest_pos(:,i)表示第i个粒子当前的最优位置;Gbest_pos表示当前全局最优位置。另外,粒子在更新过程中,还需满足如下2方面要求。
2.2.1 更新的速度要求
2.2.2 更新的位置要求
2.3 目标函数设计
PSO算法求解过程中,粒子群朝着规定的目标不断前进、渐序寻优的过程直接表现为目标函数的渐变过程中,即朝着最大值或最小值渐变的过程。为此,在目标函数设计中加入多约束条件,使目标函数朝着规定的方向变化,也即可实现寻优。如下为程序实现。
式中:Pan_duan1、Pan_duan2、Pan_duan3 分别为约束是否满足的判断结果,1表示约束满足要求,0表示约束不满足要求;sum为依据当前粒子的目标函数计算结果;“330”为不满足约束条件时目标函数的取值,此时算法的寻优是使目标函数逐渐减小,当然该取值也可以取值为其他较大值,例如“500”、“1 000”或者其他情况;当算法寻优使目标函数逐渐增大时,该值应该取一较小值。
3 仿真验证
为验证本文设计的适用于单目标、多约束优化模型的PSO算法的正确性,设计了如下4变量待优化模型,如下:
式中:目标函数取最小值时最优,各变量的取值范围为[-1~1]。另外,初始粒子种群个数选择为40,最大循环次数取值为50。经本文设计的优化算法,获得最终求解结果如下:
因此,本文设计的适用于单目标、多约束优化模型的PSO算法是正确、可行的。