當前位置:首頁 » 編程軟體 » 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

熱點內容
android上傳多個文件 發布:2024-11-16 22:36:24 瀏覽:312
蘋果微信25區怎麼改為安卓區 發布:2024-11-16 22:32:39 瀏覽:650
數控編程輕松 發布:2024-11-16 22:23:38 瀏覽:813
能緩存老友記的播放器 發布:2024-11-16 22:22:16 瀏覽:479
python寫入文件字典 發布:2024-11-16 22:21:14 瀏覽:14
androidandbase 發布:2024-11-16 22:16:34 瀏覽:417
phpifecho 發布:2024-11-16 21:57:11 瀏覽:723
android動態載入布局 發布:2024-11-16 21:37:54 瀏覽:799
php判斷ip 發布:2024-11-16 21:07:03 瀏覽:739
有看頭密碼怎麼改 發布:2024-11-16 20:57:39 瀏覽:327