微粒群算法的可视化平台开发研究

时间:2022-06-08 09:34:02

微粒群算法的可视化平台开发研究

摘 要:微粒群算法是近年来兴起的一种智能优化算法,微粒群算法的研究如果仅仅只停留在枯燥的公式和乏味的理论推导分析上的话,常常会使研究人员和用户不能正确的理解微粒群算法,基于此本文提出微粒群算法的可视化实现问题,即开发友好可视化的前台界面,通过前台上的控件和后台程序中参数之间的数据交换来解决优化问题,这样可大大缩短了算法的开发周期。

关键词:微粒群算法;可视化平台;开发周期

中图分类号:TP301 文献标识码:A

The Research of PSO Visualization Platform Development

CHEN Guoping1,ZHAO Wenjie1,JIANG Wei2

(1.School of Electronic and information Engineering, Wuhan Institute of Technology, Wuhan, 430074,China;

2.Telecommunications department business college of HBUT, Wuhan, 430079,China )

Abstract:In recent years, particle swarm optimization is a kind of intelligent optimization algorithms, The research of PSO is boring and tedious if it stays only in formula and theoretical derivation researchers and users often can not make a proper understanding of particle swarm algorithm, Based on the above the paper proposed the visualization issues of PSO,namely,the prospects of developmentfriendly visual interface to control the front and back-stage process of data exchange between the parameters to solve the optimization problem, so the algorithm can greatly shorten the development cycle.

Key words:Particle Swarm Optimization(PSO);visualization platform;development cycle

1 引 言

微粒群算法(Particle Swarm Optimization 简称PSO)是由美国社会心理学家Kennedy和电气工程学家Eberhart等受鸟群觅食的启发于1995年提出的一种进化技术[1]。PSO算法的研究如果仅仅只停留在枯燥的公式和乏味的理论推导分析上的话,常常会使研究人员和用户不能正确的理解PSO算法,甚至对该算法产生厌烦的情绪,从而在一定程度上限制了PSO算法的应用。基于此本文提出了PSO算法的可视化实现问题,如果研究人员和用户看到的是一个友好的可视化界面而不是复杂的公式、代码,用户只需在界面上设置或输入相关参数,点击确定按钮就可以得到优化结果和收敛曲线,从而可以避免重新设置参数需要打开PSO算法的源代码的不便,总之就是开发友好可视化的前台界面,而将复杂的代码放到后台,通过前台上的控件和后台程序中参数之间的数据交换,这样可大大缩短了算法的开发周期,这些就是PSO算法可视化实现研究的内容。因此微粒群算法的可视化开发平台研究是非常有必要和有意义的。

2 微粒群算法的基本原理

微粒群算法将每个个体看作是在N维搜索空间中的一个没有重量和体积的微粒,并在搜索空间中以一定的速度飞行,该飞行速度由个体的飞行经验和群体的飞行经验进行动态调整,其调整方程[2]为(1)(2)两式,直到达到最优为止。

Vij(t+1)=ωVij(t)+c1r1(t)(pij(t)-

Xij(t))+c2r2(t)(pgj(t)-Xij(t))(1)

Xij(t+1)=Xij(t)+Vij(t+1)(2)

其中:下标“j”表示微粒的第j维,“i”表示微粒i,t表示第t代。pij为微粒i所经历的最好位置,pgj为群体中所有微粒所经历过的最好位置,ω为惯性权重,c1,c2为加速常数通常在0~2之间取值,r1 ~U(0,1),r2~U(0,1)为两个相互独立的随机函数。

3 微粒群算法的程序实现问题

PSO算法的程序实现问题主要可分为两个环节,第一环节为PSO算法的程序实现即主程序的实现,为了便于识别在MATLAB中一般可保存为main.m文件,第二环节为优化对象的程序实现或者叫适应度函数,在MATLAB中一般可保存为fitness.m文件,将main.m、fitness.m保存在同一文件夹里面,当运行main.m文件时MATLAB会自动调用fitness.m文件,这里也类似于C语言的调用,当需要改变优化对象时只需要对fitness.m文件进行修改,而保持main.m文件不变,当用户对PSO算法对于优化对象的优化结果不满意时,可保持fitness.m文件不变,对main.m文件进行修改主要包括初始化参数的修改,如果在修改初始化参数仍然不能达到设定的优化性能的情况下可考虑进行算法的改进,这样就变的越来越复杂了。将PSO算法的程序实现分为主程序和适应度程序两个部分,各部分在整个优化过程中起不同的作用,在修改程序时可以根据要求的不同分开进行,从而可以进一步提高算法程序实现的效率。

4 微粒群算法的可视化实现问题

