【问题标题】:symbolic Quadratic optimization using matlab使用matlab进行符号二次优化
【发布时间】:2016-01-09 04:33:02
【问题描述】:

我正在尝试最小化以下表达式:

我试图在给定 y,x^H 和 A. 的情况下最小化 x。以 U 和 W 作为单位矩阵。

我尝试了 fmincon,但没有成功,这就是我所做的

   [B,C] = fmincon(@(X-OD).'*(X-OD)+(Ycount-A*X).'*(Ycount-A*X),0,[],[],[],[],0,inf) 

任何帮助将不胜感激

【问题讨论】:

  • 请比“没有成功”更具体;如果有错误消息或警告,请编辑问题以包含它们。请比“这就是我所做的”更具体;在您的一行代码之前提供所有变量的输入以及任何无意义的输出以及预期的输出。
  • 另外,如果您的目标是使用通用矩阵进行实际的符号优化,尽管假设是已知的,我认为使用 Matlab 解决这个问题充其量是可疑的。
  • 我在您的问题中看不到任何符号数学。 fmincon 是一个数值优化例程。请编辑以澄清您的意思或删除“符号”。更重要的是,“但没有成功”没有帮助。它有什么问题?编辑以提供完全可运行的代码,以便其他人可以尝试复制。指出任何错误(完整)或输出与您的预期不匹配的原因以及原因?

标签: matlab optimization quadratic-programming


【解决方案1】:

我将忽略问题的“象征性”部分。为了在数值上解决这个问题,我推荐两种方法:

使用 CVX

下载包CVX。代码是:

cvx_begin
variables x(n)

minimize(quad_form(x - xh, U_inv) + quad_form(y - A*x, W_inv))
subject to:
x >= 0
cvx_end

做一些数学运算并使用 Matlab 函数 quadprog

做一些代数,你可以证明你的问题等价于:

minimize (over x) .5x'(inv(U) + A'inv(W)*A)x +(-y'*inv(W)*A-xh'*inv(U))*x
      subject to: x>=0

这些你可以使用Matlab函数quadprog

H = U_inv + A'*W_inv*A;         %'
f = -y'*W_inv*A - xh'*U_inv;    
Aeq = [];
beq = [];
LB  = zeros(n, 1);
UB  = [];
x_method2 = quadprog(H, f, [], [], Aeq, beq, LB, UB);

【讨论】:

  • 谢谢!工作正常,我在国外无法早点回复
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-09-02
  • 2023-03-06
  • 2016-05-08
  • 1970-01-01
相关资源
最近更新 更多