seo网站推广报价,微信营销平台系统,网站建设布局利于优化,动态视频素材网站1.白鲸优化算法 参考论文#xff1a;Zhong C, Li G, Meng Z. Beluga whale optimization: A novel nature-inspired metaheuristic algorithm[J]. Knowledge-Based Systems, 2022: 109215. 主要内容#xff1a;本文提出了一种基于白鲸行为的元启发式算法白鲸优化(BWO)来解决优…1.白鲸优化算法 参考论文Zhong C, Li G, Meng Z. Beluga whale optimization: A novel nature-inspired metaheuristic algorithm[J]. Knowledge-Based Systems, 2022: 109215. 主要内容本文提出了一种基于白鲸行为的元启发式算法白鲸优化(BWO)来解决优化问题。BWO建立了探索、开发和捕鲸三个阶段分别对应于对游、猎物和落鲸的行为。BWO中鲸鱼跌倒的平衡因子和概率是自适应的对控制勘探开发能力起着重要作用。此外在开发阶段引入了征税飞行来增强全球收敛性。利用30个基准函数对该BWO的有效性进行了测试并进行了定性、定量和可扩展性分析并将统计结果与其他15种元启发式算法进行了比较。根据结果和讨论BWO是一种解决单峰和多模态优化问题的竞争算法通过弗里德曼排名检验第一个比较元启发式算法之间基准函数的可扩展性分析。最后四个工程问题证明了BWO在解决复杂的现实世界优化问题中的优点和潜力。 白鲸的行为示意图如下游泳对应于勘探阶段觅食对应于开发阶段鲸鱼坠落为鲸鱼坠落的阶段。 算法总体框架示意图如下 2.NSGAII 参考论文Deb K, Pratap A, Agarwal S, et al. A fast and elitist multiobjective genetic algorithm: NSGA-II[J]. IEEE transactions on evolutionary computation, 2002, 6(2): 182-197. 3.多目标白鲸优化算法(MOBWO) 在原论文中白鲸优化算法是对单目标进行优化的。这里为了实现多目标白鲸优化算法现将白鲸优化算法嵌入到NSGAII中从而解决多目标优化问题。程序具体由matlab编程实现具体核心代码如下所示
1多目标白鲸优化算法MOBWO无约束版本
%---------------------------------------------------------------------
%程序功能实现多目标白鲸优化算法MOBWO无约束测试函数为ZDT1,ZDT2,ZDT3,ZDT4,ZDT6,DTLZ1,DTLZ2
%择优策略非支配排序拥挤度计算精英选择
%交配池二元竞争选择
%遗传算子白鲸优化算法BWO
%参考论文1Deb K, Pratap A, Agarwal S, et al. A fast and elitist multiobjective
%genetic algorithm: NSGA-II[J]. IEEE transactions on evolutionary computation, 2002, 6(2): 182-197.
%参考论文2Zhong C, Li G, Meng Z. Beluga whale optimization: A novel nature-inspired
%metaheuristic algorithm[J]. Knowledge-Based Systems, 2022: 109215.
%创建时间2022.8.29
%----------------------------------------------------------------------
clear all
clc
tic;
%参数设置
funZDT4;
funfun;%函数选择
pop100;%种群大小100
gen1000;%250进化代数
pc1;%交叉概率
pm1/x_num;%变异概率
yita11;%模拟二进制交叉参数
yita220;%多项式变异参数
chromoinitialize(pop,f_num,x_num,x_min,x_max,fun);%初始化种群
%初始种群的非支配排序
[F1,chromo_non]non_domination_sort(pop,chromo,f_num,x_num);%F为pareto等级为pareto_rank的集合%p为每个个体p的集合(包括每个个体p的被支配个数n和该个体支配的解的集合s),chromo最后一列加入个体的等级
%计算拥挤度进行排序
chromocrowding_distance_sort(F1,chromo_non,f_num,x_num);
%循环开始
for i1:gen%二进制竞赛选择(k取了pop/2所以选两次)chromo_parent_1 tournament_selection(chromo);%从整个种群中选择一半的种群chromo_parent_2 tournament_selection(chromo);%从整个种群中选择一半的种群chromo_parent[chromo_parent_1;chromo_parent_2];%合并种群chromo_offspring BWO(pop,gen,i,x_min,x_max,x_num,chromo,f_num,fun);%精英保留策略%将父代和子代合并[pop_parent,~]size(chromo);[pop_offspring,~]size(chromo_offspring);combine_chromo(1:pop_parent,1:(f_numx_num))chromo(:,1:(f_numx_num));combine_chromo((pop_parent1):(pop_parentpop_offspring),1:(f_numx_num))chromo_offspring(:,1:(f_numx_num));%快速非支配排序[pop2,~]size(combine_chromo);[F2,combine_chromo1]non_domination_sort(pop2,combine_chromo,f_num,x_num);%计算拥挤度进行排序combine_chromo2crowding_distance_sort(F2,combine_chromo1,f_num,x_num);%精英保留产生下一代种群chromoelitism(pop,combine_chromo2,f_num,x_num);if mod(i,10) 0%10代提醒一次fprintf(%d gen has completed!\n,i);%若是则输出多少代完成的提示end
end
hold on
if(f_num2)plot(chromo(:,x_num1),chromo(:,x_num2),ro);
end
if(f_num3)plot3(chromo(:,x_num1),chromo(:,x_num2),chromo(:,x_num3),ro);
end2多目标白鲸优化算法MOBWO处理约束版本
clear
clc
global V M xl xu etac etam p pop_size pm p1 p2 pc
%% 描述
%---------------------------------------------------------------------
%程序功能实现约束多目标白鲸优化算法MOBWO
%测试函数1:Test1(BNH无约束) 2:ZDT1 3:kUR 4:SCH 5:ZDT2 6:Test2 7:ZDT3 8:ZDT4
%9:ZDT6 10:BNH 11:SRN 12:TNK 13:OSY 14:CONSTR 15:FON 16:POL
%择优策略非支配排序拥挤度计算精英选择可行性法则
%交配池二元竞争选择
%遗传算子白鲸优化算法BWO
%参考论文1Deb K, Pratap A, Agarwal S, et al. A fast and elitist multiobjective
%genetic algorithm: NSGA-II[J]. IEEE transactions on evolutionary computation, 2002, 6(2): 182-197.
%参考论文2Zhong C, Li G, Meng Z. Beluga whale optimization: A novel nature-inspired
%metaheuristic algorithm[J]. Knowledge-Based Systems, 2022: 109215.
%创建时间2022.8.31
%----------------------------------------------------------------------
%% 程序开始
%pinput(Test problem index :);%输入测试函数索引
%测试集test_case 测试序列p1:Test1(BNH无约束) 2:ZDT1 3:kUR 4:SCH 5:ZDT2 6:Test2 7:ZDT3 8:ZDT4
%9:ZDT6 10:BNH 11:SRN 12:TNK 13:OSY 14:CONSTR 15:FON 16:POL
%测试集test_case1 测试序列p11:单目标 8约束 2:单目标 2约束 3:单目标 12约束
%测试集test_case2 测试序列p21:DTLZ1 2:DTLZ2 3:DTLZ3
%% 公共参数
fnametest_case;%测试案例:test_case,test_case1,test_case2
M2;%目标函数数量,可选1,2,3
p16;%2目标测试函数
p13;%1目标测试函数
p21;%3目标测试函数
pop_size100;%种群大小
gen_max250;%最大停止的代数
pc1;%交叉概率
etac 20;%分配交叉的索引20
etam 20;%分配变异的索引20100
%% 2目标测试函数参数设置
if M2
if p9%无约束测试函数
tV[2;30;3;1;30;4;30;10;10];%每各个体的维数
VtV(p);%选择维数
txl[-5*ones(1,V);zeros(1,V);-5*ones(1,V);-1000*ones(1,V);zeros(1,V);-1/sqrt(V)*ones(1,V);zeros(1,V); 0 -5*ones(1,V-1);zeros(1,V)]; %因为有九个测试函数所以获取一个9行加维数列个数据
txu[10*ones(1,V); ones(1,V);5*ones(1,V);1000*ones(1,V);ones(1,V);1/sqrt(V) *ones(1,V);ones(1,V);1 5*ones(1,V-1);ones(1,V)];%因为有九个测试函数所以获取一个9行加维数列个数据
xl(txl(p,1:V)); % 取值下限
xu(txu(p,1:V)); % 取值上限
etac 20; % 分配交叉的指数
etam 20; % 分配变异的指数
pm1/V;%变异概率
else %约束测试函数
p1p-9;
if p18
tV[2;2;2;6;2;3;2];%分配维数
VtV(p1);%获取维数
txl[0 0 0 0 0 0;-20 -20 0 0 0 0;0 0 0 0 0 0;0 0 1 0 1 0;0.1 0 0 0 0 0;-4*ones(1,6);-pi*ones(1,6)];%分配5行6列的个体
txu[5 3 0 0 0 0;20 20 0 0 0 0;pi pi 0 0 0 0;10 10 5 6 5 10;1 5 0 0 0 0;4*ones(1,6);pi*ones(1,6)];%分配5行6列的个体
xl(txl(p1,1:V)); % 取值下限
xu(txu(p1,1:V)); % 取值上限
pm1/V;%变异概率
end
if p18
V50;
xlzeros(1,V); % 取值下限
xuones(1,V); % 取值上限
pm1/V;%变异概率
end
if p19
V15;
xlzeros(1,V); % 取值下限
xuones(1,V); % 取值上限
pm1/V;%变异概率
end
if p110
V15;
xlzeros(1,V); % 取值下限
xuones(1,V); % 取值上限
pm1/V;%变异概率
end
if p111
V15;
xlzeros(1,V); % 取值下限
xuones(1,V); % 取值上限
pm1/V;%变异概率
end
if p112
V4;
xl[55 75 1000 2]; % 取值下限
xu[80 110 3000 20]; % 取值上限
pm1/V;%变异概率
end
end
end
%% 3目标测试函数参数设置
if M3
if p21V7;xlzeros(1,V); xuones(1,V);
end
if p22V5;xlzeros(1,V); xuones(1,V);
end
pm1/V;%变异概率
end
%% 1目标测试函数参数设置
if M1
if p11V10;xl-10*ones(1,V); xu10*ones(1,V);
elseif p12V2;xlzeros(1,V); xu6*ones(1,V);
elseif p13V8;xl10*ones(1,V); xu1000*ones(1,V);
end
pm1/V;%变异概率
end
%% 初始化
xl_temprepmat(xl, pop_size,1);%将x1复制pop_size份到x1_temp中repmat(x1,a,b):
%这个函数所表达的意思为将x1中的行复制a份列复制b份到一个新的矩阵中去可以用来初始化种群
xu_temprepmat(xu, pop_size,1);%将xu复制pop_size份到xu_temp中
x xl_temp((xu_temp-xl_temp).*rand(pop_size,V));%初始化种群x这里用的是点乘
if p2||p5||p7||p8||p9PPPareto_F(p);%获取真实的帕累托前沿面
end
%% 目标评估
for i 1:pop_size%评估函数值
[ff(i,:), err(i,:)] feval(fname, x(i,:));%目标函数评估等价于[ff(i,:) err(i,:)]test_case(x)
end
error_normnormalisation(err);% 标准化违约度值对种群中每个个体的违约度进行标准化
population_init[x ff error_norm];%得到初始化种群其中包括种群的大小目标函数值违约度值
[population, front]NDS_CD_cons(population_init);%对于初始化种群进行非支配排序
%% 迭代开始
for gen_count1:gen_max
%% 选择pop_size种群大小
parent_selectedtour_selection(population);%二元竞赛选择
%% 产生后代
child_offspring BWO(pop_size,gen_max,i,xl,xu,V,parent_selected,M);
for ii 1:pop_size
[fff(ii,:), err(ii,:)]feval(fname, child_offspring(ii,:));% 对后代进行评估
end
error_normnormalisation(err);
child_offspring[child_offspring fff error_norm];%得到初始化子代种群其中包括种群的大小目标函数值违约度值
%% 后代种群并上子代种群得到大小为2N的新种群
population_inter[population(:,1:VM1) ; child_offspring(:,1:VM1)];%合并子代和父代的种群大小为2N
[population_inter_sorted, front]NDS_CD_cons(population_inter);%对新种群进行非支配排序
%% 挑选大小为N的新种群
new_popreplacement(population_inter_sorted, front);
populationnew_pop;%更新种群为新种群
if M1bestf(gen_count,:)min(new_pop(:,VM));
end
end
new_popsortrows(new_pop,V1);%按照目标函数值1进行排序
%% 画出帕累托前沿点
if M2if p2||p5||p7||p8||p9plot(PP(:,1),PP(:,2),g*);end
end
hold on;
if M2
plot(new_pop(:,V1),new_pop(:,V2),ro);
elseif M1
plot(bestf,r-);
elseif M3
plot3(new_pop(:,V1),new_pop(:,V2),new_pop(:,V3),ro);
end
xlabel(objective function 1)
ylabel(objective function 2)
if M2switch p case 1title( 1 - Test1)case 2title( 2 - ZDT1)case 3 title( 3 - KUR)case 4title( 4 - SCH)case 5title( 5 - ZDT2)case 6title( 6 - Test2)case 7title( 7 - ZDT3)case 8title( 8 - ZDT4)case 9title( 9 - ZDT6)case 10title( 10 - BNH)case 11title( 11 - SRN)case 12title( 12 - TNK)case 13title( 13 - OSY)case 14title( 14 - CONSTR)case 15title( 15 - FON)case 16title( 16 - POL)end
end具体的代码资源https://download.csdn.net/download/weixin_41929577/86506857