當前位置:編程學習大全網 - 編程軟體 - 如何用遺傳算法實現多變量的最優化問題

如何用遺傳算法實現多變量的最優化問題

是不是像求函數最值那樣子?建議妳了解壹下遺傳算法的實數編碼,這個對於求函數最值很方便,不用像二進制那樣需要轉換。

簡單介紹壹下思路:

最重要的是確定適應度函數,只要確定這個函數就很容易了,就用妳不會編程,直接調用matlab的工具箱就行了。

1st.設置種群規模,並初始化種群p,並計算各個個體的適應度。

例如,20個個體,每個個體包含5個變量,x1,x2,x3,x4,x5.

如果妳用matlab來編程的話,這個可以很容易實現,會用到random('unif',a,b)這個函數吧。

例如x1的取值範圍是[0,1],那麽x1=random('unif',0,1).

2nd.采用輪盤賭選出可以產生後代的父本,p_parents。

額,輪盤賭的實質就是適應度大的被選出的概率大。這個不難,但說起來比較長,妳可以自己去看壹下。

3rd.雜交過程的思路隨機將p_parents中的個體隨機兩兩配對,然後隨機產生壹個1到n的數(n為變量的個數),設為i,交換每對父本中i之後的變量值。交換以後的p_parents成為後代p_offspring.

這裏變起來有點點復雜,不過只要耐心壹點,編好配對過程和交換過程。

4th.變異過程,這個比較簡單,不過需要自己把握的較好。

基本的思路是設置壹個概率,例如0.05,然後產生壹個隨機數如果隨機數比0.05小那麽這個變量值就要產生微小的增加或減少。

這個變異過程要歷遍p_offspring所有的變量喔。

5th.將p和p_offspring合並起來,然後選出適應度大的,重新構成壹個如原始種群規模相等的種群。

  • 上一篇:JavaScript中有哪些事件?該事件有什麽作用?
  • 下一篇:想成為壹名電力電子工程師應該掌握哪些技能
  • copyright 2024編程學習大全網