程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> 源代碼-matlab程序問題,希望大神幫我注釋一下

源代碼-matlab程序問題,希望大神幫我注釋一下

編輯:編程綜合問答
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. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved