我有一個權重投資組合,我在matlab中使用quadprog。 我擁有quadprog優化器的所有輸入。我只是有一些麻煩,制定 約束matlab quadprog約束問題
我想我的約束,有一個下界0或1%,是有辦法做到這一點,而maintainng我的目標函數
謝謝!
我有一個權重投資組合,我在matlab中使用quadprog。 我擁有quadprog優化器的所有輸入。我只是有一些麻煩,制定 約束matlab quadprog約束問題
我想我的約束,有一個下界0或1%,是有辦法做到這一點,而maintainng我的目標函數
謝謝!
我不確定我是否理解你的問題。
如果你的權重是按照百分比已經定義,它是直接的quadprog
定義:
x = quadprog(H, f, [], [], [], [], lb, [])
所以H
,e
和f
應的MATLAB描述中提供:
quadprog(H,f)
- 返回一個向量x
,最小化1/2 * x' * H * x + f' * x
。H
必須是正定的問題有一個有限的最小值。」
而且lb
是約束的矢量。例如,如果x
處於期望百分比的情況下的矢量3 x 1
,然後lb = [0.01; 0.01; 0.01]
是0.01
(1%
)
在另一方面,讓我們假設該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.01
當i
爲j
A_ij = -0.99
不同的,當i = j
和b = zeros(n, 1)
在這種情況下,你正在使用
x = quadprog(H, f, A, b)
我希望我幫你!
丹尼爾
喜丹尼爾,我想設置最低至是1%或0沒什麼between..Thats什麼,我有 – qfd
掙扎@hdg給我一些時間來更新我的答案!好? – DanielTheRocketMan
@hdg我不明白你想要什麼,或者你不理解我的解決方案。例如,考慮所有權重大於2%的情況。在這種情況下,受約束和不受約束的問題具有相同的解決方案。現在想象一下,無約束問題的權重等於0.5%,約束爲1%。所以無約束的解決方案是不可接受的。所以受限制的問題應該考慮上面給出的約束條件。我不假定下限是0到1%之間的數字。如果你對上述問題有疑問,就問! – DanielTheRocketMan