How to improve the efficiency of CVX code

Uncategorized
Jun 3, 2013
K

I have a minimize problem and the cvx code is followed as:

cvx_begin 
  variable x(n);
  for i = 1:c
       ee(i) = norm(T(:,:,i)*x-y,2)/norm(y,2);
  end
   minimize (norm(D*x-y,2)+0.01*sum(ee));
cvx_end 

In the objective function, only x is variable and others are all known. n is the dimension of vector x and c is just a loop number less than 100. I am sorry I do not use other solvers to this problem but the cost time is unacceptable. Do you think there is no improvement space?

In my problem, the size of n is 700 and the size of y is a 300*1 vector. I have no idea why for this problem, CVX should cost so much time. How can i know the detailed optimization method which cvx used for my problem?

This code will cost 17 minutes to compute the result. It’s so slow and i don’t know how to speed up. Thank you very much!

M

What solver are you using? How do the other solvers compare? Also, since we don’t know what “n” is, what “c” is, and what the size of y is, it’s hard to say if 17 minutes is reasonable or not. I see no reason for CVX to be unusually slow on this problem.

M

Thanks for the edit but I still do not know what the size of “n” is, and what the size of y is. If the solver time is unacceptable, then I’m afraid you will have to use another system besides CVX.

J

Please provide a complete script to reproduce the problem. It ought to be mandatory and common sense. If you provided such information, we could experiment with different solvers in a couple minutes and make suggestions for alternative formulations.