Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Mosek Solver Fails in High Accuracy Mode #12

Closed
RoyiAvital opened this issue Apr 12, 2020 · 6 comments
Closed

Mosek Solver Fails in High Accuracy Mode #12

RoyiAvital opened this issue Apr 12, 2020 · 6 comments

Comments

@RoyiAvital
Copy link

RoyiAvital commented Apr 12, 2020

I wrote about failing to solve a CVX model with Mosek in - Mosek Fails Where SDPT3 Works - Least Squares with Semi Definite Constraint.

I narrowed the problem that Mosek fails when CVX precision is set to high by cvx_precision('best');.

Any idea why?
How could that be fixed in case of high accuracy is needed?

@aszekMosek
Copy link

aszekMosek commented Apr 14, 2020

The issue is that CVX sets MSK_DPAR_INTPNT_* termination tolerances to 0.0, which should be avoided, and that even the "default" precision sets some values that are not Mosek defaults.

A sensible solution would be that "default" precision keeps default Mosek tolerances, "low" divides them by C and "best" multiplies by C, for some C, if at all necessary.

@RoyiAvital
Copy link
Author

RoyiAvital commented Apr 14, 2020

How come other solvers handle this?
I think @mcg1969 explained the logic in that mode - Let the solver say when he think it is done.

Anyhow, even for tolerance of 0 I wouldn't expect MOSEK to return NAN.

@aszekMosek
Copy link

Different solvers have different parameters and different interpretations.

If you want to "Let the solver say when he think it is done." then the way to do it in Mosek is not to change parameter settings from their default values.

Nan is understandable if the solver finds no solution.

@RoyiAvital
Copy link
Author

This is exactly what doesn't make sense.

Let's say that for the default the solver executed 100 iterations and got to the accuracy required.
Then for lower tolerance I'd expect it will do the same exact 100 iterations and then few more, in order to achieve lower tolerances. But in any case I don't expect it to infer there is no solution or return NaN. At worse case it should say couldn't reach the tolerance, this is the best effort solution.

@aszekMosek
Copy link

It is more or less like you say if you use decreasing but positive tolerances. Tolerances equal to zero are simply meaningless from the point of view of Mosek termination criteria and result in unspecified behavior, which you experience. Sorry it is not handled better, like by a warning or error but that's how things are now.

@mcg1969
Copy link
Member

mcg1969 commented Apr 13, 2024

Sorry that nobody ever responded to this; we don't look at this repo much. For the benefit of others who come here, please visit https://ask.cvxr.com/ for questions about DCP.

@mcg1969 mcg1969 closed this as not planned Won't fix, can't repro, duplicate, stale Apr 13, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants