-
Notifications
You must be signed in to change notification settings - Fork 97
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
Move code from GraphFlows and GraphsMatching to GraphsOptim #108
Comments
Thank you for opening the issue! I agree with this proposition |
By the way, this could be an opportunity for standardizing package names: half of them start with |
I would like to start splitting the code that requires JuMP or other outside optimizers, what do you think about the name |
I have started a first draft at https://github.com/gdalle/GraphsOptim.jl, when it is mature enough I'll transfer it to the JuliaGraphs organization (cc @matbesancon). I feel like the network interdiction problems of GraphsExtras.jl are sufficiently specific and advanced enough to deserve their individual package, unlike flows and matchings which are (in my opinion) more mainstream. With that in mind, what kind of solver-requiring algorithms would we want to add in GraphsOptim.jl? |
why Convex.jl for Wardrop? |
Following up on this, I am wondering if GraphsOptim.jl actually deserves to exist at all. The new JuMP tutorials are very well done, and I'm not sure providing ready-made LP formulations makes much sense in this case. |
GraphsMatching will still exist because it depends on the blossom implementation. |
My bad, I didn't know there were other nontrivial dependencies for GraphsMatching and GraphsFlows besides JuMP. |
I'm against throwing away these algorithms:
|
These are fair points. You convinced me that the GraphsOptim.jl project is worth pursuing :) |
Responding to the question of what could be included in a GraphsOptim package: So I think it would make a lot of sense for a GraphsOptim package to include stuff like: I had sort of planned on wrapping a lot of this stuff together in a package over the next couple years. So if there is interest in adding any of the stuff on this list, I would be happy to take on a significant roll in helping to implement it. This is particularly true of Network Simplex which I am working on right now as I am using it for a graph coloring algorithm I am working on. It also has the added bonus of being useful for a pretty large domain of problems. Network Simplex is mostly just a version of Simplex specifically optimized for graphs. |
Thanks for your input!
For me, the purpose of GraphsOptim.jl would be to gather algorithms with heavy dependencies, typically those relying on LPs.
As for lightweight algorithms (eg Edmonds Karp & Co), I would rather put them in the main Graphs.jl package since for the most part they only requires the abstract interface we put forward. After all, the main package already includes custom algorithms for several other problems.
What saddens me with the current state of GraphsFlows.jl and GraphsMatching.jl is that they contain a mixture of lightweight routines and LP-based formulations, and I see no reason to 1) keep the former away from the main package 2) separate the latter between flows, matchings and possibly other related stuff.
|
I also think we should bring the standard flow algorithms to Graphs.jl. For the moment, we could keep the ones that use LP solvers on GraphOptim, and bring them to Graphs.jl when we have a pure Julia implementation. Makes me remember I also started implementing a network simplex a while ago, but let it aside as I was caught on some other things, I should try to come back at it. |
It definitely makes sense to me to make dependency free versions off the algorithms that can live in Graphs.jl, which is also definitely something I'd be interested in helping with. And I agree that it makes sense to have solvers for NP-Hard problems live in a different package since you'd probably want to have access to LPs for solving sub-problems anyway. |
OK, so that sounds like a roadmap! Should we move GraphsOptim.jl from my profile into the JuliaGraphs organization so that everyone can help make it ready? |
Bumping this because of the issue above: should we move the repo inside the organization so that people can start contributing? |
As discussed on slack, it is annoying to have
GraphFlows.jl
andGraphsMatching.jl
as separate packages. We should see what we can bring back toGraph.jl
and maybe create a package with the more complex problems that need JuMP as a dependency.The text was updated successfully, but these errors were encountered: