by Ludovico Aug 18 2019
Wannabe applied mathematician
Remix of Julia by Nextjournal

JSOC is ending, but not my involvement with Julia ecosystem

This is my last article for JSOC. What an amazing experience! Below you can find a summary of my project.

Initial proposal

The proposal was about a new package: Surrogates.jl, that would entail:

  • Sampling methods.
  • A wide variety of surrogates (approximating functions).
  • Optimization methods for such surrogates.

The main aim is to approximate expensive processes with functions (surrogates) that are less computational intensive.

Looking back, my proposal was too conservative: I planned on developing:

  • Radial Basis surrogate
  • Neural network and Random forest surrogates
  • Single output Gaussian processes (Kriging)
  • Optimization methods (Not specifying which ones)

If you followed my past posts, you will realize that more or less this was done around mid-July.

I was a bit scared of underachieving, next year for sure I will be braver when applying again for GSOC.

Achievements

At the moment the library has the following methods available:

Sampling techniques

  1. Grid sample
  2. Uniform sample
  3. Sobol sample
  4. LHS sample
  5. Low discrepancy sample
  6. Random sample

Surrogates

  1. Radial Basis
  2. Kriging
  3. Linear
  4. Random forest
  5. SVM
  6. Second order polynomial
  7. Neural network
  8. Lobachesky
  9. Inverse-distance

Optimization methods

  1. SRBF
  2. LCBS
  3. EI
  4. DYCORS

You can find more information about the details in the docs.

Future developments

There is still a lot that I want to do with this library, mainly:

Adding more surrogates, such as: MARS, Polynomial chaos expansion, Regularized tensor-product splines, Wendland compactly supported basis functions, Mixture of experts and many more, as you can see here.

  1. Finish the last optimization method planned, whose PR has been open for too long: SOP optimization method.
  2. Developing a nice interface with the rest of Diffeq package.
  3. Developing multi output surrogates

As you can see there is still a lot to do! I am planning on keeping up the development so if you are interested in contributing just write me on slack at @ludoro.

I am pleased to say that I have already been getting some private messages with suggestions on the package and asking directions on how to contribute, such a nice feeling!

Final words

Surrogates.jl has been registered with this PR and is now becoming an official package! WOW.

It was the initial plan all along but I still cannot believe it.

The work I have been doing has always been fun, I have enjoyed every single bit of it! For sure I need to thank my amazing mentor: Chris Rackauckas, and the super supportive Julia community. Many thanks also to my supportive girlfriend and my friend Claudio.

Ludovico