Is there a way to accelerate the process of CVX solver?

Since there are a lot of constraints and variables, and I used SCA, there are many iterations. Every time, it takes too long to run through the code. Is there a way to accelerate the process of CVX solver(I’m using SDP3, Mosek can not solve my problem)

Invoke the undocumented accelerate mode with
cvx_begin accelerate

Just kidding. An improved formulation of the CVX subproblems, and improved algorithm (adding safeguarding, such as line search or trust region) and starting point for SCA might help. It is possible, but not very likely, that specifying solver options using cvx_solver_settings might help (but could also hurt).

Can you provide more details on Mosek not being able to solve you r problem and SDPT3 (supposedly) being able to?

Thank you for your reply, so the principle to accelerate the process is mainly to improve the algorithm, right? What do you mean by adding trust region?

If I use Mosek, it says: Referenced a non-existent field ‘sol’

Something is wrong with your Mosek or CVX installation, possibly including version incompatibilities or “bad” MATLAB path.

https://en.wikipedia.org/wiki/Trust_region (not a very detailed description). You are probably better off using an off-the-shelf non-convex solver (for instance under YALMIP) than trying to build your own algorithm.

“Reference to non-existent field sol” means that Mosek didn’t even start solving the problem. The log output (do not use “quiet”) will explain why. Either a license issue, or huge coefficients, NaNs in the data or something else. You can share the full log output here and we can help.

Thank you for your reply, I removed ‘quiet’, the Mosek license is expired. lol

1 Like

You have mentioned that we should choose an appropriate starting point for SCA. If I applied SCA for a constraint of DC form, the objective function is to minimize something. Will the starting point affect the final optimized value? Because the original problem is non-convex, so with different starting, it might find different local optimum, is that right?

Depending on the problem and the starting point, SCA might converge to a global optimum, a non-global local optimum, something else, or nothing, or the solver might encounter numerical problems and fail. The starting point can affect which local optimum SCA converges to, or whether ti converges to anything at all.

You can read my posts at http://ask.cvxr.com/search?q=sca%20unreliable for my thoughts on SCA.

Do you mean that I can combine SCA with trust region to improve the performance?

Well, if implemented well, it might improve the reliability. As I wrote before, you are probably better off using an off-the-shelf non-convex solver (for instance under YALMIP) than trying to build your own algorithm.

It’s a pity that I have to build my own algorithm, because that is my topic of Master thesis, to use convex optimization to solve an nonconvex problem that is in DC form.

Good luck on your thesis. You can’t expect to get to and advance the research frontier without some effort. We here on the forum don’t want to deprive you of the satisfaction of doing a lot of hard work. and eventually achieving a good result

Let me clarify that design and performance of non-convex solvers is outside the scope of this forum, even if the convex sub-problems being solved are solved with CVX. This forum can help with the convex sub-problems, but how to string them together well is outside the scope, even though you might get some advice here and there.