【问题标题】:matlab quadprog constraints issuematlab quadprog 约束问题
【发布时间】:2014-02-11 19:06:15
【问题描述】:

我有一个权重组合,我在 matlab 中使用 quadprog。 我有 quadprog 优化器的所有输入。我只是在制定公式时遇到了一些麻烦 约束

我希望我的约束具有 0 或 1% 的下限,有没有办法在保持我的目标函数的同时做到这一点

谢谢!

【问题讨论】:

    标签: matlab optimization quadprog


    【解决方案1】:

    我不确定我是否理解你的问题。

    如果你的权重已经用百分比定义了,直接就是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不是用百分比来定义的。

    因此,您需要的约束是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.99i = jb = zeros(n, 1)

    在这种情况下,您正在使用

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

    希望对你有所帮助!

    丹尼尔

    【讨论】:

    • 嗨,Daniel,我正在尝试将最小值设置为 1% 或 0 介于两者之间。这就是我正在努力解决的问题
    • @hdg 我不明白你想要什么,或者你不理解我上面的解决方案。例如,考虑所有权重都大于 2% 的情况。在这种情况下,受约束和不受约束的问题具有相同的解决方案。现在想象一下,无约束问题的权重等于 0.5%,而您的约束是 1%。所以无约束的解决方案是不可接受的。所以约束问题应该考虑上面提出的约束。我不是假设下限是 0 到 1% 之间的数字。如果您对以上内容有疑问,请提出!
    • @hdg (continuation) 上面我假设权重不受约束,或者它们大于 1% 或大于 0%;例如,我不假设它们大于 0.5%。
    猜你喜欢
    • 2013-09-13
    • 1970-01-01
    • 2011-07-06
    • 2021-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多