Gilles Bareilles

I'm quite fond of the Julia programming language, here are some of my projects.

## RandomizedProgressiveHedging.jl

RandomizedProgressiveHedging.jl is a julia package for solving multistage stochastic problems by randomized versions of the progressive hedging algorithm.

## Blackbox nonsmooth optimization

NonSmoothSolvers.jl provides julia implementation of algorithms for blackbox nonsmooth optimization: gradient sampling, nonsmooth BFGS, subgradient.

The companion NonSmoothProblems.jl implements some classical problems, and notably:

• the maximum of smooth functions: $\min_x \max(f_1, \cdots, f_m)$,

• the maximum eigenvalue problem $\min_x \lambda_{\max} (A(x))$, where $A(x)$ is a symmetric real matrix that depends smoothly on $x$.

## Optimization Plots

PlotsOptim.jl provides convenience helpers to build PGF/Tikz plots from julia. Tailored for suboptimality type curves, or 2d plots of iterates.

## Side projects

• ConjugateGradient.jl: pure julia implementation of the Conjugate Gradient algorithm, with detection of quasi-negative curvature directions.

• EigenDerivatives.jl: implementation of first and second-order derivatives of eigenvalues of parametrized matrices, handling points where some eigenvalues coalesce. Works for any representation of reals (e.g. julia's Float64, BigFloat types).

• ConvexHullProjection.jl: a Newton acceleration on manifolds identified by proximal-gradient methods spin-off: a globally and quadratically convergent algorithm for solving $\min_{x\in\mathcal S} f(x)$, where $f$ is smooth and $\mathcal S$ is a structured subset of $\mathbb R^n$. Typically, the set of interest is either the simplex or the spectraplex (the simplex of symmetric matrices)

$\mathcal S = \{ x \in \mathbb R^n : x_i \ge 0, \sum_{i=1}^n x_i = 1\},$ $\mathcal S = \{ x \in \mathbb S_m : \lambda_{\min}(x) \ge 0, \sum_{i=1}^n \lambda_i(x) = 1\}.$

## Old projects

• SDCO.jl: implementation of a self-dual conic interior point supporting real and complex variables.