當前位置:首頁 » 操作系統 » 遺傳演算法最小值

遺傳演算法最小值

發布時間: 2023-02-03 09:55:43

㈠ matlab遺傳演算法求函數最小值問題!

如果你的函數是求maxf(x)的問題,要編程求最小值問題,那麼你需要對這個函數取負值求最小值即可
舉例來說:
求max(z)=ax+bx^2
等同於
求min(z)=-(ax+bx^2)
-----------------------------------------
我這里有一個使用matlab遺傳演算法工具箱的案例,你可以用來快速求解,如果你想自己編程實現遺傳演算法,可以加我QQ:34508855
核心函數: (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

㈡ 遺傳演算法求最小值點

用遺傳演算法求已知函數的最小值點的方法:

1、首先建立自定義函數,f(x)

ga_fun=@(x)11*sin(6*x)+7*cos(5*x);

2、其二用ga()函數求解最小值

[x,fval,exitflag] = ga(ga_fun,1,[],[],[],[],lb)

3、然後用ezplot()函數或plot()函數,繪出其函數f(x)的圖形及最小值點

4、運行結果

㈢ 遺傳演算法求最小值時為什麼每次結果都不一樣,而且差別很大。那這么找到最小值呢

這說明遺傳演算法本身不收斂,還存在較大的優化空間。
建議對種群初始化方法、交叉變異方法、種群更新運算元等做優化,增加最優保存策略,保證能收斂到最優解。

㈣ 在matlab中如何用遺傳演算法求解函數和的最小值

用遺傳演算法求已知函數的最小值點的方法:1、首先建立自定義函數,f(x)ga_fun=@(x)11*sin(6*x)+7*cos(5*x);2、其二用ga()函數求解最小值[x,fval,exitflag]=ga(ga_fun,1,[],[],[],[],lb) 3、然後用ezplot()函數或plot()函數,繪出其函數f(x)的圖形及最小值點4、運行結果5、執行代碼

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

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

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

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

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

㈥ 如何用遺傳演算法求函數最小值

可以這樣,用這兩個限制條件的等式把8個未知量的目標函數降維成6個未知量的目標函數,把這個作為適應度函數,問題轉變成6個未知量,限制條件0<=xi<=1,的遺傳演算法問題。這個目標函數是線性的應該很容易搜索出最小值。我最近在研究遺傳演算法,歡迎私信交流。

㈦ 利用遺傳演算法求函數的極小值和極大值的區別

用遺傳演算法求已知函數的最小值點的方法:1、首先建立自定義函數,f(x)ga_fun=@(x)11*sin(6*x)+7*cos(5*x);2、其二用ga()函數求解最小值[x,fval,exitflag]=ga(ga_fun,1,[],[],[],[],lb) 3、然後用ezplot()函數或plot()函數,繪出其函數f(x)的圖形及最小值點4、運行結果5、執行代碼

㈧ 用MATLAB遺傳演算法最小值

《matlab智能演算法30個案例分析》那本書的14頁有非常類似的代碼,也是兩個變數,網上很好找到那本書的PDF。但是要事先下載一個謝菲爾德大學的遺傳工具箱,也很好找。希望對你有點用。

㈨ 在matlab中如何用遺傳演算法求解函數和的最小值

該程序採用實數編碼的遺傳演算法編寫,附件1(real code ga.m)為matlab代碼。

附件2(實數編碼遺傳演算法參考資料):

http://www.math.zju.e.cn/cagd/resources/thesis/PhDthesis_ZhouMingHUa.pdf

優化結果需要修改mutate_P以及變異量的大小。因為只有一個優化變數因此編程較為簡單。

提供一個參考鏈接:http://..com/question/583959020.html?oldq=1

熱點內容
贊贊協議腳本 發布:2024-04-17 06:21:02 瀏覽:759
117小游戲伺服器ip 發布:2024-04-17 06:11:37 瀏覽:446
奧迪什麼配置好看 發布:2024-04-17 06:02:28 瀏覽:764
算命網源碼 發布:2024-04-17 05:53:16 瀏覽:295
C語言數組的遍歷 發布:2024-04-17 05:45:18 瀏覽:660
劃分清演算法 發布:2024-04-17 05:44:41 瀏覽:667
bitlocker暫停加密 發布:2024-04-17 05:25:21 瀏覽:542
腳本怎麼刷 發布:2024-04-17 05:09:50 瀏覽:134
如何調取手機存儲 發布:2024-04-17 05:06:50 瀏覽:920
linux的home 發布:2024-04-17 05:02:47 瀏覽:378