導航:首頁 > 五金知識 > 演算法工具箱中函數

演算法工具箱中函數

發布時間:2022-05-02 05:48:51

A. 請教一下,用遺傳演算法工具箱怎麼求下面函數的最小值

題主給出函數用遺傳演算法工具箱求其最小值,可以這樣來做:

1、自定義函數,並保存專為leijia.m文件。

2、在當前屬目錄下,執行 optimtool,打開最優化工具箱,再選擇遺傳演算法工具箱

3、按表中格式,輸入相關內容,最後執行可以得到

B. 如何調用matlab遺傳演算法工具箱中的bs2rv、crtbase、crtbp等函數

網上下載遺傳工具箱(網上主要有三類,基本差不多都有你說的這幾個函數)。然後加入路徑就可以使用了。

C. 如何用遺傳演算法工具箱中的函數畫出適應度函數曲線

matlab有遺傳演算法工具箱。

核心函數:
(1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始種群的生成函數
【輸出參數】
pop--生成的初始種群
【輸入參數】
num--種群中的個體數目
bounds--代表變數的上下界的矩陣
eevalFN--適應度函數
eevalOps--傳遞給適應度函數的參數
options--選擇編碼形式(浮點編碼或是二進制編碼)[precision F_or_B],如
precision--變數進行二進制編碼時指定的精度
F_or_B--為1時選擇浮點編碼,否則為二進制編碼,由precision指定精度)

(2)function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,
termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)--遺傳演算法函數
【輸出參數】
x--求得的最優解
endPop--最終得到的種群
bPop--最優種群的一個搜索軌跡
【輸入參數】
bounds--代表變數上下界的矩陣
evalFN--適應度函數
evalOps--傳遞給適應度函數的參數
startPop-初始種群
opts[epsilon prob_ops display]--opts(1:2)等同於initializega的options參數,第三個參數控制是否輸出,一般為0。如[1e-6 1 0]
termFN--終止函數的名稱,如['maxGenTerm']
termOps--傳遞個終止函數的參數,如[100]
selectFN--選擇函數的名稱,如['normGeomSelect']
selectOps--傳遞個選擇函數的參數,如[0.08]
xOverFNs--交叉函數名稱表,以空格分開,如['arithXover heuristicXover simpleXover']
xOverOps--傳遞給交叉函數的參數表,如[2 0;2 3;2 0]
mutFNs--變異函數表,如['boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation']
mutOps--傳遞給交叉函數的參數表,如[4 0 0;6 100 3;4 100 3;4 0 0]

注意】matlab工具箱函數必須放在工作目錄下
【問題】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0<=x<=9
【分析】選擇二進制編碼,種群中的個體數目為10,二進制編碼長度為20,交叉概率為0.95,變異概率為0.08
【程序清單】
%編寫目標函數
function[sol,eval]=fitness(sol,options)
x=sol(1);
eval=x+10*sin(5*x)+7*cos(4*x);
%把上述函數存儲為fitness.m文件並放在工作目錄下

initPop=initializega(10,[0 9],'fitness');%生成初始種群,大小為10
[x endPop,bPop,trace]=ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,'normGeomSelect',
[0.08],['arithXover'],[2],'nonUnifMutation',[2 25 3]) %25次遺傳迭代

運算借過為:x =
7.8562 24.8553(當x為7.8562時,f(x)取最大值24.8553)

註:遺傳演算法一般用來取得近似最優解,而不是最優解。

遺傳演算法實例2

【問題】在-5<=Xi<=5,i=1,2區間內,求解
f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282的最小值。
【分析】種群大小10,最大代數1000,變異率0.1,交叉率0.3
【程序清單】
%源函數的matlab代碼
function [eval]=f(sol)
numv=size(sol,2);
x=sol(1:numv);
eval=-20*exp(-0.2*sqrt(sum(x.^2)/numv)))-exp(sum(cos(2*pi*x))/numv)+22.71282;
%適應度函數的matlab代碼
function [sol,eval]=fitness(sol,options)
numv=size(sol,2)-1;
x=sol(1:numv);
eval=f(x);
eval=-eval;
%遺傳演算法的matlab代碼
bounds=ones(2,1)*[-5 5];
[p,endPop,bestSols,trace]=ga(bounds,'fitness')

註:前兩個文件存儲為m文件並放在工作目錄下,運行結果為
p =
0.0000 -0.0000 0.0055

大家可以直接繪出f(x)的圖形來大概看看f(x)的最值是多少,也可是使用優化函數來驗證。matlab命令行執行命令:
fplot('x+10*sin(5*x)+7*cos(4*x)',[0,9])

