资源简介

带佳点集理论的灰狼算法(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\

评论

共有 条评论