StructJuMP / StructJuMP.jl

A block-structured optimization framework for JuMP
Other
54 stars 19 forks source link

Solvers setup #78

Closed optimizationoptimist closed 4 years ago

optimizationoptimist commented 4 years ago

I was looking for installation instructions for this package and the associated solvers. I installed StructJuMP by:

I have some questions on installing the solvers and other required packages:

  1. The documentation suggests that PIPS solver should be installed. The instructions provided here seems to be targeted at Linux users: https://github.com/Argonne-National-Laboratory/PIPS "Install package wget, cmake, mpich2, and boost. You can get them via the following command (xxx stands for the name of the package): In Linux(Ubuntu): apt-get install xxxx"

Can this solver be installed on a laptop with Windows 10 operating system?

  1. Can we use other open-source solvers such as CLP or commercial solvers with StructJuMP instead of PIPS?

  2. Do I need to install StructJuMPSolverInterface? Installing it using instructions provided results in an error: Pkg.clone("https://github.com/StructJuMP/StructJuMPSolverInterface.jl") ERROR: UndefVarError: clone not defined Stacktrace: [1] getproperty(::Module, ::Symbol) at .\Base.jl:26

kibaekkim commented 4 years ago
  1. Not sure if PIPS has been tested on Windows. If you don't use MPI (since you are trying to run on a laptop), you may not need to run PIPS. There are alternatives such as ipopt (https://github.com/JuliaOpt/Ipopt.jl).
  2. Clp is for linear programs, whereas PIPS is for block-angular structured nonlinear programs. If you want to solve non-structured linear programs, please check JuMP.
  3. Please open an issue to the corresponding repo. @michel2323 @cnpetra Is StructJuMPSolverInterface.jl maintained?
michel2323 commented 4 years ago

No, StructJuMPSolverInterface.jl is not maintained. It requires a rewrite to interface through MOI with JuMP. This has never been finalized. Thus, PIPS is not supported anymore. PIPS has AFAIK only been run on Linux and recently also on Mac. Its main purpose compared to Ipopt is distributed parallelism. If you don't need that it's better to stick with Ipopt.

kibaekkim commented 4 years ago

@michel2323 thanks! @optimizationoptimist I hope this answers to your questions.