我正在使用遺傳算法在Matlab優化計算昂貴的適應度函數也有約束。我現在將懲罰限制在目標函數中,因爲違反約束只能在函數求值的末尾計算。我想用nonlcon來滿足約束條件。使用Matlab遺傳算法優化昂貴的適應度函數約束
但我的問題是,健身功能評估是昂貴的,我不能再次做檢查違反約束。我已經看到了一些嵌套的函數公式,其中使用輸出函數I可以累積每一代的所有單個變量值。
根據我的想法,是否有可能有一個矩陣,我可以將所有的個人價值存儲在一代生成更新開始時矩陣,而我的健身評估和當我調用nonlcon的約束評估,然後查找更新後的矩陣來約束違規。當我試圖實現這一點時,我有一些疑問。
1)我記得我在一些論壇上outputfcn遺傳算法中讀書可以被稱爲無論是在開始一代或年底。默認情況下,它在最後。如果它在最後調用,我將無法執行我的方法。可悲的是,我無法在一開始就找到如何調用outputfcn,而不是一代人的結束。
2)由於我的健身功能在計算上很昂貴,我正在使用並行評估。那麼,在Matlab中使用並行選項時可能會實現上述想法,否則會產生一些困難?