當前位置:首頁 » 編程軟體 » matlab最優化編程

matlab最優化編程

發布時間: 2024-01-11 17:56:36

『壹』 各位誰擅長遺傳演算法呀,我這有個函數得用遺傳演算法編一下,進行最優化求解的過程,最好是用Matlab。

% 主程序
%遺傳演算法主程序
%Name:genmain.m
%author:楊冪

clear
clf
%%初始化
popsize=50; %群體大小
chromlength=30; %字元串長度(個體長度)
pc=0.6; %交叉概率
pm=0.1; %變異概率
pop=initpop(popsize,chromlength); %隨機產生初始群體
%%開始迭代
for i=1:20 %20為迭代次數
[objvalue]=calobjvalue(pop); %計算目標函數
fitvalue=calfitvalue(objvalue); %計算群體中每個個體的適應度
[newpop]=selection(pop,fitvalue); %復制
[newpop]=crossover(pop,pc); %交叉
[newpop]=mutation(pop,pm); %變異
[bestindivial,bestfit]=best(pop,fitvalue); %求出群體中適應值最大的個體及其適應值
y(i)=max(bestfit);%儲存最優個體適應值
n(i)=i;
pop5=bestindivial;%儲存最優個體
%解碼
x1(i)=decodechrom(pop5,1,chromlength/2)*2/32767;
x2(i)=10+decodechrom(pop5,chromlength/2+1,chromlength/2)*10/32767;
pop=newpop;%將新產生的種群作為當前種群
end
%%繪圖
figure(1)%最優點變化趨勢圖
i=1:20;
plot(y(i),'-r*')
xlabel('迭代次數');
ylabel('最優個體適應值');
title('最優點變化趨勢');
legend('最優點');
grid on

figure(2)%最優點分布圖
[X1,X2]=meshgrid(0:0.1:2,10:0.1:20);
Z=X1.^2+X2.^2;
mesh(X1,X2,Z);
xlabel('自變數x1'),ylabel('自變數x2'),zlabel('函數值f(x1,x2)');
hold on
plot3(x1,x2,y,'ro','MarkerEdgeColor','r','MarkerFaceColor','r','MarkerSize',5)
title('最優點分布');
legend('最優點');
hold off

[z index]=max(y); %計算最大值及其位置
x5=[x1(index),x2(index)]%計算最大值對應的x值
z

熱點內容
安卓如何在寶馬車上放歌 發布:2025-03-22 05:06:15 瀏覽:282
命令提示符進入文件夾 發布:2025-03-22 05:00:09 瀏覽:407
免費微商城源碼 發布:2025-03-22 04:40:25 瀏覽:825
歐規路虎運動都有哪些配置 發布:2025-03-22 04:21:18 瀏覽:381
二進制加法運演算法則 發布:2025-03-22 04:15:22 瀏覽:890
歌曲存儲器 發布:2025-03-22 04:11:35 瀏覽:306
java數字轉換成字元 發布:2025-03-22 03:37:08 瀏覽:140
電信企業網關用telnet如何配置 發布:2025-03-22 03:34:17 瀏覽:72
python判斷是否存在 發布:2025-03-22 03:34:13 瀏覽:733
以下存儲中編譯器管理的存儲是 發布:2025-03-22 03:33:34 瀏覽:695