2014-02-11 81 views
0

我有一個權重投資組合,我在matlab中使用quadprog。 我擁有quadprog優化器的所有輸入。我只是有一些麻煩,制定 約束matlab quadprog約束問題

我想我的約束,有一個下界0或1%,是有辦法做到這一點,而maintainng我的目標函數

謝謝!

回答

0

我不確定我是否理解你的問題。

如果你的權重是按照百分比已經定義,它是直接的quadprog定義:

x = quadprog(H, f, [], [], [], [], lb, []) 

所以Hef應的MATLAB描述中提供:

quadprog(H,f) - 返回一個向量x,最小化1/2 * x' * H * x + f' * xH必須是正定的問題有一個有限的最小值。」

而且lb是約束的矢量。例如,如果x處於期望百分比的情況下的矢量3 x 1,然後lb = [0.01; 0.01; 0.01]0.011%

在另一方面,讓我們假設該sum_{i=1}^{n} w_i不等於1。因此,w_i不百分比來定義的。

THER因此,您需要的限制是p_i (percentage)= w_i/(sum w_i) >= 0.01(在下限爲1%的情況下)。

注意,在這種情況下,約束是

w_i >= 0.01 * (sum w_i)

或者

-0.01 * (sum_{j=1}^{i-1} w_j) + 0.99 * w_i - 0.01 * (sum_{j=i+1}^{n} w_j) >= 0

或者

0.01 * (sum_{j=1}^{i-1} w_j) - 0.99 w_i + 0.01 * (sum_{j=i+1}^{n} w_j) <= 0

因此,日是Ax <= b類型的約束。

所以

A_ij = 0.01ij

A_ij = -0.99不同的,當i = jb = zeros(n, 1)

在這種情況下,你正在使用

x = quadprog(H, f, A, b) 

我希望我幫你!

丹尼爾

+0

喜丹尼爾,我想設置最低至是1%或0沒什麼between..Thats什麼,我有 – qfd

+0

掙扎@hdg給我一些時間來更新我的答案!好? – DanielTheRocketMan

+0

@hdg我不明白你想要什麼,或者你不理解我的解決方案。例如,考慮所有權重大於2%的情況。在這種情況下,受約束和不受約束的問題具有相同的解決方案。現在想象一下,無約束問題的權重等於0.5%,約束爲1%。所以無約束的解決方案是不可接受的。所以受限制的問題應該考慮上面給出的約束條件。我不假定下限是0到1%之間的數字。如果你對上述問題有疑問,就問! – DanielTheRocketMan