MATLAB编写遗传算法求解vrp问题

vrp问题是有载重限制的物流配送线路优化问题,详细可表述为:有1个配送中心,向m个客户点送货,从配送中心出发,货物不足时回配送中心装货,配送完成后回到配送中心。第i个客户点的需求量为gi(i=1,2,3,…,m),由配送中心派出载重量分别qn的n辆车来承运。将货物运往各个客户点,最后回到配送中心。已知gi ≤qn,要求合理安排车辆路线,在满足各客户点需求和车辆载重约束的前提下,使得车辆的总行程最短。

假设如下:

(1)每辆车所装载的货运总量不得超过车的最大承载量;

(2)每个客户点只能够由一辆车服务一次;

(3)每个客户点的需求量小于车辆的载重;

(4)必须满足用户提出的到货时间要求。

根据以上假设建立数学模型:

VRPSPD python 遗传算法 遗传算法求解vrp问题matlab程序_人工智能


其中:

(1)式为目标函数,cij 表示从客户点i到客户点j的运输成本, xijs表示车辆s由点i驶向点j,当事件发生时取值1,否则取值O;

(2)式和(3)式中,yis表示客户点i的货运任务由车辆s来完成。当事件发生时取值1,否则取值0,yjs表示客户点j的货运任务由车辆s来完成。当事件发生时取值1,否则取值0;

(4)式中,qi表示由车辆s的最大承载量,每辆车装载的货运总量不得超过本辆车的最大承重量;

(5)式保证了每个客户点仅能由一辆车完成,而所有运输任务则由k辆车协同完成。模型说完,上代码:

VRPSPD python 遗传算法 遗传算法求解vrp问题matlab程序_取值_02


VRPSPD python 遗传算法 遗传算法求解vrp问题matlab程序_取值_03


VRPSPD python 遗传算法 遗传算法求解vrp问题matlab程序_VRPSPD python 遗传算法_04

其他子函数包括
crossGA.m
decodingFun.m
drawroute.m
myfun.m
mutationGA.m
select.m
ranking.m等

程序结果:

VRPSPD python 遗传算法 遗传算法求解vrp问题matlab程序_matlab_05


VRPSPD python 遗传算法 遗传算法求解vrp问题matlab程序_VRPSPD python 遗传算法_06


VRPSPD python 遗传算法 遗传算法求解vrp问题matlab程序_VRPSPD python 遗传算法_07

参考文献:
[1]聂艳芳. VRP的数学模型及算法分析[J]. 山西电子技术, 2010(1):3.