0
我剛剛開始使用Matlab,並且在約束條件下優化函數時遇到問題。有條件最小化的問題
這是函數,其中lord
只是一組iid
隨機變量。
F = @(l) 1/size(Lord,1)*sum(Lord<=l)
所以我試圖儘量減少這與條件F(l)>=alpha
。
我沿着
[xmin fmin] = fminbnd(F,-1,1)
行想,但我不知道如何將條件。
我剛剛開始使用Matlab,並且在約束條件下優化函數時遇到問題。有條件最小化的問題
這是函數,其中lord
只是一組iid
隨機變量。
F = @(l) 1/size(Lord,1)*sum(Lord<=l)
所以我試圖儘量減少這與條件F(l)>=alpha
。
我沿着
[xmin fmin] = fminbnd(F,-1,1)
行想,但我不知道如何將條件。
所以你想知道l
'F(1)'是最小的但大於'alpha'?最簡單的可能是對價值低於alpha
的巨大罰款。
function y = F(l)
y = 1/size(Lord,1)*sum(Lord<=l);
y = y + (y > alpha) * 1e9; % the penalty term
end
把這個函數直接放在最小化之前,因爲Lord和alpha必須在範圍之內。
我想你需要使用['fmincon'](http://www.mathworks.de/de/help/optim/ug/fmincon.html)以及非線性條件'nonlcon'。或者,因爲你的功能相當簡單,你可以使用[拉格朗日乘數](http://en.wikipedia.org/wiki/Lagrange_multiplier) – bdecaf