日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

利用神经网络 遗传算法求得函数极小极大值

發布時間:2025/4/16 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 利用神经网络 遗传算法求得函数极小极大值 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.



<span style="font-size:18px;">clc cleartic %% 訓練數據預測數據提取及歸一化 %下載輸入輸出數據 load data1 input output%從1到2000間隨機排序 k=rand(1,4000); [m,n]=sort(k);%找出訓練數據和預測數據 input_train=input(n(1:3900),:)'; output_train=output(n(1:3900),:)'; input_test=input(n(3901:4000),:)'; output_test=output(n(3901:4000),:)';%選連樣本輸入輸出數據歸一化 [inputn,inputps]=mapminmax(input_train); [outputn,outputps]=mapminmax(output_train);%% BP網絡訓練 % %初始化網絡結構 net=newff(inputn,outputn,5);net.trainParam.epochs=100; net.trainParam.lr=0.1; net.trainParam.goal=0.0000004;%網絡訓練 net=train(net,inputn,outputn);%% BP網絡預測 %預測數據歸一化 inputn_test=mapminmax('apply',input_test,inputps);%網絡預測輸出 an=sim(net,inputn_test);%網絡輸出反歸一化 BPoutput=mapminmax('reverse',an,outputps);%% 結果分析figure(1) plot(BPoutput,':og') hold on plot(output_test,'-*'); legend('預測輸出','期望輸出','fontsize',12) title('BP網絡預測輸出','fontsize',12) xlabel('樣本','fontsize',12) ylabel('輸出','fontsize',12)%預測誤差 error=BPoutput-output_test;figure(2) plot(error,'-*') title('神經網絡預測誤差')figure(3) plot((output_test-BPoutput)./BPoutput,'-*'); title('神經網絡預測誤差百分比')errorsum=sum(abs(error))tocsave data net inputps outputps</span>


遺傳算法部分:


<span style="font-size:18px;">%% 該代碼為基于神經網絡遺傳算法的系統極值尋優 %% 清空環境變量 clc clear%% 初始化遺傳算法參數 %初始化參數 maxgen=100; %進化代數,即迭代次數 sizepop=20; %種群規模 pcross=[0.4]; %交叉概率選擇,0和1之間 pmutation=[0.2]; %變異概率選擇,0和1之間lenchrom=[1 1]; %每個變量的字串長度,如果是浮點變量,則長度都為1 bound=[-5 5;-5 5]; %數據范圍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); %染色體的適應度 end %找最好的染色體 [bestfitness bestindex]=min(individuals.fitness); bestchrom=individuals.chrom(bestindex,:); %最好的染色體 avgfitness=sum(individuals.fitness)/sizepop; %染色體的平均適應度 % 記錄每一代進化中最好的適應度和平均適應度 trace=[avgfitness bestfitness]; %% 迭代尋優 % 進化開始 for i=1:maxgeni% 選擇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:sizepopx=individuals.chrom(j,:); %解碼individuals.fitness(j)=fun(x); end%找到最小和最大適應度的染色體及它們在種群中的位置[newbestfitness,newbestindex]=min(individuals.fitness);[worestfitness,worestindex]=max(individuals.fitness);% 代替上一次進化中最好的染色體if bestfitness>newbestfitnessbestfitness=newbestfitness;bestchrom=individuals.chrom(newbestindex,:);endindividuals.chrom(worestindex,:)=bestchrom;individuals.fitness(worestindex)=bestfitness;avgfitness=sum(individuals.fitness)/sizepop;trace=[trace;avgfitness bestfitness]; %記錄每一代進化中最好的適應度和平均適應度 end %進化結束%% 結果分析 [r c]=size(trace); plot([1:r]',trace(:,2),'r-'); title('適應度曲線','fontsize',12); xlabel('進化代數','fontsize',12);ylabel('適應度','fontsize',12); axis([0,100,0,1]) disp('適應度 變量'); x=bestchrom; % 窗口顯示 disp([bestfitness x]); </span>

《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

總結

以上是生活随笔為你收集整理的利用神经网络 遗传算法求得函数极小极大值的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。