evalops是傳遞給適應度函數的參數,opts是二進制編碼的精度,termops是選擇maxGenTerm結束函數時傳遞個maxGenTerm的參數,即遺傳代數。xoverops是傳遞給交叉函數的參數。mutops是傳遞給變異函數的參數。

D. matlab遺傳演算法工具箱函數的參數問題

可能的原因是:
1.gatbx工具箱下的crtbp函數的文件名為crtbp.m,大小寫不統一所以出現了warning,需要把把專它改為屬小寫的crtbp.m;
2.gatbx屬於第三方工具箱,matlab自身對它是沒有說明的,所以搜不到這些遺傳演算法的指令。

E. 誰對謝菲爾德遺傳演算法工具箱比較熟,裡面一些函數不太懂

select是選擇函數

F. Matlab遺傳演算法工具箱里的crtrp函數為何總是出錯

??在看雷英傑《MATLAB遺傳演算法工具箱及應用》函數用法的時候發現書上的例子不能運行
FielDR=[-10,-5,-3,-1;10,5,3,1]
Chrom=crtrp(6,FielDR)
Error: File: crtrp.M Line: 34 Column: 19
nargin previously appeared to be used as a function or command, conflicting with its use here as the name of a variable.
A possible cause of this error is that you forgot to initialize the
variable, or you have initialized it implicitly using load or eval.
而且工具箱中自帶的例子mpga.m運行也會出錯,錯誤就在crtrp這個函數,不解,求高手幫忙1 樓是crtrp這個m文件的問題,把34行注釋掉再保存運行看看3 樓上面說的很對,你把出問題的那部分注釋掉再保存運行就OK了。4 樓你太有才了哥們留個郵箱吧有什麼問題問你哈我用這個做課題。5 樓真是太謝謝了,有學到一招6 樓:handshake謝謝我這兩天一直在運行就是一直出錯原來是這個問題7 樓我正遇到這個問題,是怎麼回事呀?我試下把34行把34行注釋掉再保存運行看看8 樓謝謝了,剛好碰到了這個問題,我發現這個論壇太好了
聲明:本頁面所有內容來源於網路,本站僅作收集整理,版權屬於原網站所有,請通過
獲取更詳細信息

G. 遺傳演算法工具箱 unique函數用法

unique函數用來去除矩陣A中重復的元素,
比如說A=[1,2,3,3,4],那麼unique(A)=[1,2,3,4];
如果A=[1,2,3;3,4,5],那麼unique(A)=[1,2,3,4,5];
unique(A,'rows')用來去除矩陣A中重復的行,
比如說A=[1,2,3;4,5,6;1,2,3],
那麼unique(A,'rows')=[1,2,3;4,5,6];

H. 用遺傳演算法工具箱怎麼求解線性約束函數

Matlab遺傳演算法工具箱是可以施加的非線性隱性約束條件的。例如:
min z= 3050*x1³+0.25*x2;
其中x1定義域[-0.381,0.381],x2定義域[-100,100]
求目標函數值為10時的x1、x2值。
求解結果
x1=0.14169943480903302 x2=5.289387991237991
function [c,ceq]=ga_con(x) %非線性約束條件函數
c=10-(3050*x(1)^3+0.25*x(2));
ceq=[];

I. matlab遺傳演算法工具箱求解多元函數顯示輸入參數數目不足求解答,非常感謝

錯誤的主要原因是你寫的函數有問題。函數應該這樣來表示:

function y = Test1(x)

a=x(1);b=x(2);

y=a+b;

end

使用優化工具箱,選擇ga,運行可以得到如下結果

J. 遺傳演算法工具箱的具體使用

