Equivalent constraints leading to different results

Hello, possibly really dumb question.

My original constraint is

|f|<=f_lim, f being the variable

which solves just fine.

Then I modified the constraint to

and the solver status = fails

The code is here:

	variables f(10) a(10) b(10)
	subject to 
		A*f == -F
		L.'*(a-b) <= 0.2
		for k=1:10
			norm([b(k) C(k)*f(k)]) <= a(k)

		% This leads to infeasibility in this problem
			% -f_lim(k)*(a(k)-b(k)) <= f(k) <= f_lim(k)*(a(k)-b(k)) 

		% This solves, the results are verified to be correct
			abs(f(k)) <= f_lim(k)*(a(k)-b(k)) 

The data is here:

Any ideas?


It may help if you show all your code, including input data. I.e., provide reproducible code. Have you looked at the solver output (iterations)? Have you tried more than one solver?

Just as an example of how I am in the dark right now,


is not CVX code, and i don’t know what your code actually is, or even the dimension of f.

Hey Mark, thanks for your reply. I’ve updated my post to include a workable code as well as the data necessary.

Both constraints are included.
Thanks for your help!

I “solved” your “infeasible” version with sedumi (getting cvx_optval = +48607.6), and failed with SDPT3. On your “verified correct results” version, sedumi did not converge in 150 iterations, and SDPT3 was Inaccurate/Solved (getting cvx_optval = +48825.5).

Your data and variables have a very wide dynamic range. This most likely is contributing to or causing the numerical difficulties. Perhaps MOSEK would be more numerically robust in dealing with this problem. In order to improve matters, consider reformulating your problem, paying particular attention to scaling. Try to get everything to be of a similar order of magnitude if you can, or at least closer to that than it is now. See http://web.cvxr.com/cvx/doc/support.html#handling-numerical-issues .

I’ll take this opportunity to ask mcg how to increase max iterations for sedumi beyond the default 150.