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

遺傳演算法ga

發布時間: 2022-02-02 08:58:27

『壹』 遺傳演算法的優缺點

優點:

1、遺傳演算法是以決策變數的編碼作為運算對象,可以直接對集合、序列、矩陣、樹、圖等結構對象進行操作。這樣的方式一方面有助於模擬生物的基因、染色體和遺傳進化的過程,方便遺傳操作運算元的運用。

另一方面也使得遺傳演算法具有廣泛的應用領域,如函數優化、生產調度、自動控制、圖像處理、機器學習、數據挖掘等領域。

2、遺傳演算法直接以目標函數值作為搜索信息。它僅僅使用適應度函數值來度量個體的優良程度,不涉及目標函數值求導求微分的過程。因為在現實中很多目標函數是很難求導的,甚至是不存在導數的,所以這一點也使得遺傳演算法顯示出高度的優越性。

3、遺傳演算法具有群體搜索的特性。它的搜索過程是從一個具有多個個體的初始群體P(0)開始的,一方面可以有效地避免搜索一些不必搜索的點。

另一方面由於傳統的單點搜索方法在對多峰分布的搜索空間進行搜索時很容易陷入局部某個單峰的極值點,而遺傳演算法的群體搜索特性卻可以避免這樣的問題,因而可以體現出遺傳演算法的並行化和較好的全局搜索性。

4、遺傳演算法基於概率規則,而不是確定性規則。這使得搜索更為靈活,參數對其搜索效果的影響也盡可能的小。

5、遺傳演算法具有可擴展性,易於與其他技術混合使用。以上幾點便是遺傳演算法作為優化演算法所具備的優點。

缺點:

1、遺傳演算法在進行編碼時容易出現不規范不準確的問題。

2、由於單一的遺傳演算法編碼不能全面將優化問題的約束表示出來,因此需要考慮對不可行解採用閾值,進而增加了工作量和求解時間。

3、遺傳演算法效率通常低於其他傳統的優化方法。

4、遺傳演算法容易出現過早收斂的問題。

(1)遺傳演算法ga擴展閱讀

遺傳演算法的機理相對復雜,在Matlab中已經由封裝好的工具箱命令,通過調用就能夠十分方便的使用遺傳演算法。

函數ga:[x, fval,reason]= ga(@fitnessfun, nvars, options)x是最優解,fval是最優值,@fitnessness是目標函數,nvars是自變數個數,options是其他屬性設置。系統默認求最小值,所以在求最大值時應在寫函數文檔時加負號。

為了設置options,需要用到下面這個函數:options=gaoptimset('PropertyName1', 'PropertyValue1', 'PropertyName2', 'PropertyValue2','PropertyName3', 'PropertyValue3', ...)通過這個函數就能夠實現對部分遺傳演算法的參數的設置。

『貳』 求遺傳演算法(GA)C語言代碼

.----來個例子,大家好理解..--
基於遺傳演算法的人工生命模擬
#include<stdio.h>
#include<stdlib.h>
#include<graphics.h>
#include<math.h>
#include<time.h>
#include<string.h>
#include "graph.c"
/* 宏定義 */
#define TL1 20 /* 植物性食物限制時間 */
#define TL2 5 /* 動物性食物限制時間 */
#define NEWFOODS 3 /* 植物性食物每代生成數目 */
#define MUTATION 0.05 /* 變異概率 */
#define G_LENGTH 32 /* 個體染色體長度 */
#define MAX_POP 100 /* 個體總數的最大值 */
#define MAX_FOOD 100 /* 食物總數的最大值 */
#define MAX_WX 60 /* 虛擬環境的長度最大值 */
#define MAX_WY 32 /* 虛擬環境的寬度最大值 */
#define SX1 330 /* 虛擬環境圖左上角點x坐標 */
#define SY1 40 /* 虛擬環境圖左上角點y坐標 */
#define GX 360 /* 個體數進化圖形窗口的左上角點X坐標 */
#define GY 257 /* 個體數進化圖形窗口的左上角點Y坐標 */
#define GXR 250 /* 個體數進化圖形窗口的長度 */
#define GYR 100 /* 個體數進化圖形窗口的寬度 */
#define GSTEP 2 /* 個體數進化圖形窗口的X方向步長 */
#define R_LIFE 0.05 /* 初期產生生物數的環境比率 */
#define R_FOOD 0.02 /* 初期產生食物數的環境比率 */
#define SL_MIN 10 /* 個體壽命最小值 */
/* 全局變數 */
unsigned char gene[MAX_POP][G_LENGTH]; /* 遺傳基因 */
unsigned char iflg[MAX_POP]; /* 個體死活狀態標志變數 */

『叄』 關於遺傳演算法

