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

Will JuMP team develop interface for CP optimizer (CPLEX)? #322

Closed
FuliXiong opened this issue Oct 3, 2020 · 6 comments
Closed

Will JuMP team develop interface for CP optimizer (CPLEX)? #322

FuliXiong opened this issue Oct 3, 2020 · 6 comments

Comments

@FuliXiong
Copy link

FuliXiong commented Oct 3, 2020

Hello, I am a teacher from China. Now I focus on large scale scheduling problems. For me, JuMP is very useful tool to build mathematical model for the scheduling problem. Thank you very much for your great job. However, it is often use hybrid methods to solve scheduling problem, e.g. hybrid Mathematical programming and Constraints programming. Now, we can use JuMP to call CPLEX solver for mathematical programming, but it seems lack of interface for calling CP optimizer (CPLEX), which is a very important tool for solving scheduling problems. Thus, Will you JuMP team develop interface for CP optimizer?

@odow
Copy link
Member

odow commented Oct 3, 2020

Will you JuMP team develop interface for CP optimizer?

I had a look into this. And I think the answer is no, for three reasons.

  1. There doesn't appear to be a C API, only a C++. This makes the work of interfacing much more difficult.
  2. JuMP still doesn't have good support for constraint programming, so it is a little chicken-and-egg situation.
  3. CPLEX.jl is developed by the community, and is not officially supported by IBM. I'm not aware of any members of the core JuMP team who are interested in developing this, so it would need to be done by a highly motivated member of the community.

@FuliXiong
Copy link
Author

FuliXiong commented Oct 3, 2020

@odow Thank you for your prompt reply

@hdavid16
Copy link

hdavid16 commented Oct 4, 2020

There seems to be some work in CP for JuMP: https://github.com/dourouc05/JuCP.jl.

@dourouc05, any insights into this topic?

@odow
Copy link
Member

odow commented Oct 4, 2020

There is also https://github.com/dourouc05/CPLEXCP.jl, which looks like it uses JavaCall to wrap the Java API. I would encourage anyone who comes across this issue and is interested in JuMP/CP to collaborate with @dourouc05 on the progress he has already made.

@dourouc05
Copy link
Collaborator

@FuliXiong Nice to see some interest for CP in Julia :)!

Indeed, there is a WIP wrapper for CPLEX CP Optimizer, as @odow mentioned. All the Java API should be available, but the code is not finalised (everything is hand-made, so there are inconsistencies). Java seemed to be the best option to have something available out-of-the-box for users, as there is no shared library for CP Optimizer (hence Cxx.jl doesn't work); CxxWrap.jl would require the user to build some C++ library, which I thought to be cumbersome. A C API would really simplify development…

JuCP is the modelling part, with ConstraintProgrammingExtensions.jl as the necessary glue between them (an extension to MOI).

Every part would need some help, as highlighted in jump-dev/JuMP.jl#2227. The nicer syntax probably requires JuMP and MOI to implement the new nonlinear support. The main road blocker right now is the scarcity of time I can devote to the project… Any help on that side would be welcome :)!

@FuliXiong, as a user, I would be interested in having your opinion about the planned syntax in JuCP (the comments like Nice syntax in https://github.com/dourouc05/JuCP.jl/blob/master/src/sets.jl), but also in realistic examples of what you would like the model to look like through JuMP/JuCP. Currently, I have a hard time to think exactly how to implement intervals and sequences of intervals.

@odow
Copy link
Member

odow commented Oct 4, 2020

Thanks all for the discussion. I'm going to close this as won't-fix on the CPLEX.jl side.

@odow odow closed this as completed Oct 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

4 participants