Skip to main content
added 110 characters in body
Source Link
Mark L. Stone
  • 1.5k
  • 1
  • 10
  • 17

This can be formulated as a non-convex Quadratically-Constrained Quadratic Programming (non-convex QCQP) problem, which is much more difficult to solve than a convex QCQP. I will illustrate aformulation and solution by numerical nonlinear optimization using YALMIP under MATLAB. In particular, I will solve the problem for a single R, as provided by @Rawan in the comments. This can be extended to multiple $R_k$, as discussed.

I will illustrate a solution by numerical nonlinear optimization using YALMIP under MATLAB. In particular, I will solve the problem for a single R, as provided by @Rawan in the comments. This can be extended to multiple $R_k$, as discussed.

This can be formulated as a non-convex Quadratically-Constrained Quadratic Programming (non-convex QCQP) problem, which is much more difficult to solve than a convex QCQP. I will illustrate formulation and solution by numerical nonlinear optimization using YALMIP under MATLAB. In particular, I will solve the problem for a single R, as provided by @Rawan in the comments. This can be extended to multiple $R_k$, as discussed.

added 537 characters in body
Source Link
Mark L. Stone
  • 1.5k
  • 1
  • 10
  • 17

Note that the problem is non-convex. Therefore, there may be, and generally are for this problem, local minima which are not globally optimal. So good starting value for X will help a local optimizer a lot. Using a descent method, the solution obtained should be no worse than, and may be much better than, the starting value. If a global optimizer is used, this may not be relevant, but a good starting value may speed things up. A (rigorous) global optimizer will likely be intractable for desired size versions of this problem.

Edit: In response to a new comment by the OP, the optimization can be changed to add a new constraint trace(X*X') <= upper_bound as follows: Use

Edit: In response to a new comment by the OP, the optimization can be changed to add a new constraint trace(X*X') <= upper_bound as follows: Use

Note that the problem is non-convex. Therefore, there may be, and generally are for this problem, local minima which are not globally optimal. So good starting value for X will help a local optimizer a lot. Using a descent method, the solution obtained should be no worse than, and may be much better than, the starting value. If a global optimizer is used, this may not be relevant, but a good starting value may speed things up. A (rigorous) global optimizer will likely be intractable for desired size versions of this problem.

Edit: In response to a new comment by the OP, the optimization can be changed to add a new constraint trace(X*X') <= upper_bound as follows: Use

added 317 characters in body
Source Link
Mark L. Stone
  • 1.5k
  • 1
  • 10
  • 17

Edit: In response to a new comment by the OP, the optimization can be changed to add a new constraint trace(X*X') <= upper_bound as follows: Use

optimize([Y*(X'*R*X+eye(N)) == eye(N),trace(X*X') <= upper_bound],real(trace(R-R*X*Y*X'*R)),sdpsettings('usex0',1))

where upper_bound can be whatever you want it to be.

Edit: In response to a new comment by the OP, the optimization can be changed to add a new constraint trace(X*X') <= upper_bound as follows: Use

optimize([Y*(X'*R*X+eye(N)) == eye(N),trace(X*X') <= upper_bound],real(trace(R-R*X*Y*X'*R)),sdpsettings('usex0',1))

where upper_bound can be whatever you want it to be.

Source Link
Mark L. Stone
  • 1.5k
  • 1
  • 10
  • 17
Loading