1樓:
先在0到5中任選n個數,在將著n 個數轉換成二進位制,然後存進一個陣列a.定義一個函式f(x)(就是求x的四次方).定義迴圈次數為20次(可以自選).
1).計算a中每個數的函式制.(按十進位制)
2).如果次數超過20,則取陣列中最大的就是結果,演算法結束.
3).以一定概率選 a中k個最大的複製後加入陣列,在刪除一些最小的,形成
陣列a'
4).以一定概率選a'中若干二進位制數進行交叉(既兩兩某些位互換),形成新
陣列a''
5).以一定概率選a''中若干二進位制數進行變異(即某些數的一些位發生反轉),
形成新陣列a'''
6).將a'''做為a,轉步驟2.
2樓:匿名使用者
我寫過一個解決揹包問題的遺傳演算法,稍微改一下就可以用(畢竟你的問題更簡單),如果有興趣,可以聯絡我,在這裡貼出來太傻了。
3樓:他是一隻魚
你們老師無聊不無聊啊?簡單的方法不用,用這個幹嘛啊?叫他去學數學最值問題算了。。
4樓:
嗯???
好像用二分法會簡單的要死的···
幹嗎要用那個什麼遺傳???
5樓:匿名使用者
兩邊逼近 或 間插法
6樓:
有好的答案,我會追加分的
遺傳演算法具體應用
7樓:牛得天下
應用很多了,數值優化、組合優化、機器學習、智慧控制、人工生命、影象處理、模式識別版等領域都有應
權用。最簡單的應用就是函式優化問題了,即求某一較複雜的函式的極值。相關matlab**或c**你想要的話,我可以發給你,留下郵箱。
8樓:匿名使用者
應用很多,基本上可以用在所有求最優解的問題中。
遺傳演算法的問題。
9樓:初晨淡
遺傳演算法主要是用來求解最優化問題的。
一般來講可以求解函式的最大、最小值問題,還可以結合其它一些方法解決(非)線性迴歸、分類問題等等。
但遺傳演算法有兩個缺點,一是時間長,二是初值的選擇會影響收斂的效果。
它的本質,實際上還是隨機搜尋演算法,還是屬於所謂的蒙特卡羅式的方法。
遺傳演算法有那些缺點?
10樓:
1、早熟。這是最大的缺點,即演算法對新空間的探索能力是有限的,也容易收斂到區域性最優解。
2、大量計算。涉及到大量個體的計算,當問題複雜時,計算時間是個問題。
3、處理規模小。目前對於維數較高的問題,還是很難處理和優化的。
4、難於處理非線性約束。對非線性約束的處理,大部分演算法都是新增懲罰因子,這是一筆不小的開支。
5、穩定性差。因為演算法屬於隨機類演算法,需要多次運算,結果的可靠性差,不能穩定的得到解。
大致這些,lz可查閱相關專業書籍!
遺傳演算法可以解決哪些問題
11樓:
遺傳演算法主要是用來求解最優化問題的。
一般來講可以求解函式的最大、最小值問題,還可以結合其它一些方法解決(非)線性迴歸、分類問題等等。
但遺傳演算法有兩個缺點,一是時間長,二是初值的選擇會影響收斂的效果。
它的本質,實際上還是隨機搜尋演算法,還是屬於所謂的蒙特卡羅式的方法。
遺傳演算法的優缺點?
12樓:雨說情感
優點:1、遺傳演算法是以決策變數的編碼作為運算物件,可以直接對集合、序列、矩陣、樹、圖等結構物件進行操作。這樣的方式一方面有助於模擬生物的基因、染色體和遺傳進化的過程,方便遺傳操作運算元的運用。
另一方面也使得遺傳演算法具有廣泛的應用領域,如函式優化、生產排程、自動控制、影象處理、機器學習、資料探勘等領域。
2、遺傳演算法直接以目標函式值作為搜尋資訊。它僅僅使用適應度函式值來度量個體的優良程度,不涉及目標函式值求導求微分的過程。因為在現實中很多目標函式是很難求導的,甚至是不存在導數的,所以這一點也使得遺傳演算法顯示出高度的優越性。
3、遺傳演算法具有群體搜尋的特性。它的搜尋過程是從一個具有多個個體的初始群體p(0)開始的,一方面可以有效地避免搜尋一些不必搜尋的點。
另一方面由於傳統的單點搜尋方法在對多峰分佈的搜尋空間進行搜尋時很容易陷入區域性某個單峰的極值點,而遺傳演算法的群體搜尋特性卻可以避免這樣的問題,因而可以體現出遺傳演算法的並行化和較好的全域性搜尋性。
4、遺傳演算法基於概率規則,而不是確定性規則。這使得搜尋更為靈活,引數對其搜尋效果的影響也儘可能的小。
5、遺傳演算法具有可擴充套件性,易於與其他技術混合使用。以上幾點便是遺傳演算法作為優化演算法所具備的優點。
缺點:1、遺傳演算法在進行編碼時容易出現不規範不準確的問題。
2、由於單一的遺傳演算法編碼不能全面將優化問題的約束表示出來,因此需要考慮對不可行解採用閾值,進而增加了工作量和求解時間。
3、遺傳演算法效率通常低於其他傳統的優化方法。
4、遺傳演算法容易出現過早收斂的問題。
擴充套件資料
遺傳演算法的機理相對複雜,在matlab中已經由封裝好的工具箱命令,通過呼叫就能夠十分方便的使用遺傳演算法。
函式ga:[x, fval,reason]= ga(@fitnessfun, nvars, options)x是最優解,fval是最優值,@fitnessness是目標函式,nvars是自變數個數,options是其他屬性設定。系統預設求最小值,所以在求最大值時應在寫函式文件時加負號。
為了設定options,需要用到下面這個函式:options= gaoptimset ('propertyname1', 'propertyvalue1', 'propertyname2', 'propertyvalue2','propertyname3', 'propertyvalue3', ...)通過這個函式就能夠實現對部分遺傳演算法的引數的設定。
請教遺傳演算法三個問題
13樓:用友暢捷通
1、先交叉 在變異 還是先變異後交叉?
2、選擇父代進行交叉的個數是不是2n個?n是種群大小。
3、交叉概率+變異概率=100%? 還是就沒啥關係?
可以這樣理解。一般都是順序選擇個體,逐一生成隨機數的吧。因為從選擇操作上看,種群中個體不存在序,所以沒有必要隨機選擇。
不過交叉後得到的種群還不能稱為子代。
2 不是。對於每一父代種群中個體產生一個(0,1)間的隨機數,若大於交叉概率,該個體不參與交叉。反之被標記,並於下一個參與交叉的個體進行交叉操作,所生成的兩個個體替換父代的兩個個體。
因而,每一個父代個體可能參與0或1次交叉。
3 兩者不存在相加為100%的關係。這是兩種不同操作。但是取值組合確實對結果有影響。
以上是根據遺傳演算法的標準原始碼給出的,你最好看看遺傳演算法的標準原始碼。遺傳演算法發展至今已有很多改進的方法和新設計的運算元,效能較標準原始碼有不少的提升。
遺傳演算法方面的英文翻譯 遺傳演算法英文文獻
uniform crossover operator是均勻交叉運算元 也就是算遺傳基因的方法。mask在生物學上是什麼意思我就真不知道了。random是隨機的意思 也就是隨便的一個。a mask is simply a binary string with the same size chromos...
如何用遺傳演算法實現多變數的最優化問題
將多個變數的數值編碼編排進去,進行組合,只需要增長基因個體的長度,但是要明確每個變數具體的位置,然後讓每個變數轉化成二進位制的等長編碼,組合在一起,就可以來運算了。具體操作步驟如下 1 首先要利用一個矩陣去跟蹤每組迭代的結果的大小 2 然後,要構造一個譯碼矩陣fieldd,由bs2rv函式將種群ch...
遺傳演算法與一般的爬山法有什麼不同
爬山演算法是一種簡單的貪心搜尋演算法,該演算法每次從當前解的臨近解空回間中選擇一個最優解答作為當前解,直到達到一個區域性最優解。爬山演算法實現很簡單,其主要缺點是會陷入區域性最優解,而不一定能搜尋到全域性最優解。遺傳演算法是電腦科學人工智慧領域中用於解決最優化的一種搜尋啟發式演算法,是進化演算法的一...