當前位置:首頁 » 編程軟體 » 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-09-18 04:33:52 瀏覽:436
ad轉換c語言 發布:2025-09-18 04:21:21 瀏覽:752
sqlserver2008設置外鍵 發布:2025-09-18 04:21:12 瀏覽:114
伺服器電腦電源管理 發布:2025-09-18 03:52:33 瀏覽:324
叉叉助手刪除腳本 發布:2025-09-18 03:21:24 瀏覽:851
深圳ug五軸編程培訓 發布:2025-09-18 03:13:35 瀏覽:198
安卓軟體殘留怎麼清理 發布:2025-09-18 03:02:02 瀏覽:345
centos7apachephp7 發布:2025-09-18 03:01:47 瀏覽:657
安卓如何實現點擊彈出列表 發布:2025-09-18 02:47:25 瀏覽:58
python文件函數 發布:2025-09-18 02:47:23 瀏覽:574