m基于优化算法的多车辆的路径规划matlab仿真,对比GA,PSO以及烟花算法

1.算法描述

路径规划是运动规划的主要研究内容之一。运动规划由路径规划和轨迹规划组成,连接起点位置和终点位置的序列点或曲线称之为路径,构成路径的策略称之为路径规划。路径规划在很多领域都具有广泛的应用。在高新科技领域的应用有:机器人的自主无碰行动;无人机的避障突防飞行;巡航导弹躲避雷达搜索、防反弹袭击、完成突防爆破任务等。在日常生活领域的应用有:GPS导航;基于GIS系统的道路规划;城市道路网规划导航等。在决策管理领域的应用有:物流管理中的车辆问题(VRP)及类似的资源管理资源配置问题。通信技术领域的路由问题等。凡是可拓扑为点线网络的规划问题基本上都可以采用路径规划的方法解决。


烟花算法(Fireworks Algorithm),缩写为 FWA,是受到夜空中烟花爆炸的启发而提出的一种群体智能算法。

自从烟花算法的开创性论文由谭营教授等人于2010年发表之后 ,业界对烟花算法的研究逐步深入和铺开。通过对原始烟花算法的细致、深入的分析,针对原始烟花算法(FWA)的不足,提出了大量的改进方法,并据此发展了各种改进算法,以及与其他方法的混合方法,大大提高的原始烟花算法的性能,同时研究了烟花算法在求解不同类型优化问题的能力,还有大量的研究人员进行了烟花算法的应用研究,给出了一些典型的成功应用案例。

烟花算法开始迭代,依次利用爆炸算子、变异算子、映射规则和选择策略,直到达到终止条件,即满足问题的精度要求或者达到最大函数评估次数。烟花算法的实现包括如下的几个步骤:

1)在特定的解空间中随机产生一些烟花,每一个烟花代表解空间的一个解。

2)根据适应度函数计算每一个烟花的适应度值,并根据适应度值产生火花。火花的个数是基于免疫学中的免疫浓度的思想来计算的,即适应度值越好的烟花产生火花的数目越多。

3)根据现实中的烟花属性并结合搜索问题的实际情况,在烟花的辐射空间内产生火花。(某个烟花的爆炸幅度的大小由该烟花在函数上的适应度值决定,适应度值越大,爆炸幅度越大,反之亦然)。每一个火花代表解空间中的一个解。为了保证种群的多样性,需要对烟花进行适当变异,如高斯变异。

4)计算种群的最优解,判定是否满足要求,如果满足则停止搜索,没有满足则继续迭代。迭代的初始值为此次循环得到的最好的解和选择的其他的解。



2.仿真效果预览

matlab2022a仿真结果如下:




3.MATLAB核心程序

%最大迭代次数

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

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 225,271评论 6 524
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 96,533评论 3 405
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 172,580评论 0 370
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 61,203评论 1 303
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 70,204评论 6 401
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 53,664评论 1 316
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 42,014评论 3 431
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 40,991评论 0 280
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 47,536评论 1 326
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 39,558评论 3 347
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 41,678评论 1 355
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 37,267评论 5 351
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 42,997评论 3 341
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 33,429评论 0 25
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 34,580评论 1 277
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 50,259评论 3 382
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 46,744评论 2 366

推荐阅读更多精彩内容