人工蜂群算法-要点总结

人工蜂群算法

Marshal Zheng
2019-05-03
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列,保存每个蜜源被跟随蜂开采的轮数,该数量达到 L L L值后对应该蜜源的雇佣蜂会变成侦查蜂)
算法实现
定义待优化函数,多个输入参数组成一个行向量input
初始化各参数及矩阵
随机初始化蜜源
根据初始蜜源计算代价函数,更新蜜源代价矩阵,历史最优蜜源位置/代价矩阵

雇佣蜂阶段:

根据公式寻找下一个蜜源
进行贪婪选择,如果没有找到新的蜜源,当前蜜源开采量+1;否则更新蜜源位置

跟随蜂阶段:

根据公式计算选择概率矩阵
进行轮盘赌选择
重复雇佣蜂寻找蜜源操作
进行贪婪选择,如果没有找到新的蜜源,当前蜜源开采量+1;否则更新蜜源位置

侦查蜂阶段

查看蜜源是否被开采完
保存历史最优解

输出结果

你可能感兴趣的:(机器学习,算法)