亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

matlab中如何通過遺傳算法優化BP神經網絡

發布時間:2022-01-14 10:09:16 來源:億速云 閱讀:415 作者:iii 欄目:大數據

這篇文章主要介紹“matlab中如何通過遺傳算法優化BP神經網絡”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“matlab中如何通過遺傳算法優化BP神經網絡”文章能幫助大家解決問題。

%% 清空環境變量

clc


clearmatlab中如何通過遺傳算法優化BP神經網絡

%% 網絡結構建立

%讀取數據

load data input output


%節點個數

inputnum=2;

hiddennum=5;

outputnum=1;


%訓練數據和預測數據

input_train=input(1:1900,:)';

input_test=input(1901:2000,:)';

output_train=output(1:1900)';

output_test=output(1901:2000)';


%選連樣本輸入輸出數據歸一化

[inputn,inputps]=mapminmax(input_train);

[outputn,outputps]=mapminmax(output_train);


%構建網絡

net=newff(inputn,outputn,hiddennum);


%% 遺傳算法參數初始化

maxgen=10;                         %進化代數,即迭代次數

sizepop=10;                        %種群規模

pcross=0.3;                       %交叉概率選擇,0和1之間

pmutation=0.1;                    %變異概率選擇,0和1之間


%節點總數

numsum=inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum;


lenchrom=ones(1,numsum);        

bound=[-3*ones(numsum,1) 3*ones(numsum,1)];    %數據范圍


%% 種群初始化

individuals=struct('fitness',zeros(1,sizepop), 'chrom',[]);  

%將種群信息定義為一個結構體

avgfitness=[];                      

%每一代種群的平均適應度

bestfitness=[];                     

%每一代種群的最佳適應度

bestchrom=[];                       

%適應度最好的染色體

%初始化種群

for i=1:sizepop

    %隨機產生一個種群

    individuals.chrom(i,:)=Code(lenchrom,bound);    

    %編碼

    x=individuals.chrom(i,:);

    %計算適應度

    individuals.fitness(i)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn);   %染色體的適應度

end


%找最好的染色體

[bestfitness, bestindex]=min(individuals.fitness);

bestchrom=individuals.chrom(bestindex,:);  %最好的染色體

avgfitness=sum(individuals.fitness)/sizepop; %染色體的平均適應度

% 記錄每一代進化中最好的適應度和平均適應度

trace=[avgfitness bestfitness]; 

 

%% 迭代求解最佳初始閥值和權值

% 進化開始

for i=1:maxgen

    % 選擇

    individuals=Select(individuals,sizepop); 

    avgfitness=sum(individuals.fitness)/sizepop;

    %交叉

    individuals.chrom=Cross(pcross,lenchrom,individuals.chrom,sizepop,bound);

    % 變異

    individuals.chrom=Mutation(pmutation,lenchrom,individuals.chrom,sizepop,i,maxgen,bound);

    

    % 計算適應度 

    for j=1:sizepop

        x=individuals.chrom(j,:); %解碼

        individuals.fitness(j)=fun(x,inputnum,hiddennum,outputnum,net,inputn,outputn);   

    end

    

  %找到最小和最大適應度的染色體及它們在種群中的位置

    [newbestfitness,newbestindex]=min(individuals.fitness);

    [worestfitness,worestindex]=max(individuals.fitness);

    % 代替上一次進化中最好的染色體

    if bestfitness>newbestfitness

        bestfitness=newbestfitness;

        bestchrom=individuals.chrom(newbestindex,:);

    end

    individuals.chrom(worestindex,:)=bestchrom;

    individuals.fitness(worestindex)=bestfitness;

    

    avgfitness=sum(individuals.fitness)/sizepop;

    

    trace=[trace;avgfitness bestfitness]; %記錄每一代進化中最好的適應度和平均適應度


end

%% 遺傳算法結果分析 

matlab中如何通過遺傳算法優化BP神經網絡  

 figure(1)

[r, c]=size(trace);

plot([1:r]',trace(:,2),'b--');

title(['適應度曲線  ' '終止代數=' num2str(maxgen)]);

xlabel('進化代數');ylabel('適應度');

legend('平均適應度','最佳適應度');

x=bestchrom;


%% 把最優初始閥值權值賦予網絡預測

% %用遺傳算法優化的BP網絡進行值預測

w1=x(1:inputnum*hiddennum);

B1=x(inputnum*hiddennum+1:inputnum*hiddennum+hiddennum);

w2=x(inputnum*hiddennum+hiddennum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum);

B2=x(inputnum*hiddennum+hiddennum+hiddennum*outputnum+1:inputnum*hiddennum+hiddennum+hiddennum*outputnum+outputnum);


net.iw{1,1}=reshape(w1,hiddennum,inputnum);

net.lw{2,1}=reshape(w2,outputnum,hiddennum);

net.b{1}=reshape(B1,hiddennum,1);

net.b{2}=B2;


%% BP網絡訓練

%網絡進化參數

net.trainParam.epochs=100;

net.trainParam.lr=0.1;

%net.trainParam.goal=0.00001;


%網絡訓練

[net,per2]=train(net,inputn,outputn);

matlab中如何通過遺傳算法優化BP神經網絡  

%% BP網絡預測

%數據歸一化

inputn_test=mapminmax('apply',input_test,inputps);

an=sim(net,inputn_test);

test_simu=mapminmax('reverse',an,outputps);

error=test_simu-output_test;

關于“matlab中如何通過遺傳算法優化BP神經網絡”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

大同市| 子长县| 安西县| 霍邱县| 许昌县| 娄烦县| 成都市| 台山市| 阿拉善右旗| 五家渠市| 北碚区| 冀州市| 图片| 淳安县| 正阳县| 桃园市| 彰武县| 湘阴县| 新津县| 金沙县| 琼结县| 尼木县| 永靖县| 贡觉县| 平远县| 瑞昌市| 安徽省| 洪洞县| 棋牌| 贞丰县| 海口市| 红安县| 河曲县| 和田县| 荔浦县| 介休市| 乌兰县| 勃利县| 陇川县| 和林格尔县| 忻城县|