MATLAB Answers

Royi Avital

Solving a Bilinear Optimization Problem

Asked by Royi Avital
on 9 Aug 2012

Hello, I would like to optimize to following expression:

Note: All are matrices.

I'd like to find:

How would you do that in MATLAB?

How would you use 'lsnonlin'?

What would be the analytical Jacobian?

Thank You.

  1 Comment

Royi Avital
on 9 Aug 2012



No products are associated with this question.

1 Answer

Answer by Alan Weiss
on 10 Aug 2012
 Accepted answer

I am not sure that I understand your notation, such as \|| . \||_F. But if you can write your objective function as a sum of squares, then you can use lsqnonlin. Otherwise, use fminunc.

You need to formulate your problem so there is a single vector or matrix of unknowns, x, that is what you want to vary. For example, if C^2 is M-by-N, and E^2 is N-by-K, then you could write

 C2 = reshape(x(1:M*N),M,N);
 E2 = reshape(x(M*N+1:end),N,K);

and minimize over a vector x that has MN + NK components.

Because I do not understand your notation, I cannot tell you what the Jacobian might be. You can look here or here for some help on calculating Jacobians.

Good luck,

Alan Weiss

MATLAB mathematical toolbox documentation

  1 Comment

Royi Avital
on 11 Aug 2012

Hi, The A _F stands for the Frobenius norm. I could write it as a sum of squares yet 'lsnonlin' takes so much time to solve it and usually terminated prematurely.

Discover what MATLAB® can do for your career.

Opportunities for recent engineering grads.

Apply today