二次程序公式:Matlab

时间:2017-11-22 14:31:32

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

鉴于此目标函数:

最小化:

f = (Ax + By)' * G * (Ax + By)
受到一些平等和不平等的影响。

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

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

1 个答案:

答案 0 :(得分:0)

这看起来不完整!

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

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

由于您没有显示G,我假设您GxyH,我们称之为z = [x y]

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

  • P = blkdiag(G,H)
  • x0*y1
    • 假设x和y独立于二次项
    • e.g。没有z` P z喜欢的条款
  • 解决:for 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

示例:

files_list = list.files("/home", pattern = "*txt", full.names=T, recursive=FALSE)

for (i in seq_along(files_list)) {

        do something etc
}