我在Matlab中構建遺傳算法的約束矩陣時遇到了問題。我要導入GA功能這些矩陣爲具有以下約束的問題:如何設置Matlab遺傳算法約束?
a1<a2<a3...an-1<an , 0<ai<90, n=number of variables.
Matlab的文件並沒有幫助我,因爲它僅是指簡單的公式,而不是這種限制。
我是GA的新手,每一次幫助都可以接受!
我在Matlab中構建遺傳算法的約束矩陣時遇到了問題。我要導入GA功能這些矩陣爲具有以下約束的問題:如何設置Matlab遺傳算法約束?
a1<a2<a3...an-1<an , 0<ai<90, n=number of variables.
Matlab的文件並沒有幫助我,因爲它僅是指簡單的公式,而不是這種限制。
我是GA的新手,每一次幫助都可以接受!
matlab提供的默認約束不適合您的需求。
你可以試着翻譯你的約束,並添加一種懲罰狀態,就像這樣:
goalfunction value = Inf if conditions are not fulfilled
但是,這將無法找到最佳的,那麼什麼是我的解決方案
您也可以嘗試翻譯問題和,而不是找你的價值觀,只要找到這個:
b(1), b(2), ... b(n), where bi = a(i)-a(i-1) and b(i) > 0 for each i
所以,你只能找到每個初始變量之間的距離,並提供他們是積極的,你會發現monotically icreasing序列,這就是你需要的。告訴我,如果它滿足你。
PS。優化中的約束是很好的解決方法,並不總是直截了當地如何將每個真實世界的約束轉換爲aX > b
:)
也許您可以提供以下選項來定義5參數問題的不等式約束。
Aineq = [1 -1 0 0 0; 0 1 -1 0 0; 0 0 1 -1 0; 0 0 0 1 -1; ]
和
b = [0 0 0 0]
這將轉化爲以下約束:
a1<a2
a2<a3
a3<a4
a4<a5
這相當於a1<a2<a3<a4<a5