導航:首頁 > 五金知識 > matlab遺傳工具箱如何實現循環判斷

matlab遺傳工具箱如何實現循環判斷

發布時間:2022-05-24 02:55:24

A. matlab 遺傳演算法工具箱

有可能是沒有了,也有可能是你安裝的版本裡面沒有,需要去官方網站購買。你用專的是正版嗎?正版的網路屬授權可以使用大部分的工具箱。 如果是D版,很可能是你用的版本正好沒有這個。 如果只是用到一些函數,你可以去別人的電腦復制這個工具箱的函數(老版本的估計也能用),添加路徑以後可能也可以用的。

B. 怎麼使用matlab遺傳演算法工具箱GUI


有的
你只要在matlab的command中輸入gatool就會出現遺傳工具箱的gui界面所有通過版命令行權實現的options都可以通過這個界面設置,很方便也很傻瓜,挺好用的如果需要,還可以使用菜單中的file將gui文件保存為m代碼,這樣就不需要自己寫程序,卻得到了m代碼

C. MATLAB遺傳演算法工具箱該怎麼使用呢

直接在命令窗口裡邊輸入gatool就行了,用遺傳演算法還可以使用ga函數,具體使用格式可以在help系統里看ga,你還可以按照如下步驟打開遺傳演算法工具箱:1,打開MATLAB,2點擊左下方的START按鈕 3,點toolboxes,打開後選擇Genetic Algorithm and Direct Search 然後就可以進入gatool了,然後就會彈出ga工具箱(註:我的版本是7.7的,不同版本可能不同),希望對你有用哈!

D. matlab的遺傳演算法優化工具箱怎麼用

如果按照默認設來置來運行GA,輸入源fitness函數和未知量個數,就可以運行了。通常,優化問題的目標函數就是fitness函數。如果想重新設置一下GA的參數,可在options處,設置,具體參數設置還要看看幫助文件。

E. matlab 遺傳演算法工具箱怎麼用

推薦用shefiled的GA工具箱,裡面的子函數寫的很好,調用很方便。 配合一本gA的書內 學的很快;
另外 關於你這容個問題, 你的目標函數和約束函數是否在工作目錄下,還有 在調用的時候 在函數名前面加@試試, 希望能幫到你

F. matlab怎麼使用上次循環的結果做為判斷條件

用一個臨時變數保存每次的循環結果,每次出結果與該值比較,不等則覆蓋,相等則break

G. 利用MATLAB工具箱里怎麼對遺傳演算法編程序帶有約束條件的。


做一個循環來判斷
如果不符合條件,重新產生一個新的值
當然為了要提高效率,生成函數一定要仔細選取
負責會一直在循環內打轉,出不來

H. MATLAB遺傳演算法

function ret=Code(lenchrom,bound)
%本函數將變數編碼成染色體,用於隨機初始化一個種群
% lenchrom input : 染色體長度
% bound input : 變數的取值范圍
% ret output: 染色體的編碼值

flag=0;
while flag==0
pick=rand(1,length(lenchrom));
ret=bound(:,1)'+(bound(:,2)-bound(:,1))'.*pick; %線性插值
flag=test(lenchrom,bound,ret); %檢驗染色體的可行性
end
function ret=Cross(pcross,lenchrom,chrom,sizepop,bound)
%本函數完成交叉操作
% pcorss input : 交叉概率
% lenchrom input : 染色體的長度
% chrom input : 染色體群
% sizepop input : 種群規模
% ret output : 交叉後的染色體

for i=1:sizepop

% 隨機選擇兩個染色體進行交叉
pick=rand(1,2);
while prod(pick)==0
pick=rand(1,2);
end
index=ceil(pick.*sizepop);
% 交叉概率決定是否進行交叉
pick=rand;
while pick==0
pick=rand;
end
if pick>pcross
continue;
end
flag=0;
while flag==0
% 隨機選擇交叉位置
pick=rand;
while pick==0
pick=rand;
end
pos=ceil(pick.*sum(lenchrom)); %隨機選擇進行交叉的位置,即選擇第幾個變數進行交叉,注意:兩個染色體交叉的位置相同
pick=rand; %交叉開始
v1=chrom(index(1),pos);
v2=chrom(index(2),pos);
chrom(index(1),pos)=pick*v2+(1-pick)*v1;
chrom(index(2),pos)=pick*v1+(1-pick)*v2; %交叉結束
flag1=test(lenchrom,bound,chrom(index(1),:)); %檢驗染色體1的可行性
flag2=test(lenchrom,bound,chrom(index(2),:)); %檢驗染色體2的可行性
if flag1*flag2==0
flag=0;
else flag=1;
end %如果兩個染色體不是都可行,則重新交叉
end
end
ret=chrom;

clc
clear all
% warning off

