## enjoy

## lightning Speed

Gravity is meant to beat all other modeling languages, period.

###### AC Optimal Power Flow

The Alternating Current Optimal Power Flow (ACOPF) Problem is a fundamental building block in Power Systems Optimization.

The problem admits two nonconvex nonlinear formulations, one known as the polar formulation (featuring trigonometric functions) and one known as the rectangular formulation (quadratically-constrained).

A comprehensive description of the two formulations can be found here.

The first figure below is a performance profile illustrating percentage of instances solved as a function of time.

The figure compares Gravity, JuMP and AMPL's NL interface (used by AMPL and Pyomo) on all standard instances found in the PGLIB benchmark library. The recorded time corresponds to the wall-clock time spent inside Ipopt. The Figure indicates that Gravity outperforms both JuMP and AMPL's NL interface on all instances, with speed improvements up to 300%.

Let us emphasize that, for this problem, half of the computational time is dedicated to function evaluation (including Jacobian and Hessian). While we observe a factor 3 improvement in the total run time, the underlying improvement in function evaluation is a factor of 5.

###### Performance Profile: Solver Run Time

###### Ipopt 3.12 with HSL ma27

The figure below compares model build time between Gravity and JuMP.

Improvements up to one order of magnitude can be seen there.

###### Learning of Ising Models

Learning the structure and the parameters of an Ising model is a typical Machine Learning problem where data input quickly becomes problematic (the learning relies on binary samples input).

Matrices with 92 million non-zero entries appear in the biggest instances. A comprehensive formulation of the problem can be found here and here.

The figure below shows that both JuMP and AMPL's NL interface crash after a certain threshold due to memory issues. Gravity is able to scale up on all tested instances. Since the problem has a natural parallelization procedure, a parallel implementation in Gravity was also tested on this problem. The figure also compares Gravity running with 12 threads, showing gains up to one order of magnitude.

Source code implementation can be downloaded here.