1.完整项目描述和程序获取
>面包多安全交易平台:https://mbd.pub/o/bread/Y52XlZxy
>如果链接失效,可以直接打开本站店铺搜索相关店铺:
>如果链接失效,程序调试报错或者项目合作也可以加微信或者QQ联系。
2.部分仿真图预览
3.算法概述
路径规划是运动规划的主要研究内容之一。运动规划由路径规划和轨迹规划组成,连接起点位置和终点位置的序列点或曲线称之为路径,构成路径的策略称之为路径规划。路径规划在很多领域都具有广泛的应用。在高新科技领域的应用有:机器人的自主无碰行动;无人机的避障突防飞行;巡航导弹躲避雷达搜索、防反弹袭击、完成突防爆破任务等。在日常生活领域的应用有:GPS导航;基于GIS系统的道路规划;城市道路网规划导航等。在决策管理领域的应用有:物流管理中的车辆问题(VRP)及类似的资源管理资源配置问题。通信技术领域的路由问题等。凡是可拓扑为点线网络的规划问题基本上都可以采用路径规划的方法解决。
4.部分源码
%最大迭代次数
Iteration = 100;
%种群数目
Pops = 1000;
c1 = 2.5; %学习因子1
c2 = 2.5; %学习因子2
w = 0.9; %惯性权重
%初始化路线存储变量
Routes = func_routeList(Dim);
Lens = length(Routes);
Lens2 = 30;
Tabu = zeros(Lens,1);
%初始化
Sets.Posxy = [];
Sets.fitness = [];
Sets.pops = [];
pop = repmat(Sets,Pops,1);
BestSol.fitness = inf;
%初始化种群
for i=1:Pops
pop(i).Posxy = randperm(Dim);
[pop(i).fitness,pop(i).pops] = Objs(pop(i).Posxy);
y(i).Posxy = pop(i).Posxy;
newpop(i).Posxy = pop(i).Posxy;
end
Bestfit = zeros(Iteration,1);
NewSets = Sets;
pg = pop(1).Posxy;
for it=1:Iteration
it
for i=1:Pops
if it==1
v{i} = c1*rand*(y(i).Posxy-newpop(i).Posxy)+c2*rand*(pg-newpop(i).Posxy);
else
v{i} = w*v{i}+c1*rand*(y(i).Posxy-newpop(i).Posxy)+c2*rand*(pg-newpop(i).Posxy);
end
end
for i=1:Pops
tmps = newpop(i).Posxy+v{i};
[VV,II] = sort(tmps);
newpop(i).Posxy = II;
tmps = newpop(i).Posxy;
for ij = 1:length(tmps)
if tmps(ij)<=1;
tmps(ij)=1;
end
end
newpop(i).Posxy = tmps;
end
%更新目标
for i = 1:Pops
[newpop(i).fitness,newpop(i).pops] = Objs(newpop(i).Posxy);
if pop(i).fitness<BestSol.fitness
BestSol=pop(i);
end
y(i).Posxy = newpop(i).Posxy;
end
%路线处理
pop = [pop;newpop'];
[Vmax,Idx] = sort([pop.fitness]);
pop = pop(Idx(1:Pops));
pops = pop(1);
bestnewsol = pop(1);
for i=1:Lens
if Tabu(i)==0
newsol.Posxy = func_variation2(pops.Posxy ,Routes{i});
[newsol.fitness,newsol.pops] = Objs(newsol.Posxy);
newsol.ActionIndex = i ;
if newsol.fitness<=bestnewsol.fitness
bestnewsol = newsol;
end
end
end
if pops.fitness == bestnewsol.fitness
pops = bestnewsol;
pops.ActionIndex = [] ;
else
pops = bestnewsol ;
end
for i=1:Lens
if i== pops.ActionIndex
Tabu(i)=Lens2;
else
Tabu(i)=max(Tabu(i)-1,0);
end
end
pop(1).Posxy = pops.Posxy ;
pop(1).fitness = pops.fitness;
pop(1).pops = pops.pops;
if pop(1).fitness <= BestSol.fitness
BestSol=pop(1);
end
Bestfit(it)= BestSol.fitness;
pg = pop(1).Posxy;
end
bestN = BestSol.pops.Infor_Route.seqs;
for ij = 1:Sysm.NCar
seqs2{ij} = BestSol.pops.Infor_Route(ij).seqs;
LENS(ij) = BestSol.pops.Infor_Route(ij).Rlen;
end
02_105m