资源简介
带佳点集理论的灰狼算法(GWO),求解带约束的非线性规划问题。可直接运行。
代码片段和文件信息
tic % 计时器
%% 清空环境变量
clear
clc
%% 利用灰狼算法选择最佳的SVM参数c和g
SearchAgents_no=20; % 狼群数量,Number of search agents
Max_iteration=100; % 最大迭代次数,Maximum numbef of iterations
dim=2; % 此例需要优化两个参数c和g,number of your variables
lb=[0.010.01]; % 参数取值下界
ub=[100100]; % 参数取值上界
% v = 5; % SVM Cross Validation参数默认为5
% initialize alpha beta and delta_pos
Alpha_pos=zeros(1dim); % 初始化Alpha狼的位置
Alpha_score=inf; % 初始化Alpha狼的目标函数值,change this to -inf for maximization problems
Beta_pos=zeros(1dim); % 初始化Beta狼的位置
Beta_score=inf; % 初始化Beta狼的目标函数值,change this to -inf for maximization problems
Delta_pos=zeros(1dim); % 初始化Delta狼的位置
Delta_score=inf; % 初始化Delta狼的目标函数值,change this to -inf for maximization problems
%Initialize the positions of search agents
Positions=initialization(SearchAgents_nodimublb);
Convergence_curve=zeros(1Max_iteration);
l=0; % Loop counter循环计数器
% Main loop主循环
while l for i=1:size(Positions1) % 遍历每个狼
flag=1;
% Return back the search agents that go beyond the boundaries of the search space
% 若搜索位置超过了搜索空间,需要重新回到搜索空间
Flag4ub=Positions(i:)>ub;
Flag4lb=Positions(i:)
% 若狼的位置在最大值和最小值之间,则位置不需要调整,若超出最大值,最回到最大值边界;
% 若超出最小值,最回答最小值边界
Positions(i:)=(Positions(i:).*(~(Flag4ub+Flag4lb)))+ub.*Flag4ub+lb.*Flag4lb; % ~表示取反
if(conf(Positions(i1)Positions(i2)))%如不满足约束条件
flag=0;
end
if(flag==1) %如满足约束条件
% 计算适应度函数值
fitnessw=f(Positions(i1)Positions(i2));
fitness=fitnessw; % 正求最小值,负求最大值
% Update Alpha Beta and Delta
if fitness Alpha_score=fitness; % 则将Alpha狼的目标函数值更新为最优目标函数值,Update alpha
Alpha_pos=Positions(i:); % 同时将Alpha狼的位置更新为最优位置
end
if fitness>Alpha_score && fitness Beta_score=fitness; % 则将Beta狼的目标函数值更新为最优目标函数值,Update beta
Beta_pos=Positions(i:); % 同时更新Beta狼的位置
end
if fitness>Alpha_score && fitness>Beta_score && fitness Delta_score=fitness; % 则将Delta狼的目标函数值更新为最优目标函数值,Update delta
Delta_pos=Positions(i:); % 同时更新Delta狼的位置
end
end
end
a=2*cos(l/Max_iteration*pi/2); % 对每一次迭代,计算相应的a值,a decreases linearly fron 2 to 0
% Update the Position of search agents including omegas
for i=1:size(Positions1) % 遍历每个狼
for j=1:size(Positions2) % 遍历每个维度
% 包围猎物,位置更新
r1=rand(); % r1 is a random number in [01]
r2=rand(); % r2 is a random number in [01]
A1=2*a*r1-a; % 计算系数A,Equation (3.3)
C1=2*r2; % 计算系数C,Equation (3.4)
% Alpha
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 4789 2019-11-08 12:08 JGWO\CalGWO.m
文件 1779 2019-11-08 12:04 JGWO\Calolot.m
文件 1753133 2016-09-08 10:07 JGWO\GWO_finalVersion.pdf
文件 171 2019-11-07 11:31 JGWO\conf.m
文件 101 2019-11-07 11:32 JGWO\f.m
文件 2091 2019-11-08 12:04 JGWO\initialization.m
目录 0 2019-11-08 12:04 JGWO\
- 上一篇:BabeLua For Visual Studio
- 下一篇:大学生综合测评系统
评论
共有 条评论