在优化算法笔记(一)优化算法的介绍中,已经介绍过了优化算法的基本结构。大多数优化算法的结构都是十分相似的。
实现单个算法时,我们可能不需要什么框架。但是我们需要算法之间的对比,免不了需要实现多个算法。
由于优化算法之间的结构大致相同,所以我们可以将其相同的部分或者模块抽离出来,形成公共的部分,我们只需要关注每一个算法自身独特的部分即可。
为了实现公共部分的抽离,我们需要用到面向对象的思想。在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(框架代码已实现)。
这里只是实现了优化算法框架的公共部分,这还不是一个完整的优化算法,我们无法使用它来求解,在下一篇,在框架的基础上实现 粒子群算法。
公司名称: 天富娱乐-天富医疗器械销售公司
手 机: 13800000000
电 话: 400-123-4567
邮 箱: admin@youweb.com
地 址: 广东省广州市天河区88号