首页 文章

二次程序公式:Matlab

提问于
浏览
0

鉴于此目标函数:

最小化:

f = (Ax + By)' * G * (Ax + By)

受到一些平等和不平等的影响 .

其中 xy 分别是具有 pq 元素的实值向量(决策变量) . A 大小 m * pB 大小 m * q ,G是大小为 m * m 的对称矩阵 .

我的问题是如何以 v' * G * v 的形式编写 f ,以便它可以很容易地在quadprog中使用 . 换句话说,如何混合A,B和G?

1 回答

  • 0

    这看起来不完整!

    无论出于何种原因,您似乎想要根据两个变量组件进行建模 . 现在您没有指定它们如何相互作用 .

    由于大多数优化器都在单个变量向量上工作,因此需要连接自己的变量 .

    因为你没有显示 G ,我假设你有一个 Gx ,一个为 y ,让我们称之为 H .

    (备注:不是matlab用户;不要将示例语法视为理所当然!)

    • z = [x y]

    • P = blkdiag(G,H)

    • 假设x和y独立于二次项

    • 例如没有 x0*y1 之类的条款

    • 解决:for z P z`

    例:

    x = [x0 x1 x2]
    y = [y0 y1]
    G = [6 2 1; 2 5 2; 1 2 4]
    H = [8 2; 2 10]
    
    # G
    6 2 1
    2 5 2
    1 2 4
    
    # H
    8 2
    2 8
    
    z = [x0 x1 x2 y0 y1]
    P = [6 2 1 0 0; 2 5 2 0 0; 1 2 4 0 0; 0 0 0 8 2; 0 0 0 2 8] 
    
    # P
    6 2 1 0 0
    2 5 2 0 0
    1 2 4 0 0
    0 0 0 8 2
    0 0 0 2 8
    

相关问题