⛄一、头脑风暴优化算法(BSO)简介
头脑风暴(BSO)是一种将搜索空间不断缩减的算法。此算法通过不断迭代,最终将局部最优解慢慢精确至全局最优解。其基本过程如图1所示。
图1 头脑风暴算法流程
1 种群初始化
随机产生n个个体,每个个体代表一种配送方案。这里应用Matlab仿真软件进行仿真,故个体采用二维编码的方式进行表示。例如,若用数字0表示配送中心,数字1-10表示顾客,数字11-13表示充电站,则个体随机产生的过程可表示如下:首先,得到顾客经过顺序,如[1 2 3 4 5 6 7 8 9 10];其次,鉴于顾客货物需求以及电动货车容量进行分组,若顾客需求皆为3,电动货车容量为10,则上述顺序可更新为[0 1 2 3 0 4 5 6 0 7 8 9 0 10 0],每两个数字0之间的数字即为一辆电动货车的配送路线,此顺序即采用了4辆电动货车;再次,根据上述顺序中每辆电动货车的配送顺序求解耗电量、剩余电量,根据剩余电量是否能支撑电动货车到达下一个顾客点最近充电站为判定依据进行充电行为,充电量约束满足式(11),最高电量为充满,最低电量为刚好到达下一充电站或配送中心。例如[0 1 2 11 3 0 4 5 6 0 7 12 8 9 0 10 0],此顺序中就表示第一辆与第三辆电动货车需要在配送过程中充电,而此顺序即为个体表示。最后,将个体存放至二维数组中,每一行代表一个个体。
2 聚 类
将n个个体进行分类,聚成m个类,分别计算每个个体的适应度值并选出每一类的最优个体作为聚类中心。此适应度值为耗电量与顾客满意度倒数之和,适应度值最小者即为最优个体。耗电量与顾客满意度的求解方式见2.1节、2.2节。
3 产生新个体
如公式所示:XNEW=XSELECT