人工蜂群算法
ABC算法——优化方法
基本组成
-
雇佣蜂:定位点
-
蜜源更新公式
-
phi = a*rand([-1,1],[1,nVar]) NewPosition = PopPosition[i] + phi*(PopPosition[i]-PopPosition[k])
-
-
跟随蜂:跟着采蜜
-
侦查蜂:找
初始化参数
- 代价函数计算函数CostFunction;
- 代价函数参数数目nVar;
- 代价函数各参数上下界[VarMin,VarMax]
- 最大迭代次数iter_max
- 单次保存的蜜源最大数量nPop
- 跟随蜂数目nOnLooker
- 蜜源抛弃上界L(一般为round(0.6nVarnPop))
- 蜜源搜索范围扩大系数a(一般为1)
- 蜜源位置矩阵PopPositon(nPop行nVar列,每一行代表一个可行解)
- 蜜源代价矩阵PopCost(nPop行1列,保存每个可行解的质量值)
- 蜜源选择概率矩阵Probability(nPop行1列,保存跟随蜂选择各蜜源的概率)
- 历史最优蜜源矩阵BestSol(iter_max+1行nVar列,保存每次迭代中的最优蜜源位置)
- 蜜源开采量矩阵Mine(nPop行1列,保存每个蜜源被跟随蜂开采的轮数,该数量达到LLL值后对应该蜜源的雇佣蜂会变成侦查蜂)
算法实现
定义待优化函数,多个输入参数组成一个行向量input
初始化各参数及矩阵
随机初始化蜜源
根据初始蜜源计算代价函数,更新蜜源代价矩阵,历史最优蜜源位置/代价矩阵
雇佣蜂阶段:
根据公式寻找下一个蜜源
进行贪婪选择,如果没有找到新的蜜源,当前蜜源开采量+1;否则更新蜜源位置
跟随蜂阶段:
根据公式计算选择概率矩阵
进行轮盘赌选择
重复雇佣蜂寻找蜜源操作
进行贪婪选择,如果没有找到新的蜜源,当前蜜源开采量+1;否则更新蜜源位置
侦查蜂阶段
查看蜜源是否被开采完
保存历史最优解
输出结果