设在某计划区域内有n个需求点,它们各自的坐标为,各点的需求量为,配送中心到需求点的运费率是,设该配送中心的坐标是(x,y)。
1、根据求平面中物体重心的方法求配送中心坐标点(模拟重心法)
代入数值,实际求得的值,即为所求得配送中心位置的坐标。
2、精确重心法
假设配送中心到各需求点的运费为 ,总的运费用为 D,则有:
要想使求得总费用D最小的方法是根据 一阶偏导数为零的原理求解的,计算公式如下:
如果从两个方程式的右边完全消除和,计算将变得很复杂,计算量也很大。因此,可以采用迭代的方法进行计算,迭代过程如下:
- 可用模拟重心公式计算得出的结果作为初始解代入
- 利用方程式(1-4)和(2-1)计算该重心点与需求点的总运费
- 把分别代入方程式(1-4)和(2-2)中,计算配送中心的改善坐标
计算相对应的总的运输费用C,并与上一次总运费进行比较,如果,则说明为最优解;如果,则说明计算结果得到改善,并且有待更进一步优化,于是返回第三步进行迭代计算。
3、粒子群算法(Particle Swarm Optimization)的基本原理
3.1PSO算法流程
- 初始化
初始化粒子群算法的基本参数:问题维度(dimension)、种群规模(population)、迭代次数(interaction)、粒子位置Xi、粒子速度Vi 、历史最优位置(pbest)、全局最优位置(gbest)、位置限制范围(Xlimit)、速度限制范围(Vlimit)、学习因子(自我学习因子C1;社会学习因子C2)、惯性权重w
- 2.产生粒子的初始位置和速度
%进入for循环,随机生成一个种群 for i=1:pop for d=1:Dimension x(i,d)=Lb(d)+(Ub(d)-Lb(d))*rand(1); V(i,d)=Vmin(d)+(Vmax(d)-Vmin(d))*rand(1); end end
- 3.计算粒子的适应度,更新粒子的历史最优值和全局最优值
- 4.更新粒子的速度和位置(pso的重点公式)
速度更新:
位置更新:
- 5.边界处理
迭代过程中,如果粒子i的位置超过了位置和速度的边界,就该粒子i的位置和速度设置为边界值。
- 6.判断是否达到终止条件(迭代次数),输出全局最优解
3.2 PSO的流程图和伪代码
(2)伪代码
%%本例以求最小值为目标
procedure PSO
for each particle(i)
Initialize position(Xi) and velocity(Vi) for each particle
Evaluate particle(i) and set pbest=Xi
end for
gbest=min{pbest}
while not stop
for i=1to pop
Update the position and velocity of each particle
Evaluate particle(i)
if fitness(Xi)<fitness(pbest)
pbest=Xi
if fitness(gbest)< fitness(pbest)
gbest=pbest;
end for
end while
print gbest
end procedure