遺傳演算法(Genetic Algorithm,簡稱GA)是美國 Michigan大學的 John Golland提出的一種建立在自然選擇和群體遺傳學機理基礎上的隨機、迭代、進化、具有廣泛適用性的搜索方法。現在已被廣泛用於學習、優化、自適應等問題中。圖4-1 給出了 GA搜索過程的直觀描述。圖中曲線對應一個具有復雜搜索空間(多峰空間)的問題。縱坐標表示適應度函數(目標函數),其值越大相應的解越優。橫坐標表示搜索點。顯然,用解析方法求解該目標函數是困難的。採用 GA時,首先隨機挑選若干個搜索點,然後分別從這些搜索點開始並行搜索。在搜索過程中,僅靠適應度來反復指導和執行 GA 搜索。在經過若干代的進化後,搜索點後都具有較高的適應度並接近最優解。

一個簡單GA由復制、雜交和變異三個遺傳運算元組成:

圖4-2 常規遺傳演算法流程圖

『肆』 MATLAB用遺傳演算法ga求最大值中的最小值

MATLAB用遺傳演算法ga求含有最大值的最小值問題,可以這樣處理:由於最大值問題的反問題就是最小值問題,所以 max=-min。因此,你的問題就可以改寫為

min ( min -(3*x1+4*x2+...))

『伍』 模擬退火法(SA)和遺傳演算法(GA)的專業解釋

n局部搜索,模擬退火,遺傳演算法,禁忌搜索的形象比喻:

為了找出地球上最高的山,一群有志氣的兔子們開始想辦法。
1.兔子朝著比現在高的地方跳去。他們找到了不遠處的最高山峰。但是這座山不一定是珠穆朗瑪峰。這就是局部搜索,它不能保證局部最優值就是全局最優值。
2.兔子喝醉了。他隨機地跳了很長時間。這期間,它可能走向高處,也可能踏入平地。但是,他漸漸清醒了並朝最高方向跳去。這就是模擬退火。
3.兔子們吃了失憶葯片,並被發射到太空,然後隨機落到了地球上的某些地方。他們不知道自己的使命是什麼。但是,如果你過幾年就殺死一部分海拔低的兔子,多產的兔子們自己就會找到珠穆朗瑪峰。這就是遺傳演算法。
4.兔子們知道一個兔的力量是渺小的。他們互相轉告著,哪裡的山已經找過,並且找過的每一座山他們都留下一隻兔子做記號。他們制定了下一步去哪裡尋找的策略。這就是禁忌搜索。

『陸』 誰能告訴我遺傳演算法的ga函數裡面到底是怎麼設置參數的呢,交叉概率,變異概率什麼的。。。

MATLAB中,gaoptimset是用來設置遺傳演算法的優化參數的。

『柒』 matlab怎樣讓遺傳演算法ga從上次的運行結果開始繼續尋優

比如通過MATLAB遺傳演算法的思想求解f(x)=x*sin(10pi*x)+2.0,-1>f=@(x)-(x*sin(10*pi*x)+2)f= @(x)-(x*sin(10*pi*x)+2)接著輸入gatool會打開遺傳演算法工具箱按上圖所示設置,設置好了之後點擊Start運行結果如下顯示51代之後演算法終止,最小結果為-3.85027334719567,對應的x為1.851,由於自定義函數加了負號,所以原式的最大值為3.85027334719567,對應的x為1.851。不過這是遺傳演算法得到的結果,每次運行的結果可能會有所不同,而且不一定是確切的最大值。遺傳演算法適合應用在一些求最優解比較復雜的問題(常規的演算法運算時間過長,甚至無法解決)。

『捌』 遺傳演算法 matlab自帶ga函數

c=[246];%c為目標函數系數
fun_1=@(x)dot(c,x');%y為適應度函數值,求兩向量的數量積

A=[10-1;-1-20;-100];%A為AX<=b的系數矩陣
b=[10;-1;0];%b為AX<=b的常數項
Aeq=[011];%AeqX=beq的系數矩陣
beq=12;%AeqX=beq的常數項

[x,y]=ga(fun_1,3,A,b,Aeq,beq)

『玖』 遺傳演算法:matlab中ga函數參數options該怎麼設置

  1. options可以不寫有默認設置。

  2. options是一個結構體要用函數gaoptimset()設置。

  3. options=gaoptimset()然後把options填到ga()裡面。

  4. gaoptimset('屬性名1',數值1,'屬性名2',數值2......)。

常用設置:

熱點內容
androidactivity生命 發布:2024-04-27 07:33:48 瀏覽:83
win2008伺服器搭建網站 發布:2024-04-27 07:26:51 瀏覽:639
java的vector 發布:2024-04-27 07:05:00 瀏覽:203
舊電腦共享伺服器 發布:2024-04-27 06:32:21 瀏覽:339
java程序練習 發布:2024-04-27 06:24:00 瀏覽:438
sql30 發布:2024-04-27 06:22:10 瀏覽:55
怎樣防止sql注入 發布:2024-04-27 06:11:25 瀏覽:236
安卓為什麼不能登蘋果系統的游戲 發布:2024-04-27 06:11:23 瀏覽:601
編程日課 發布:2024-04-27 05:56:54 瀏覽:620
漏洞上傳工具 發布:2024-04-27 05:50:58 瀏覽:717