%% 遺傳演算法參數
maxgen=50; %進化代數
sizepop=100; %種群規模
pcross=[0.6]; %交叉概率
pmutation=[0.1]; %變異概率
lenchrom=[1 1]; %變數字串長度
bound=[-5 5;-5 5]; %變數范圍

%% 個體初始化
indivials=struct('fitness',zeros(1,sizepop), 'chrom',[]); %種群結構體
avgfitness=[]; %種群平均適應度
bestfitness=[]; %種群最佳適應度
bestchrom=[]; %適應度最好染色體
% 初始化種群
for i=1:sizepop
indivials.chrom(i,:)=Code(lenchrom,bound); %隨機產生個體
x=indivials.chrom(i,:);
indivials.fitness(i)= (x(1)*exp(-(x(1)^2 + x(2)^2)));
%-20*exp(-0.2*sqrt((x(1)^2+x(2)^2)/2))-exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)+20+2.71289
% 這個是我的測試函數
% 如果有這個函數的話,可以得到最優值

end
%找最好的染色體
[bestfitness bestindex]=min(indivials.fitness);
bestchrom=indivials.chrom(bestindex,:); %最好的染色體
avgfitness=sum(indivials.fitness)/sizepop; %染色體的平均適應度
% 記錄每一代進化中最好的適應度和平均適應度
trace=[];

%% 進化開始
for i=1:maxgen

% 選擇操作
indivials=Select(indivials,sizepop);
avgfitness=sum(indivials.fitness)/sizepop;
% 交叉操作
indivials.chrom=Cross(pcross,lenchrom,indivials.chrom,sizepop,bound);
% 變異操作
indivials.chrom=Mutation(pmutation,lenchrom,indivials.chrom,sizepop,[i maxgen],bound);

% 計算適應度
for j=1:sizepop
x=indivials.chrom(j,:);
indivials.fitness(j)=(x(1)*exp(-(x(1)^2 + x(2)^2)));
%-20*exp(-0.2*sqrt((x(1)^2+x(2)^2)/2))-exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)+20+2.71289
% -20*exp(-0.2*sqrt((x(1)^2+x(2)^2)/2))-exp((cos(2*pi*x(1))+cos(2*pi*x(2)))/2)+20+2.71289;

end

%找到最小和最大適應度的染色體及它們在種群中的位置
[newbestfitness,newbestindex]=min(indivials.fitness);
[worestfitness,worestindex]=max(indivials.fitness);
% 代替上一次進化中最好的染色體
if bestfitness>newbestfitness
bestfitness=newbestfitness;
bestchrom=indivials.chrom(newbestindex,:);
end
indivials.chrom(worestindex,:)=bestchrom;
indivials.fitness(worestindex)=bestfitness;

avgfitness=sum(indivials.fitness)/sizepop;

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

%% 結果顯示
[r c]=size(trace);
figure
plot([1:r]',trace(:,1),'r-',[1:r]',trace(:,2),'b--');
title(['函數值曲線 ' '終止代數=' num2str(maxgen)],'fontsize',12);
xlabel('進化代數','fontsize',12);ylabel('函數值','fontsize',12);
legend('各代平均值','各代最佳值','fontsize',12);
ylim([-0.5 5])
disp('函數值 變數');
% 窗口顯示
disp([bestfitness x]);

I. 怎麼調用matlab遺傳演算法工具箱啊

工具箱要安裝到指定的路徑,好久沒有用了,具體我也記不住了,你可以
網路搜索專
一下。屬路徑安裝不對就會出問題。如果安裝對了,你用help命令顯示一下函數.
函數的m文件不用運行,直接調用就可以。eval=-eval;
以後eval變為負的了,而ga函數要求參數必須是正的。

閱讀全文

與matlab遺傳工具箱如何實現循環判斷相關的資料

熱點內容
高中化學課本實驗裝置圖 瀏覽:369
半液晶儀表怎麼實現地圖顯示 瀏覽:100
蒸發用的器材有什麼 瀏覽:286
機械圖圓後面向下箭頭什麼意思 瀏覽:657
曲靖家用電動工具批發 瀏覽:20
滄州固化設備哪裡有 瀏覽:165
帝豪gl儀表台上面那個小燈是什麼 瀏覽:548
在小縣城辦機械廠有什麼扶持嗎 瀏覽:918
液晶儀表怎麼點亮 瀏覽:588
數控機床怎麼加工都光滑 瀏覽:694
接觸器中滅弧裝置的作用 瀏覽:93
荒野行動設備被封禁怎麼查詢 瀏覽:316
cgw閥門排氣什麼水平 瀏覽:385
賓士怎麼設置儀表盤上的照片 瀏覽:980
水箱中應設閥門的管道是 瀏覽:469
進口超聲儀器有哪些 瀏覽:247
盤車裝置作用位置 瀏覽:471
吸氧腐蝕的實驗裝置 瀏覽:721
商標注冊電動工具 瀏覽:338
智能儀表售後主要做什麼 瀏覽:556