導航:首頁 > 五金知識 > 遺傳演算法工具箱上下限怎麼確定

遺傳演算法工具箱上下限怎麼確定

發布時間:2022-06-04 00:03:28

Ⅰ matlab遺傳演算法工具箱優化結果數值

ga就是在窮舉不可能完成時,用一種方式找到最優解
ga工具的完整形式如下表示
[X,FVAL,EXITFLAG,OUTPUT,POPULATION,SCORES] =
GA(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub,NONLCON,options)
X是最優自變數
FVAL是求得的最優值
其他以此是推出標志,結構體,終止時的總群,終止時種群函數值
後半部分以此是目標函數,目標函數自變數個數
A和b是線性約束不等式AX〈b
Aeq和beq是一對線性等式約束,AeqX=beq
lb是X值下限,ub是X值下限
NONLCON是非線性約束函數 options是運行方式。這兩個可以寫函數自己完成,也可默認
函數默認計算最小值,計算最大值要加負號

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

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

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

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

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

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

這個100在這里是起到限定條件的作用。如果g1>0或者g2>0這種情況,就不進行計算了,直接給出誤差值100,這樣,g1>0或者g2>0這種情況基本上就排除了,因為誤差值非常高。這個數值可以改,改的比較大就可以了。目的是把結果中的g1>0和g2>0情況去掉。
initialPopulation是第一代種群的意思,這個數值就是遺傳演算法起點的位置。這個值怎麼取沒有固定的說法,如果你想手動賦值而不是讓計算機自己生成, 那麼你需要創建一個矩陣,行數等於populationSize,就是種群數量,列數等於輸入變數的數量,在你的例子中是2。
初始值的作用很大,越復雜的模型,對於初值的要求就越高。

Ⅳ matlab優化工具箱中遺傳演算法的問題

ga就是在窮舉不可能完成時,用一種方式找到最優解
ga工具的完整形式如下表示
[X,FVAL,EXITFLAG,OUTPUT,POPULATION,SCORES] =
GA(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub,NONLCON,options)
X是最優自變數
FVAL是求得的最優值
其他以此是推出標志,結構體,終止時的總群,終止時種群函數值
後半部分以此是目標函數,目標函數自變數個數
A和b是線性約束不等式AX〈b
Aeq和beq是一對線性等式約束,AeqX=beq
lb是X值下限,ub是X值下限
NONLCON是非線性約束函數 options是運行方式。這兩個可以寫函數自己完成,也可默認
函數默認計算最小值,計算最大值要加負號

非線性約束條件的寫法
function [c,ceq]=nonlcon(x) 定義函數自變數是x,x可以是一列矩陣
c=[]; c表示非線性等式約束,以為沒有,所以為空
ceq=[x(1)-2*(x(2))^2;
x(1)+X(2) ] ceq是非線性不等式約束,默認ceq<=0,ceq可以為一列矩陣.
>>

Ⅳ 遺傳演算法工具箱,如何設置變數矩陣的上下界,Aeq,beq

如果僅僅是處理例子難度的問題,可以考慮用matlab自帶工具箱,用窗口界面輸入計算,裡面有專門的輸入框,比較簡單

Ⅵ 求助:關於matlab遺傳演算法工具箱中約束的輸入問題

遺傳演算法工具箱的函數GA基本調用格式如下:
X = GA(FITNESSFCN,NVARS,A,b,Aeq,beq,lb,ub)
其中前兩個參數分別是適應度函數和變數個數,第三、四個參數(A和b)即為線性不等式約束。

你現在需要做的是,增加幾個線性約束條件:
x1 < x2
x2 < x3
x3 < x4
x4 < x5
不過,有個問題,遺傳演算法等優化工具對不等式約束的要求,都必須是閉集(帶等號的不等式),也就是說,要的是類似下面這樣的約束:
x1 <= x2
x2 <= x3
x3 <= x4
x4 <= x5
不知道你的問題是否允許把約束放寬到上面的形式,如果可以,就很簡單了(如果不能放寬,我暫時還沒想起怎麼解決):
x1 - x2 <= 0
x2 - x3 <= 0
x3 - x4 <= 0
x4 - x5 <= 0
也就是調用函數時,線性約束的A和b分別為
A = [
1 -1 0 0 0
0 1 -1 0 0
0 0 1 -1 0
0 0 0 1 -1
];
b=[0;0;0;0];

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

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])

閱讀全文

與遺傳演算法工具箱上下限怎麼確定相關的資料

熱點內容
steam令牌換設備了怎麼辦 瀏覽:246
新生測聽力儀器怎麼看結果 瀏覽:224
化學試驗排水集氣法的實驗裝置 瀏覽:156
家用水泵軸承位置漏水怎麼回事 瀏覽:131
羊水鏡設備多少錢一台 瀏覽:125
機械制圖里型鋼如何表示 瀏覽:19
測定空氣中氧氣含量實驗裝置如圖所示 瀏覽:718
超聲波換能器等級怎麼分 瀏覽:800
3萬軸承是什麼意思 瀏覽:110
鑫旺五金製品廠 瀏覽:861
蘇州四通閥製冷配件一般加多少 瀏覽:153
江北全套健身器材哪裡有 瀏覽:106
水表閥門不開怎麼辦 瀏覽:109
花冠儀表盤怎麼顯示時速 瀏覽:106
洗砂機多少錢一台18沃力機械 瀏覽:489
超聲波碎石用什麼材料 瀏覽:607
組裝實驗室製取二氧化碳的簡易裝置的方法 瀏覽:165
怎麼知道天然氣充不了閥門關閉 瀏覽:902
公司賣舊設備掛什麼科目 瀏覽:544
尚葉五金機電 瀏覽:59