【问题标题】:Quadratic Program formulation: Matlab二次规划公式:Matlab
【发布时间】:2017-11-23 07:27:08
【问题描述】:

给定这个目标函数:

最小化:

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

受制于一些平等和不平等。

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

我的问题是如何将f 写成v' * G * v 的形式,以便可以在quadprog 中轻松使用。也就是说,A、B、G如何混合?

【问题讨论】:

  • f 已经是v' * G * v 的形式,其中v = Ax + By...
  • 是的,但我需要将 v = Ax + By 表示为单个向量,而不是两个向量 x 和 y。
  • 所以输入v = A*x + B*y?
  • @Wolfie 大多数优化器需要唯一的决策变量,即一个向量,我需要将它们连接起来。

标签: matlab optimization mathematical-optimization nonlinear-optimization quadprog


【解决方案1】:

这看起来没有完全指定!

无论出于何种原因,您似乎都想根据两个可变组件进行建模。现在你没有具体说明它们是如何相互作用的。

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

由于您没有显示G,我假设您有一个G 用于x,一个用于y,我们称之为H

(备注:不是matlab用户;不要认为example-syntax是理所当然的!)

  • z = [x y]
  • P = blkdiag(G,H)
    • 假设 x 和 y 关于二次项独立
    • 例如没有x0*y1 类似的条款
  • 解决:对于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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-23
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    相关资源
    最近更新 更多