诚信为本,市场在变,诚信永远不变...
  咨询电话:400-123-4567

公司新闻

优化算法matlab实现(二)框架编写

优化算法笔记(一)优化算法的介绍中,已经介绍过了优化算法的基本结构。大多数优化算法的结构都是十分相似的。
  实现单个算法时,我们可能不需要什么框架。但是我们需要算法之间的对比,免不了需要实现多个算法。
  由于优化算法之间的结构大致相同,所以我们可以将其相同的部分或者模块抽离出来,形成公共的部分,我们只需要关注每一个算法自身独特的部分即可。
  为了实现公共部分的抽离,我们需要用到面向对象的思想。在matlab中使用类(classdef)来定义一个基础类,其中编写公共代码,在其他类中只需继承基础类并实现自身独有的方法即可。

将优化算法进行抽象可以得到三个部分:种群(个体),规则,环境
  其中种群即优化算法中个体组成的种群,规则则是各个优化算法中的算子,环境为我们需要求解的适应度环境。优化算法也可以描述成:在种群中求解在一定规则下最适应目标环境的个体

描述
种群 由个体组成的群体(列表)
规则 优化算法结构及算子
环境 待解适应度函数(外部输入)

具体实现时,我们需要实现的是
(1)个体(种群为个体的列表)
(2)规则(优化算法流程)

各算法中个体的差异其实还是挺大的,不过个体的公共属性比较简单只有两个
(1)位置:适应度函数的输入。
(2)值:适应度函数的值。

规则其实就是算法的主题,算法的执行过程。每个算法的执行过程必然不一样(一样那就是同一个算法了)。但是算法的执行流程还是有很多相同的部分的。



(1)初始化:初始化个体,一般是在解空间内随机初始化。
(2)循环迭代:在最大迭代次数内执行指定步骤
(3)记录:记录每代的最优解,最优值

下面是完整的代码,需要自己动手组成框架。
总目录:https://www.jianshu.com/optimization algorithm
框架目录:https://www.jianshu.com/optimization algorithm/frame
框架文件:

文件名 描述
https://www.jianshu.com/optimization algorithm/frame/Unit.m 个体
https://www.jianshu.com/optimization algorithm/frame/Algorithm_Impl.m 算法主体

文件内容:
Unit.m


Algorithm_Impl.m


注意:此代码实现的是求目标函数最大值,求最小值可将适应度函数乘以-1(框架代码已实现)。
注意:此代码实现的是求目标函数最大值,求最小值可将适应度函数乘以-1(框架代码已实现)。
注意:此代码实现的是求目标函数最大值,求最小值可将适应度函数乘以-1(框架代码已实现)。

这里只是实现了优化算法框架的公共部分,这还不是一个完整的优化算法,我们无法使用它来求解,在下一篇,在框架的基础上实现 粒子群算法。

平台注册入口