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

Maintenance #49

Closed
davidanthoff opened this issue Feb 10, 2021 · 17 comments
Closed

Maintenance #49

davidanthoff opened this issue Feb 10, 2021 · 17 comments

Comments

@davidanthoff
Copy link
Contributor

Hi,

I saw the message that this package is no longer maintained, with a pointer towards newer versions of JuMP and PATHSolver as alternatives. But it seems to me that at the moment JuMP with PATHSolver does not support the non-linear problems of the kind that one can model with Complementarity, right? And at the same time I interpreted @odow's response over at chkwon/PATHSolver.jl#47 as saying that it will take quite a while (realistically 1-2 years) for a generic JuMP/PATHSolver solution to emerge.

So I'm wondering whether it would make sense to continue maintaining Complementarity.jl, until there is actually a viable alternative available? After all, things do seem to work at the moment for non-linear problems, and we (and I believe others) have a lot of use-cases where we would like to utilize the existing functionality.

As far as I can tell the only compat work that one might have to do at the moment is to update Complementarity.jl to work with PATHSolver.jl v1, right?

@chkwon
Copy link
Owner

chkwon commented Feb 10, 2021

Yes I’ll keep this here. I doubt if I’ll add any new functionality here but will try to make it work with newer Julia versions.

@davidanthoff
Copy link
Contributor Author

Excellent, much appreciated! Do you have a sense how complicated it would be to make things work with PATHSolver.jl v1.0?

@odow
Copy link
Contributor

odow commented Feb 10, 2021

Probably just replacing

status, z, f = PATHSolver.solveLCP(myfunc, J0, lb, ub, initial_values, var_name, F_name)
else
status, z, f = PATHSolver.solveMCP(myfunc, myjac, lb, ub, initial_values, var_name, F_name)

@davidanthoff
Copy link
Contributor Author

The tests currently fail because they call PATHSolver.options, which apparently doesn't exist anymore?

@odow
Copy link
Contributor

odow commented Feb 10, 2021

Probably just remove the options for now. You can pass options to PATH via kwargs... in PATHSolver.solve_mcp.

@davidanthoff
Copy link
Contributor Author

I tried to upgrade things, but I'm running into too many other issues that need fixing where the call signatures seem to have changed, and I think at the moment I'm not familiar enough with the changes in PATHSolver or the design in Complementarity to really push this to the finishing line... So fingers crossed that someone else might tackle this :)

@odow
Copy link
Contributor

odow commented Feb 11, 2021

I should probably do this seeing as how I went and broke everything.

In the mean time, if you install ] add PATHSolver@0.6.2 you should be able to use it with Complementarity.jl. (What sort of complementarity problems are you solving? You could also try https://github.com/jump-dev/KNITRO.jl)

@davidanthoff
Copy link
Contributor Author

I should probably do this

That would be awesome :)

And yes, we don't have a problem in the short run as we can just use the previous version of PATHSolver. But would feel better if things keep being maintained to a level where one can use the latest versions of packages.

@chkwon
Copy link
Owner

chkwon commented Feb 11, 2021

@odow If you didn't start the work yet, I think I can do it.

@odow
Copy link
Contributor

odow commented Feb 11, 2021

Go for it

@chkwon
Copy link
Owner

chkwon commented Feb 11, 2021

@odow A few questions:

  1. Can I check if some expression in JuMP.Model is linear or not? I'd like something like _F_linear_operator
  2. Can the new PATHSolver accept the variable/constraint names? This is to display those names in the output of PATH.

@jonmbecker
Copy link

What sort of complementarity problems are you solving?

Example complementarity problems (MCP - computable general equilibrium):

Simple examples:
https://github.com/NREL/SLiDE/tree/master/model

Larger examples (access may be restricted, but updates to master coming soon):
https://github.com/NREL/SLiDE/tree/dev/model

@Jovansam
Copy link

I will add my voice here to say thanks @chkwon and @odow, for the work with Complementarity.jl and PATHSolver.jl. And also thanks to @davidanthoff for bringing this up---I actually brought it up here a while back. Its really nice to see you guys actively care about these features and volunteer your time to help the rest of us. I am certain there are many people like me. Not programmers by training but users of packages who are quickly learning our way around and will soon be able to help with maintaining and developing these packages.

@chkwon
Copy link
Owner

chkwon commented Feb 18, 2021

@Jovansam Thanks you for using it :) If you see any issues, please let us know. I like @odow's new PATHSolver.jl a lot. My version was very dirty and quite difficult to manage.

@chkwon
Copy link
Owner

chkwon commented Feb 18, 2021

Closed by #50

@chkwon chkwon closed this as completed Feb 18, 2021
@chkwon
Copy link
Owner

chkwon commented Feb 18, 2021

@Jovansam A new version is tagged. Now Complementarity.jl uses the most recent version of PATHSolver.jl. If you find any issue, please let us know.

@davidanthoff
Copy link
Contributor Author

Fantastic, thanks so much for this super fast turnaround time!!

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

5 participants