首页 百科知识 算法平台设计

算法平台设计

时间:2022-10-11 百科知识 版权反馈
【摘要】:由于很多学者都在研究PSO算法,并且提出了大量的改进算法,这些改进算法可以看成是标准PSO算法的变体,这些改进算法反映了种群多样性、搜索效率、搜索精度等不同方面的权衡,这些正好符合策略模式适用范围的第二点,因此,本章引入策略模式来设计粒子群优化算法平台。本章所设计的算法平台不可能把所有的粒子群优化算法包含进来,所以只挑选了一些典型的算法。

7.3.1 算法平台设计

由于很多学者都在研究PSO算法,并且提出了大量的改进算法,这些改进算法可以看成是标准PSO算法的变体,这些改进算法反映了种群多样性、搜索效率、搜索精度等不同方面的权衡,这些正好符合策略模式适用范围的第二点,因此,本章引入策略模式来设计粒子群优化算法平台。本章所设计的算法平台不可能把所有的粒子群优化算法包含进来,所以只挑选了一些典型的算法。比如,基本PSO算法[21,惯性权重线性递减的PSO算法(PSO-LDW)[59,具有吸引和排斥两种阶段的PSO算法(ARPSO)[97,简化而高效的PSO算法(SPSO)[106,基本二进制粒子群算法(BPSO)[62,具有遗传特征的BPSO算法(GPSO)[143,耗散PSO算法(DPSO)[44等。

然而在一些研究型的软件开发过程中,研究人员往往注重的是对算法本身的研究,而忽略了软件本身的体系结构,随着算法研究和应用的逐步深入,或者由于算法上的改进、研究人员的变化等因素,软件的设计和维护也越来越困难。因此,研究如何选取、组织软构件,为算法的研究人员提供可用的软件元素就显得尤为重要[144

考虑到以后对粒子群优化算法平台的维护和扩充,本章根据针对接口编程而不是针对实现编程,优先使用对象组合而不是类继承,封装变化点这三大原则,以策略模式的思想为指导来设计构思算法平台,算法平台中各类之间的关系如图7.2所示。根据在软件开发中策略模式实现的一般过程,下面将详细介绍粒子群优化算法平台的设计思路,具体步骤如下。

(1)分析不同PSO算法操作中的不同之处,并考虑哪些操作以后是需要变化的,把它们独立出来并封装。PSO算法大致上都有以下操作:设置种群大小、获得种群大小、设置每次运行的代数、获得每次运行的代数、设置运行次数、获得运行次数、初始化种群、计算适应值、位置更新、速度更新、设置速度的范围、比较个体的好坏、输出结果等。对于不同的PSO算法来说,前六个操作一般是不变的,后七个操作根据不同的问题和情况要发生变化。另外,不同的改进PSO算法还有一些额外操作,比如ARPSO算法中要计算种群的多样性,MPSO算法中需要计算粒子到质心的距离,IPSO3算法中需要计算粒子的相对能量等。

(2)为每个需要改变的操作定义一个公共接口。PopInit是初始化种群的接口、Compute-Fitness是计算适应值的接口、UpdatePosition是位置更新的接口、UpdateVelocity是速度更新的接口、VelocityRange是设置速度范围的接口、CompareIndividual是比较个体好坏的接口、Output是输出结果的接口。

(3)编写一系列的策略类来实现上面的公共接口。CDemicalCode和CBinaryCode分别实现个体的十进制和二进制编码;CProblemA、CProblemB和COtherProblem实现不同问题适应值的计算方法;由于个体的编码方式不一样,CDemicalMode和CBinaryMode分别实现十进制和二进制个体的位置更新方式;在计算速度时,惯性权重固定不变或者线性递减,并且有文献证明了速度不是必须的,所以COmegaConstant、COmegaLDW和CNotVelocity分别实现这三种情况;CSetRange实现设置速度的范围,由于速度不是必需项,所以CNotSetRange实现没有速度项时的情况;比较个体的好坏根据情况大致可以分为单目标、多目标和具有约束函数的情况,CSingleObj、CMultiObj和CConstraint分别实现这三种情况;CText、CPhoto和CScreenDisplay分别实现实验结果的不同保存方式,即文本、图形和屏幕显示。

(4)在使用公共接口的类CPSO中保存对每个接口的引用,这样可以把动作委托给相应的

策略类来处理。

(5)在类CPSO中实现对各接口的set和get方法,以便可以动态设定各种PSO算法的行为。

(6)最后把不会变化的六个操作放置在环境类Context中,作为它的成员函数。SetPopSize()和GetPopSize()表示设置和获得种群大小;SetRunGen()和GetRunGen()表示设置和获得每次运行的代数;SetRunNO()和GetRunNO()表示设置和获得运行次数。在Context中添加一个CPSO类型的变量,以实现两者之间的行为协调。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