2014-07-03 49 views
0

我剛剛開始使用Matlab,並且在約束條件下優化函數時遇到問題。有條件最小化的問題

這是函數,其中lord只是一組iid隨機變量。

F = @(l) 1/size(Lord,1)*sum(Lord<=l) 

所以我試圖儘量減少這與條件F(l)>=alpha

我沿着

[xmin fmin] = fminbnd(F,-1,1) 

行想,但我不知道如何將條件。

+1

我想你需要使用['fmincon'](http://www.mathworks.de/de/help/optim/ug/fmincon.html)以及非線性條件'nonlcon'。或者,因爲你的功能相當簡單,你可以使用[拉格朗日乘數](http://en.wikipedia.org/wiki/Lagrange_multiplier) – bdecaf

回答

0

所以你想知道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必須在範圍之內。