qq_31247931
风雨悠扬
2015-09-13 01:29
采纳率: 100%
浏览 2.0k
已采纳

matlab程序问题,希望大神帮我注释一下

 %%请大神帮我注释一下,网上找的源代码,但是注释不全
%%  清空环境
clear
clc
tic
%% 参数初始化
% 粒子群算法中的两个参数
c1 = 1.49445;
c2 = 1.49445;

maxgen  = 200; % 进化次数
sizepop = 20;  % 种群规模

Vmax = 1;
Vmin = -1;
popmax = 5;
popmin = -5;

%% 产生初始粒子和速度
for i = 1:sizepop
    % 随机产生一个种群
    pop(i,:) = 5 * rands(1,2); % 初始种群
    V(i,:) = rands(1,2);   % 初始化速度
    % 计算适应度
    fitness(i) = fun(pop(i,:));  % 染色体的适应度
end

% 找最好的染色体
[bestfitness bestindex] = min(fitness);
zbest = pop(bestindex,:);  % 全局最佳
gbest = pop;  % 个体最佳
fitnessgbest = fitness;  % 个体最佳适应度值
fitnesszbest = bestfitness;  % 全局最佳适应度值
%% 迭代寻优
for i = 1:maxgen
    for j = 1:sizepop

        % 速度更新
        V(j,:) = V(j,:) + c1*rand*(gbest(j,:) - pop(j,:)) + c2*rand*(zbest - pop(j,:));
        V(j,find(V(j,:)>Vmax)) = Vmax;
        V(j,find(V(j,:)<Vmin)) = Vmin;

        %种群更新
        pop(j,:) = pop(j,:) + 0.5*V(j,:);
        pop(j,find(pop(j,:)>popmax)) = popmax;
        pop(j,find(pop(j,:)<popmin)) = popmin;

        % 自适应变异
        if rand > 0.8
            k = ceil(2*rand);
            pop(j,k) = rand;
        end

        % 适应度值
        fitness(j) = fun(pop(j,:));
    end

    % 个体最优更新
    if fitness(j) < fitnessgbest(j)
        gbest(j,:) = pop(j,:);
        fitnessgbest(j) = fitness(j);
    end

    % 群体最优更新
    if fitness(j) < fitnesszbest
        zbest = pop(j,:);
        fitnesszbest = fitness(j);
    end

    yy(i) = fitnesszbest;

end
toc
%% 结果分析
plot(yy);
title(['适应度曲线    ' '终止代数=' num2str(maxgen)]);
xlabel('进化代数');
ylabel('适应度');
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • SunliyMonkey
    SunliyMonkey 2015-09-13 06:28
    已采纳

    果断自己,边读边注释呀,才有提高

    点赞 评论

相关推荐