What is Julia?
Julia is a high-level, high-performance dynamic programming language for technical computing”. It is free (open source) and supports Windows, OSX, and Linux. It has a familiar syntax, works well with external libraries, is fast, and has advanced language features like metaprogramming that enable interesting possibilities for optimization software.
What is JuliaOpt?
JuliaOpt is an organization that brings together packages written in Julia that are related to optimization. All JuliaOpt packages should be high-quality, documented, tested, support the main operating systems, and interact with each other.
- Overview: presentation and workshop from JuliaCon 2015
- Code: github.com/JuliaOpt
- Forum: Discourse
- Old Mailing list: julia-opt
- Case study: Computing in Operations Research using Julia, INFORMS Journal on Computing. [PDF]
Overview of Packages
JuMPConvex.jlMathProgBase.jlCbc.jlClp.jlCPLEX.jlECOS.jlGLPK.jlGurobi.jlIpopt.jlKNITRO.jlMosek.jlNLopt.jlSCS.jlXpress.jl Optim.jlLsqFit.jlCoinOptServices.jlAmplNLWriter.jlJuliaOpt’s packages can be loosely grouped into two sets. The first set are standalone Julia packages:
-
Optim.jl: Implementations in Julia of standard optimization algorithms for unconstrained or box-constrained problems such as BFGS, Nelder-Mead, conjugate gradient, etc. (documentation/code)
-
LsqFit.jl: Least-squares non-linear curve fitting in Julia. (documentation/code)
The second set comprises modeling languages (red), external solver interfaces (purple), and an abstraction layer over the solvers (green), primarily for constrained optimization:
-
JuMP: An algebraic modeling language for linear, quadratic, and nonlinear constrained optimization problems embedded in Julia. Generates models as quick as commercial modeling tools and supports advanced features like solver callbacks. (documentation, code)
-
Convex.jl: An algebraic modeling language for disciplined convex programming embedded in Julia. (documentation, code)
-
MathProgBase - A standardized interface implemented by all solvers that allows code to remain solver-agnostic. Used by JuMP and Convex.jl, but can be called by user code directly if a user doesn’t want to go through a modeling language, but wishes to remain solver-independent. (documentation, code)
Solvers
JuliaOpt provides wrappers for a wide variety of solvers. The following table summarizes the forms supported by the modeling languages and solvers. Note that the capabilities marked in the table represent those of the Julia package, not necessarily the capabilities of the solver itself.
| Linear / Quadratic | Convex | Nonconvex | Integer | License | ||
|---|---|---|---|---|---|---|
| Modeling Tool | Conic | Smooth | ||||
Key:
| ||||||
| JuMP | ✔ | ✔ | ✔ | ✔ | ✔ | Open |
| Convex.jl | ✔ | ✔ | ✔ | Open | ||
| Solver | ||||||
| CDD(.jl) | ✔ | Open | ||||
| Clp(.jl) | ✔ | Open | ||||
| Cbc(.jl) | ✔ | ✔ | Open | |||
| GLPK(.jl) | ✔ | ✔cb | Open | |||
| CSDP(.jl) | ✔ | ✔ | Open | |||
| ECOS(.jl) | ✔ | ✔ | Open | |||
| SCS(.jl) | ✔ | ✔ | Open | |||
| CPLEX(.jl) | ✔ | ✔ | ✔cb | Comm.a | ||
| Gurobi(.jl) | ✔ | ✔ | ✔cb | Comm.a | ||
| FICO Xpress(.jl) | ✔ | ✔ | ✔ | Comm.a | ||
| Mosek(.jl) | ✔ | ✔ | ✔ | ✔ | Comm.a | |
| NLopt(.jl) | ✔ | ✔ | Open | |||
| Ipopt(.jl) | ✔ | ✔ | ✔ | Open | ||
| Bonmin(via AmplNLWriter.jl) | ✔ | ✔ | ✔ | ✔ | Open | |
| Couenne(via AmplNLWriter.jl) | ✔ | ✔ | ✔ | ✔ | Open | |
| Artelys Knitro(.jl) | ✔ | ✔ | ✔ | ✔ | Comm. | |

JuliaOpt是一个集合了多种优化相关软件包的组织,这些软件包使用Julia语言编写,支持线性和非线性优化问题。JuliaOpt提供了一系列高质量的工具,包括JuMP、Convex.jl等建模语言及多种求解器接口。
3189

被折叠的 条评论
为什么被折叠?



