JuMP.jl
ComponentArrays.jl
Our great sponsors
JuMP.jl | ComponentArrays.jl | |
---|---|---|
3 | 1 | |
2,134 | 276 | |
1.5% | - | |
9.3 | 7.0 | |
about 16 hours ago | 5 days ago | |
Julia | Julia | |
GNU General Public License v3.0 or later | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
JuMP.jl
-
Optimization
JuMP.jl is my personal go-to when solving "big" optimization problems in Julia (maybe it's overkill for your application).
-
Multiple dispatch: Common Lisp vs Julia
A 100+ contributor project
-
Julia macros
Macros are very useful if you want to create Domain Specific Languages (DSLs), see https://github.com/jump-dev/JuMP.jl or if you want to transpile a subset of Julia to another language or say GPU code.
ComponentArrays.jl
-
Recursion absolutely necessary for distributed computing?
But for these to be as fast as say an Array when being used as the object in a differential equation solve or as the underlying construct of a nonlinear optimization, you would need the compiler to elide the struct construction which it doesn't always do. This is why the tools evolved to be around things like https://github.com/jonniedie/ComponentArrays.jl instead, where it's an Array-backed object with a higher level. Such immutable objects are used in these array-like contexts when the problems are small enough (FieldVectors or SLVector LabelledArrays.jl in DiffEq), and such applications work well in Haskell as well, but I haven't seen a compiler do well with say a 1,000 ODE model written in this style. And it's not quite an extreme case if it's what people are doing daily.
What are some alternatives?
Catalyst.jl - Chemical reaction network and systems biology interface for scientific machine learning (SciML). High performance, GPU-parallelized, and O(1) solvers in open source software.
DiffEqBase.jl - The lightweight Base library for shared types and functionality for defining differential equation and scientific machine learning (SciML) problems
ModelingToolkit.jl - An acausal modeling framework for automatically parallelized scientific machine learning (SciML) in Julia. A computer algebra system for integrated symbolics for physics-informed machine learning and automated transformations of differential equations
RayTracer.jl - Differentiable RayTracing in Julia
NumericalAlgorithms.jl - [DEPRECATED] Statistics & Numerical algorithms implemented in Julia.
OMLT - Represent trained machine learning models as Pyomo optimization formulations
ControlSystems.jl - A Control Systems Toolbox for Julia
MuladdMacro.jl - This package contains a macro for converting expressions to use muladd calls and fused-multiply-add (FMA) operations for high-performance in the SciML scientific machine learning ecosystem
DSGE.jl - Solve and estimate Dynamic Stochastic General Equilibrium models (including the New York Fed DSGE)
ConstructiveGeometry.jl - Algorithms and syntax for building CSG objects within Julia.
GeoStats.jl - An extensible framework for geospatial data science and geostatistical modeling fully written in Julia