matlab遺傳演算法工具箱函數及實例講解 核心函數:
(1)function [pop]=initializega(num,bounds,eevalFN,eevalOps,options)--初始種群的生成函數
【輸出參數】
pop--生成的初始種群
【輸入參數】
num--種群中的個體數目
bounds--代表變數的上下界的矩陣
eevalFN--適應度函數
eevalOps--傳遞給適應度函數的參數
options--選擇編碼形式(浮點編碼或是二進制編碼)[precision F_or_B],如
precision--變數進行二進制編碼時指定的精度
F_or_B--為1時選擇浮點編碼,否則為二進制編碼,由precision指定精度)
(2)function [x,endPop,bPop,traceInfo] = ga(bounds,evalFN,evalOps,startPop,opts,...
termFN,termOps,selectFN,selectOps,xOverFNs,xOverOps,mutFNs,mutOps)--遺傳演算法函數
【輸出參數】
x--求得的最優解
endPop--最終得到的種群
bPop--最優種群的一個搜索軌跡
【輸入參數】
bounds--代表變數上下界的矩陣
evalFN--適應度函數
evalOps--傳遞給適應度函數的參數
startPop-初始種群
opts[epsilon prob_ops display]--opts(1:2)等同於initializega的options參數,第三個參數控制是否輸出,一般為0。如[1e-6 1 0]
termFN--終止函數的名稱,如['maxGenTerm']
termOps--傳遞個終止函數的參數,如[100]
selectFN--選擇函數的名稱,如['normGeomSelect']
selectOps--傳遞個選擇函數的參數,如[0.08]
xOverFNs--交叉函數名稱表,以空格分開,如['arithXover heuristicXover simpleXover']
xOverOps--傳遞給交叉函數的參數表,如[2 0;2 3;2 0]
mutFNs--變異函數表,如['boundaryMutation multiNonUnifMutation nonUnifMutation unifMutation']
mutOps--傳遞給交叉函數的參數表,如[4 0 0;6 100 3;4 100 3;4 0 0]
【問題】求f(x)=x+10*sin(5x)+7*cos(4x)的最大值,其中0<=x<=9
【分析】選擇二進制編碼,種群中的個體數目為10,二進制編碼長度為20,交叉概率為0.95,變異概率為0.08
【程序清單】
%編寫目標函數
function[sol,eval]=fitness(sol,options)
x=sol(1);
eval=x+10*sin(5*x)+7*cos(4*x);
%把上述函數存儲為fitness.m文件並放在工作目錄下
initPop=initializega(10,[0 9],'fitness');%生成初始種群,大小為10
[x endPop,bPop,trace]=ga([0 9],'fitness',[],initPop,[1e-6 1 1],'maxGenTerm',25,'normGeomSelect',...
[0.08],['arithXover'],[2],'nonUnifMutation',[2 25 3]) %25次遺傳迭代
運算借過為:x =
7.8562 24.8553(當x為7.8562時,f(x)取最大值24.8553)
註:遺傳演算法一般用來取得近似最優解,而不是最優解。
遺傳演算法實例2
【問題】在-5<=Xi<=5,i=1,2區間內,求解
f(x1,x2)=-20*exp(-0.2*sqrt(0.5*(x1.^2+x2.^2)))-exp(0.5*(cos(2*pi*x1)+cos(2*pi*x2)))+22.71282的最小值。
【分析】種群大小10,最大代數1000,變異率0.1,交叉率0.3
【程序清單】
%源函數的matlab代碼
function [eval]=f(sol)
numv=size(sol,2);
x=sol(1:numv);
eval=-20*exp(-0.2*sqrt(sum(x.^2)/numv)))-exp(sum(cos(2*pi*x))/numv)+22.71282;
%適應度函數的matlab代碼
function [sol,eval]=fitness(sol,options)
numv=size(sol,2)-1;
x=sol(1:numv);
eval=f(x);
eval=-eval;
%遺傳演算法的matlab代碼
bounds=ones(2,1)*[-5 5];
[p,endPop,bestSols,trace]=ga(bounds,'fitness')
註:前兩個文件存儲為m文件並放在工作目錄下,運行結果為
p =
0.0000 -0.0000 0.0055
大家可以直接繪出f(x)的圖形來大概看看f(x)的最值是多少,也可是使用優化函數來驗證。matlab命令行執行命令:
fplot('x+10*sin(5*x)+7*cos(4*x)',[0,9])

閱讀全文

與演算法工具箱中函數相關的資料

熱點內容
攪拌機選用什麼軸承 瀏覽:739
起亞智跑如何在儀表盤顯示速度 瀏覽:742
健身器材業務怎麼找 瀏覽:30
電能計量裝置典型設計 瀏覽:539
超聲波作用在水會產生什麼 瀏覽:50
本田繽智汽車儀表盤上號什麼意思 瀏覽:333
福州五金零售市場 瀏覽:429
為什麼雷雲檢測不到設備 瀏覽:756
cadence機械孔怎麼畫 瀏覽:278
暖氣進戶平口閥門 瀏覽:587
長城機床怎麼拷貝程序 瀏覽:131
r22製冷劑添加什麼會結冰 瀏覽:719
拉管用什麼設備 瀏覽:969
五金件報價公式 瀏覽:702
什麼運動器材五塊錢十個 瀏覽:415
滾動軸承c代表什麼 瀏覽:993
懸崖裝置實驗 瀏覽:703
機械什麼遠古 瀏覽:218
實驗室製取二氧化碳所用的發生裝置 瀏覽:938
暖氣閥門斷開 瀏覽:102