所谓PSO算法的可视化实现就是指在图形用户界面GUI(Graphic User Interface)平台下利用PSO算法来解决优化问题。其本质是将复杂的PSO算法程序放在后台,而通过前台友好可视化界面上的控件实现用户和后台程序的交互连接,来解决复杂的优化问题。虽然PSO算法理论上是可以由MATLAB程序实现的,但对于较复杂的优化问题以及一些对优化性能要求较高的场合,算法程序实现是很复杂和困难的。人工神经网络和遗传算法也是如此,存在类似的一些缺点,为此MATLAB软件针对这些问题自带有神经网络工具(NNTOOL)即神经网络GUI开发平台,对于MATLAB7.0以上版本也都自带有遗传算法工具箱(GATOOL),它们提供图形化用户界面,用户只需要在MATLAB命令窗口输入NNTOOL和GATOOL命令或通过其它方式就都可以打开工具箱,用户只需要在图形用户界面对话框上进行相关操作比在编辑框中输入参数,在组合框中选择算法种类等,并结合M程序和命令窗口一共三个方面就可以比较方便和简洁的解决一些较复杂的优化问题,从而可以避免繁琐的编程。然而对于PSO算法MATLAB不提供图形用户界面,要解决这个问题只有通过上面两个工具箱的启示,模仿神经网络和遗传算法工具箱,自己编写一个PSO算法适用的可视化开发工具。当前主流的可视化开发工具有Visual C++、Visual Basic等,“非主图1 基于MFC的PSO算法可视化开发平台界面流”的可视化开发工具有MATLAB、Delphi6.0、LABVIEW7.2等本章将用主流和非主流的方法对PSO可视化开发问题做了一些初步探讨。图1即为在Visual C++6.0环境下所设计的一个简易PSO算法开发平台的主界面,其右侧为设置参数和优化对象区域,算法可供选择、优化函数也可以选择,左侧空白区域用于绘制PSO算法在求解优化问题时的收敛曲线。用户只需设置参数的值,选择被优化函数和所使用的算法,点击确定就可以得到优化结果和收敛曲线,这样大大减小了编程带来的麻烦,提高了工程项目开发的效率。

为进一步完善PSO算法的可视化平台使其在适用范围和优化性能等方面更趋合理和实用,本文在VC++6.0环境下设计了微粒群算法性能测试平台包括主界面和子界面如图2和图3所示。

图2 微粒群算法可视化开发平台主界面

图3 微粒群算法可视化开发平台计算模块

此外在MATLAB环境下如果PSO算法和适应度函数已通过M语言实现,那么此时就已经完成了常规的优化仿真,在PSO算法可视化平台开发时,只需要将这段M程序添加到确定按钮的回调函数[3](CALLBACK)里面,此时算法参数不再是以定值的形式固化后台界面后台,而是可以通过编辑框的输入获取的,仿真完成后结果送编辑框显示出来并绘制收敛曲线就完成了一个简单的PSO可视化平台如图4所示,用户可以通过在编辑框中输入相关参数,点击开始仿真按钮就可以得到优化结果和收敛曲线,从而避免了重新设置参数需要打开PSO算法的源代码,大大缩短了算法的工程开发周期。

图4 MATLAB环境下的PSO算法优化平台

5 几种微粒群算法可视化平台开发方案

的比较

综上所述除了Visual C++6.0 MFC环境外,VB6.0、Delphi6.0、MATLAB、LABVIEW7.2等软件也可以进行可视化编程。通过实验可知在Visual C++6.0 、VB6.0、Delphi6.0、LABVIEWA7.2等几种开发环境下其绘图功能和数据处理能力上远远不如MATLAB软件强大,因此利用MATLAB GUIDE(GUI Builder)来开发PSO算法的可视化平台也有其独到的优势,直接在命令窗口输入GUIDE命令即可打开MATLAB GUI设计窗口,在这上面操作简单快捷。

利用Delphi6.0、VB6.0、VC6.0 编程或MATLAB7.0 GUIDE界面编程等都可以用来设计PSO算法的可视化开发平台,但在设计过程中各自还是都存在一些优缺点。 比如Visual C++6.0 编程编译最终产生是一个后缀名为EXE的可执行程序,将这个EXE的可执行程序复制或转移到装有VC的PC机的任意地方都可以直接双击该应用程序直接使用,可移植性强,这是MFC编程的一个最大的优势。而MATLAB7.0 GUI编程最终编译运行产生并不是一个可执行的文件,而必须运行编译通过后缀为fig的图片文件或对应的M程序文件才可以得到所开发的可视化界面,即通过MATLAB开发的可视化界面不具备良好移植性能,要使用可视化平台首先必须打开开发软件MATLAB,而通过MFC开发的可视化平台在使用时不需要打开VC,它脱离开发环境,这样就显得非常方便。但是众所周知MATLAB具有强大的绘图功能,且操作简单,这些都会给实际工程开发提供很大方便并节约工程开发时间,且PSO算法本来就是用于优化的,而MATLAB具有强大的数学处理能力适合处理各类优化问题,对比MATLAB代码和C语言代码MATLAB代码效率更高,并且MATLAB GUI编程产生的fig图片文件和M程序文件通过一些整合和处理还是可以转变为一个后缀名为EXE的可执行程序的[4],只是MATLAB不能直接产生这个可执行的程序而已,这样一来也可以弥补MATLAB界面编程移植性能不好的一个缺点,综上对比选择MATLAB界面编程,或者采取MATLAB、VC++混合编程充分发挥二者的优势开发PSO算法的可视化开发平台更加优越。

6 结论及展望

本文所设计的PSO算法可视化平台取得了较好的优化效果,然而对于PSO算法可视化开发平台的研究还需进一步的完善,比如优化函数只能选取有限的几种,算法的选择也很有限,此外微粒的维数在图4中可视化工具开发时就已限定为2,因此在应用上PSO可视化开发平台还是会受到很大的限制。今后可视化平台的研究重点应该是如何增加改进算法的种类,如何自己定义优化函数,如何使参数的设置变得更加灵活化,让可视化开发平台更具一般性即实用性更强等方面。

参考文献

[1]蔡自兴.人工智能及其应用[M].北京:清华大学出版社.2006.

[2] 曾建潮,介婧,崔志华.微粒群算法[M].北京:科学出版社,2004.

[3] 罗华飞.MATLAB GUI 设计学习手记[M].北京:北京航空航天大学出版社,2009.

[4] 王素立,高洁,孙新德.MATLAB混合编程与工程应用[M].北京:清华大学出版社,2008.

注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文

上一篇:关于知识工程的发展综述 下一篇:基于状态反馈线性二次型最优控制器的设计