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

Return :UserLimit when status is "Solved/Inaccurate" #18

Closed
karanveerm opened this issue Feb 6, 2015 · 7 comments
Closed

Return :UserLimit when status is "Solved/Inaccurate" #18

karanveerm opened this issue Feb 6, 2015 · 7 comments

Comments

@karanveerm
Copy link
Contributor

Ref:jump-dev/Convex.jl#64 (comment)

It seems like scs return the same status value of 1 if the problem is Solved or Solved/Inaccurate. Nevertheless, it also returns a string which says Solved or Solved/Inaccurate. We should use this string to determine if the problem is not fully solved, in which case we should return :UserLimit.

@mlubin
Copy link
Member

mlubin commented Feb 6, 2015

I'm not sure what cases Solved/Inaccurate includes, but :UserLimit should be specifically when the solver stops because of the iteration limit/timeout etc.
If the solver decides on its own (before hitting an optional limit) that it can't solve the problem within numerical tolerances, then that's a different status that we've sometimes called :Suboptimal (used by Gurobi) or :Error.

@bodono
Copy link
Contributor

bodono commented Feb 6, 2015

I can also just change the Solved/Inaccurate int returned to some other value, if that helps.

@mlubin
Copy link
Member

mlubin commented Feb 6, 2015

@bodono, is there currently a way to determine the UserLimit status I described above?

@bodono
Copy link
Contributor

bodono commented Feb 6, 2015

Currently SCS only terminates when it's solved the problem (solved, infeasible etc.) or it hits the iteration limit (or the user has interrupted with ctrl-c), so Solved/Inaccurate is always UserLimit for now.

@mlubin
Copy link
Member

mlubin commented Feb 6, 2015

Okay, so yes, it would help if Solved/Inaccurate corresponded to a different integer status.

@bodono
Copy link
Contributor

bodono commented Feb 7, 2015

Ok, I've added it to the v1.1.0 branch:

/* SCS returns one of the following integers: /
#define SCS_INFEASIBLE_INACCURATE (-7)
#define SCS_UNBOUNDED_INACCURATE (-6)
#define SCS_SIGINT (-5)
#define SCS_FAILED (-4)
#define SCS_INDETERMINATE (-3)
#define SCS_INFEASIBLE (-2) /
primal infeasible, dual unbounded /
#define SCS_UNBOUNDED (-1) /
primal unbounded, dual infeasible /
#define SCS_UNFINISHED (0) /
never returned */
#define SCS_SOLVED (1)
#define SCS_SOLVED_INACCURATE (2)

@kalmarek
Copy link
Collaborator

kalmarek commented Sep 4, 2020

I guess this can be closed since MOI maps the termination statuses of SCS to its internal representation

@odow odow closed this as completed Sep 4, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Development

No branches or pull requests

5 participants