1 模拟退火算法的应用背景
模拟退火算法提出于1982年。Kirkpatrick等人首先意识到固体退火过程与优化问题之间存在着类似性;Metropolis等人对固体在恒定温度下达到热平衡过程的模拟也给他们以启迪。通过把Metropolis 算法引入到优化过程中,最终得到一种对 Metropolis 算法进行迭代的优化算法,这种算法类似固体退火过程,称之为“模拟退火算法”。
模拟退火算法是一种适合求解大规模组合优化问题的随机搜索算法。目前,模拟退火算法在求解 TSP,VLSI 电路设计等组合优化问题上取得了令人满意的结果。将模拟退火算法同其它的计算智能方法相结合,应用到各类复杂系统的建模和优化问题中也得到了越来越多的重视,已经逐渐成为一种重要的发展方向。
2 模拟退火算法介绍
3 模拟退火算法的参数
模拟退火是一种优化算法,它本身是不能独立存在的,需要有一个应用场合,其中温度就是模拟退火需要优化的参数,如果它应用到了聚类分析中,那么就是说聚类分析中有某个或者某几个参数需要优化,而这个参数,或者参数集就是温度所代表的。它可以是某项指标,某项关联度,某个距离等等。
%%遗传算法求解vrp问题(为选择操作从新设计后程序)
%D是距离矩阵,n为种群个数
%C为停止代数,遗传到第 C代时程序停止,C的具体取值视问题的规模和耗费的时间而定
%m为适配值淘汰加速指数,最好取为1,2,3,4,不宜太大
%交叉概率Pc,变异概率Pm
%R为最短路径,Rlength为路径长度
function VRP
t0=cputime;%计时开始
%初始化
mytimewindows;
coor;
mydemand;
% demand=[0 1 -2 1 2 -1 4 -2 2];
distance;
% D=[ 0 4 6 7.5 9 20 10 16 8;
% 4 0 6.5 4 10 5 7.5 11 10;
% 6 6.5 0 7.5 10 10 7.5 7.5 7.5;
% 7.5 4 7.5 0 10 5 9 9 15;
% 9 10 10 10 0 10 7.5 7.5 10;
% 20 5 10 5 10 0 7 7 7.5;
% 10 7.5 7.5 9 7.5 7 0 0 10;
% 16 11 7.5 9 7.5 9 7 10 10;
% 8 10 7.5 15 10 7.5 10 10 0];
popsize=70;
capacity = 25;
%经验公式m=[Σgi /aq]+1,粗求车辆数
a = 0.8; %【3】
k1 = round((sum(abs(demand))./(a*capacity))+1)-1; %最小车辆数
k2 = round((sum(abs(demand))./(a*capacity))+1)+1; %最大车辆数
original = 15;
C=200;
Pc=0.9;
Pm=0.2;
[n,nn] = size(D);
minvalue = 100000;
for k = k1:k2 %每种车辆数做一次寻优
tempR = zeros(1,n+k);
R = zeros(1,n+k);
[tempR,tempvalue] = Run_VRP(D,demand,popsize,timewindows,k,capacity,original,C,Pc,Pm);%运算返回最优路径R和其总距离Rlength
if tempvalue*k < minvalue
minvalue = tempvalue;
R = tempR;
minvehicle = k;
end
function [R,minvalue]=Run_VRP(D,demand,popsize,timewindows,k,capacity,original,C,Pc,Pm)
%RUN_VRP Summary of this function goes here
% Detailed explanation goes here
[N,NN]=size(D);%(31*31) %N是节点数
N = N - 1;
farm = zeros(popsize,N+k+1);
farm=inatialize(popsize,N,k);
R=farm(1,:);%一个随机解(个体)->用来存放最优解(最短路径)
evalue=zeros(popsize,1);%存储路径长度
alph = 0.9; %退火衰减系数
counter=0;
while counter < C
for i = 1:popsize
evalue(i,1) = myEvalue(D,farm(i,:),k,capacity,original,timewindows,demand); %计算目标函数
end
minvalue=min(evalue);%找到当前最优解
coor=find(evalue==minvalue);%返回的是在len中路径最短的路径坐标(i,1)
R=farm(coor(1,1),:);%更新最优解
if counter == 0 %计算初始退火温度
t = temp_inatial(evalue,popsize);
end
farm = select(farm,evalue,popsize,k,D,capacity,original,timewindows,demand,t);%模拟退火+轮盘赌->选择
farm = crossover(farm,N,k,popsize,Pc);
farm = variation(farm,N,k,popsize,Pm);
for i = 1:popsize
evalue(i,1) = myEvalue(D,farm(i,:),k,capacity,original,timewindows,demand); %计算目标函数
end
完整代码或者代写添加QQ1564658423。
往期回顾>>>>>>
【预测模型】基于matlab粒子群的lssvm预测【含Matlab源码 103期】
【lSSVM预测】基于matlab鲸鱼优化算法之lSSVM数据预测【含Matlab源码 104期】
【lstm预测】基于matlab鲸鱼优化算法之改进的lstm预测【含Matlab源码 105期】
【SVM预测】基于matlab蝙蝠算法改进的SVM预测(一)【含Matlab源码 106期】
【SVM预测】基于matlab灰狼算法优化svm支持向量机预测【含Matlab源码 107期】
【预测模型】基于matlab BP神经网络的预测【含Matlab源码 108期】
【lssvm预测模型】基于蝙蝠算法改进的最小二乘支持向量机lssvm预测【Matlab 109期】
【lssvm预测】基于飞蛾扑火算法改进的最小二乘支持向量机lssvm预测【Matlab 110期】
【SVM预测】基于matlab蝙蝠算法之改进的SVM预测(二)【含Matlab源码 141期】
【lssvm预测】基于matlab飞蛾扑火算法之改进的最小二乘支持向量机lssvm预测【含Matlab源码 142期】
【ANN预测模型】基于matlab差分算法改进ANN网络预测【含Matlab源码 151期】
【预测模型】基于matlab RBF神经网络预测模型【含Matlab源码 177期】
【预测模型】基于matlab SVM回归预测算法来预测股票趋势【含Matlab源码 180期】
【预测模型】基于matlab BP神经网络之模型优化预测【含Matlab源码 221期】
【预测模型】基于matlab RLS算法的数据预测【含Matlab源码 222期】
【预测模型】基于matlab碳排放约束下的煤炭消费量优化预测【含Matlab源码 223期】
【路径规划】基于matlab A星和改进A星的路径规划【含Matlab源码 225期】
【TSP】基于matlab 改进的禁忌搜索算法之求解旅行商问题【含Matlab源码 241期】
【TSP】基于matlab 改进的蚁群算法之求解旅行商问题【含Matlab源码 242期】
【路径规划】基于matlab模拟退火算法之求解火灾巡逻最短路径【含Matlab源码 252期】
【三维路径规划】基于matlab 无人机三维空间的航迹规划【含Matlab源码 270期】
【路径规划】基于matlab分布式目标检测和跟踪的多无人机【含Matlab源码 289期】
【路径规划】基于matlab粒子群算法求解无人机最短路径【含Matlab源码 300期】
【无人机】多无人协同任务分配程序平台【含Matlab源码 301期】
【路径规划】基于matlab任意架次植保无人机作业路径规划【含Matlab源码 322期】
【路径规划】基于matlab粒子群遗传求解多无人机三维路径规划【含Matlab源码 333期】
【VRP问题】基于matlab粒子群求解VRPTW模型【含Matlab源码 334期】
【路径规划】基于matlab改进蚁群算法的路径规划【含Matlab源码 335期】
【VRP】基于matlab改进的模拟退火和遗传算法求解VRP问题【含Matlab源码 343期】
【VRP问题】基于matlab灰狼算法求解VRPTW问题【含Matlab源码 361期】