我使用的是全球最大化工具箱最大化以下功能:改變優化變量,以恆動態(Matlab的)
function x = NameOfFunction (w1, w2, w3, a, b, c, Structure1, Structure2, Structure3)
在那裏,我通過改變w1
,w2
值減少x
和w3
,這是分配給在評估x
的值時計算的其他函數的權重。其餘參數是包含數據的常量和結構。 x
的值以及三個權重變量取決於通過結構輸入函數的數據。
有沒有辦法將權重變量之一(即優化器改變爲最小化x
的變量)更改爲正在優化的函數中的常量?有時候,根據輸入數據所符合的條件,w
變量之一需要設置爲0.有沒有一種方法可以在函數內部完成此操作?
我試着做一個簡單的if
語句,但優化器仍然爲所討論的權重指定了一個非零值。
編輯:這是一個更具體的例子。有時,與w3
相關的功能將評估爲NaN
(因此應該從x的計算中排除)。發生這種情況時,我想爲優化運行的迭代分配一個0到w
變量。
目前,我有目標函數,將排除與w3
從x
計算相關的函數的簡單if
說法,但不管優化分配一個值w3
。
在什麼時間點你知道你是否想排除'w'變量?是在你調用優化器之前,還是在優化器運行一段時間之後? – mars
@mars:給你回覆。我知道我可以控制'w3'是否脫離優化器(然後在運行之前將'w3'的上限和下限設置爲0),但是這種解決方案並不理想。我想知道是否有一種方法可以在優化器開始運行後將'w3'變量設置爲常量。 –