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

Question on return type :StationaryPointFound #60

Open
sarkispa opened this issue Jan 6, 2022 · 1 comment
Open

Question on return type :StationaryPointFound #60

sarkispa opened this issue Jan 6, 2022 · 1 comment

Comments

@sarkispa
Copy link

sarkispa commented Jan 6, 2022

Hi,
I am getting back the :StationaryPointFound message every time I try to solve a particular MCP model with :PATH but I cannot make sense of what this exactly means, and why it is different than a :Solved status for example. Providing a MWE for this issue is going to be relatively complicated but I will try to provide some details.

The problem is an energy dispatch problem from firms to markets, with constraints on supply and market-clearing given a demand function and Cournot competition. A previous iteration of that model was solving when using a 1st-order Taylor approximation on a nonlinear part of the model. We are now trying to solve the model without relying on that approximation. At the stationary point, the residual is greater than the convergence tolerance although not large (~2.5-3.5), the FOCs of the problem are all relatively close to 0 (between ~1e-5 and 0.5) and the variables of interest are believable, but hard to say if optimal. When I try to use :NLsolve instead, I get back three errors:

  • ** On entry to DLASCLS parameter number 4 had an illegal value
  • LoadError: LinearAlgebra.LAPACKException(19)
  • caused by: LinearAlgebra.SingularException(1)

Again, looking for details on these messages was unfruitful.
I have tried to make firms price-taking, remove shipping costs, make all firms identical, use a larger tolerance, etc. but nothing gets me out of the :StationaryPointFound message.

Let me know if I can provide more details, or if you have an idea of what's going on here. Thanks!

@chkwon
Copy link
Owner

chkwon commented Jan 6, 2022

As far as I understand, the PATH solver converts the MCP into an equation, say f(x)=0 and then applies a special Newton's method. The residual is the value of f(x) at the end. I believe :StationaryPointFound happens when the iterative scheme of Newton's method converged to a point, but it is not a solution to the MCP.

The function f(x) in the converted equation does not enjoy good computational properties in general unless your MCP satisfies certain conditions. This explains why your first-order Taylor approximation worked.

You can read about the PATH solver here: http://pages.cs.wisc.edu/~ferris/techreports/cstr1179.pdf

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

2 participants