2016-08-01 760 views
1

我正在使用matlabs GA來優化整數變量數組,但我希望每個變量都是唯一值。 更確切地說,我只希望一定比例具有獨特的價值。例如,假設我必須爲10個變量找到最佳整數值,但作爲一個要求,我的優化需要確保最後5個值都是給定範圍之間的唯一值。我將如何去確保最後5個變量是唯一的?僅使用唯一整數的Matlab遺傳算法(GA)

我在考慮使用一個非線性約束來標記任何重複的變量,但這意味着GA仍然會運行這個會導致錯誤的迭代。我想到的另一種方式,但不知道如何去做,將創建一個自定義創建函數,以確保它們是獨特的?

任何有關此事的幫助將不勝感激!謝謝!

回答

0

也許使用類似於從您的健身功能中繪製的設置?

I.e.說你想要一個從1-10範圍內的3個唯一整數,而不是試圖告訴GA選擇3個獨特的整數,告訴它選擇一個索引爲1到10之間的第一個變量,1-9爲第二個第三名是1-8。將1到10之間的唯一整數數組傳遞到您的健身函數,無論是編程方式還是使用匿名函數。第一個變量從這個數組中選擇它的整數(通過索引),然後從數組中刪除這個整數。重複第二個和第三個變量。這樣每個變量選擇一個唯一的值(如從一副牌中畫圖)。

+0

這是一個很好的簡單解決方案。謝謝。 –