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函數要求參數必須是正的。