很抱歉,如果我在寫這樣的移動設備上,我試圖讓它快,這是不明確的。在用戶界面中使用GA
我寫了一個基本的遺傳算法與建立一個適應值,並使用錦標賽選擇,突變和交叉通過多次迭代進化的二進制編碼(基因)。作爲一個基本的命令行示例,它似乎起作用。
我有這個問題是因爲我寫一個使用GA找到通過迷宮的方法的迷宮解決程序的GUI中應用遺傳算法。如何將我的隨機二進制編碼基因和適應度函數(將所有二進制值加在一起)轉換爲控制迷宮周圍bot的方法?我用Java構建了一個基本的圖形用戶界面(GUI),其中包含一系列標籤(如網格),可用路由爲藍色,牆壁爲黑色。
重申我的遺傳算法執行得很好,包含任何典型的遺傳算法(健身方法,獲取和設置種羣,選擇,交叉等),但現在我需要將其插入GUI以使我的迷宮運行。爲了獲得一個可以在不同方向移動的機器人,需要去哪裏取決於GA所說的內容?如果可能的話
按照要求,一個人是使用一個單獨的類(逐張)建,與所有的主要工作正在波普類完成粗糙的僞代碼將是巨大的。當一個新個體被實例化時,一個int數組代表所述個體的基因,隨機從0到1之間的數字中挑選基因。適應度函數僅將這些基因的值加在一起,並且在Pop類中處理選擇,兩個選定個體的突變和交叉。除此之外,命令行程序僅顯示n代以上的進化,總體適應度在每次迭代中都有所提高。
編輯:它開始讓更多的意義,現在,雖然有被竊聽我的幾件事情...
正如亞當斯基曾建議我想創建一個「代理」與如下所示的選項。我遇到的問題是隨機比特串在這裏發揮作用。代理知道牆壁在哪裏,並且以4位字符串(即0111)排列,但這對隨機32位字符串有什麼影響? (即10001011011001001010011011010101)如果我有以下迷宮(x爲出發地,2是目標,1是牆):
x 1 1 1 1
0 0 1 0 0
1 0 0 0 2
如果我左轉,我面對錯誤的方式,代理將如果向前移動,則完全離開迷宮。我認爲第一代的字符串是完全隨機的,隨着健身的增長它會發展,但我不明白字符串如何在迷宮中工作。
因此,爲了得到這個直...
健身是當代理能夠移動,是一堵牆的結果。
基因是一串32比特,分成16組2比特以顯示可用的動作,機器人移動兩比特需要通過代理顯示中的四位傳遞其靠近牆壁的位置。如果移動是通過牆壁移動,則該移動不被執行,並且被認爲是無效的,如果移動已經完成,並且如果發現新的牆壁,則健身狀態會上升。
是嗎?
也許你可以提供一些關於每個進化個體中編碼信息的更多細節? – 2010-02-18 11:16:45
我編輯了主要問題,但目前沒有真正重要的編碼,此刻每個個體有500個基因,隨機數字方法在其中添加1或0。 – AlexT 2010-02-18 11:24:07