在遺傳算法中,對染色體進行編碼是否合適,使得某些位比同一染色體中的其他位更重要?例如,(索引%2 == 0)/(2,4,6,...)位比(索引%2!= 0)/(1,3,5,...)位更重要。例如,如果位2的值在[1,5]範圍內,我們考慮位3的值,並且如果位2的值爲0,則位3的值不起作用。GA遺傳算法的染色體表示
例如,如果問題是我們有一所學校提供多門課程,我們想知道下一學期應該提供哪門課程,哪門課程不應該開設,如果應該開設哪門課程,誰應該教那門課,何時教他。因此,表示問題的一種方法是使用長度爲2n的矢量,其中n是課程的數量。每門課程都由一個2元組(誰,什麼時候)代表,什麼時候什麼時候應該教授課程,誰應該教授課程。第i個位置的元組保存第i個路線的分配。現在可能的值是誰是教師的ID [1-10],以及何時所有可能的時間加0的可能值,其中0意味着任何時候都不應該提供該課程。
現在可以有兩個不同的元組具有相同的健身嗎?例如,(3,0)和(2,0)對於第i個課程而言是不同的值,但它們意味着相同的東西,因此我們不關心如果何時= 0時誰不會提供這個課程。或者我應該給0添加0,這樣0意味着沒有人教導,而元組意味着當且僅當它的值是(0,0)時,不應該提供相應的課程。但是,如何(0,v)和(v,0),其中v> 0?我應該認爲這是否意味着不應該提供課程?我需要幫助。
謝謝@onABauer您的答案。從你的GA經驗,你可以給我一些關於我的問題第二部分的建議嗎?如果我代表一門課程(何時,誰),我該如何編碼,不應提供此課程?如果什麼時候可以採取所有可能的時間+ 0意味着在任何時候。什麼時候可以接受所有可能的教師ID + 0這意味着沒有人。然後(0,0)表示不應提供此課程。但是,如果我得到(0,3)或(9,0),我應該認爲這些與(0,0)相同嗎?這意味着不應該提供課程。 – Evan
另一種編碼是讓GA染色體變長。一個染色體由多個課程組成,其中一個課程被表示(courseID,誰,何時),何時可以採取所有可能的時間以及何時可以接受所有可能的教師ID。但是在這種情況下,如果我在一個染色體中獲得課程重複,該怎麼辦?我該如何處理? – Evan
我編輯了我的答案,試圖進一步回答你的問題 – OnABauer