1 简介
模拟退火算法的思想借鉴于固体的退火过程,当固体的温度很高时,内能比较大,固体内的粒子处于快速无序运动状态,当温度慢慢降低,固体的内能减小,粒子逐渐趋于有序,最终固体处于常温状态,内能达到最小,此时粒子最为稳定。
白话理解:一开始为算法设定一个较高的值T(模拟温度),算法不稳定,选择当前较差解的概率很大;随着T的减小,算法趋于稳定,选择较差解的概率减小,最后,T降至终止迭代的条件,得到近似最优解。
2.算法思想及步骤
设
为所有的可能解,
反映了取
时解的代价,则组合优化问题可形式化地表述为寻找
使得
。
其中,P为算法选择较差解的概率;T 为温度的模拟参数;
。
当T很大时, ,此时算法以较大概率选择非当前最优解;
P的值随着T的减小而减小;
当 时, ,此时算法几乎只选择最优解,等同于贪心算法。
带时间窗的车辆路径问题(VRPTW)
由于VRP问题的持续发展,考虑需求点对于车辆到达的时间有所要求之下,在车辆途程问题之中加入时窗的限制,便成为带时间窗车辆路径问题(VRP with Time Windows, VRPTW)。带时间窗车辆路径问题(VRPTW)是在VRP上加上了客户的被访问的时间窗约束。在VRPTW问题中,除了行驶成本之外, 成本函数还要包括由于早到某个客户而引起的等待时间和客户需要的服务时间。在VRPTW中,车辆除了要满足VRP问题的限制之外,还必须要满足需求点的时窗限制,而需求点的时窗限制可以分为两种,一种是硬时窗(Hard Time Window),硬时窗要求车辆必须要在时窗内到达,早到必须等待,而迟到则拒收;另一种是软时窗(Soft Time Window),不一定要在时窗内到达,但是在时窗之外到达必须要处罚,以处罚替代等待与拒收是软时窗与硬时窗最大的不同。
模型2(参考2017 A generalized formulation for vehicle routing problems):
该模型为2维决策变量
2 部分代码
function plotSolution(route,model)city = model.city;
veh = model.veh;
x0 = model.x0;
y0 = model.y0;
x = model.x;
y = model.y;
oneRoute = find(route>city);
From = [0 oneRoute]+1;
To = [oneRoute city+veh]-1;
routes = cell(veh,1);
subplot(1,2,1);
for i = 1:veh
routes{i} = route(From(i):To(i));
end
colors=hsv(veh);
for r = 1:veh
X = [x0 x(routes{r}) x0];
Y = [y0 y(routes{r}) y0];
color = 0.8*colors(r,:);
plot(X,Y,'-o',...
'Color',color,...
'LineWidth',2,...
'MarkerSize',10,...
'MarkerFaceColor','white');
hold on;
end
plot(x0,y0,'ks',...
'LineWidth',2,...
'MarkerSize',18,...
'MarkerFaceColor','yellow');
hold off;
grid on;
axis equal;
end
3 仿真结果
4 参考文献
[1]钱晓明, 孙颖, and 刘建. "基于混合模拟退火算法求解电表配送车辆路径问题." 11(2022).