Some Julia Language resources

blog-post

Some Julia Language resources.

Julia_Programming_Language_Logo

Lately I have been preoccupied with computing lower bounds for the completely positive matrix factorization rank of a suitable matrix A. Though, this post is not about the mathematics of this topic rather than the software that I am using, namely Julia Language. To quote from Wikipedia:

Julia is a high-level, high-performance, dynamic programming language. While it is a general-purpose language and can be used to write any application, many of its features are well suited for numerical analysis and computational science.

It is my hope that in this post I can share some of the resources and study material that I found and thereby save the reader time and effort in learning Julia Language. I am by no means an expert in this topic but the links I provide should help the reader find his/her way to experts.

Benchmarks

Some notes:

  • Julia is fast, click here to see how the above graph was obtained.
  • Julia is young in terms of programming languages, as a result:
    • The update to Julia 1.0 in August 2018 depreciated a lot of code, so beware when looking at older material.
    • There are not so many packages as in Python say.
    • It is open source, so no tech support but the community is very active.
  • Environment management is easy: packages light intro and packages documentation

Installing and getting started

Apart form running Julia in the REPL I have managed to run Julia in the following interfaces:

  • jupyter
  • nterac
  • Juno each have their pros and cons so play around and find your favourite.

Learning material

If you like learning by doing there are several curated tutorials available. If you learn by reading, the official documentation may be your thing. This may not be the best place to jump in though.

Useful packages?

Here I give a non-exhaustive list of websites where you can dig for the Julia Packages.

You can also install packages that are not registered.

If you are feeling overwhelmed then don't worry. There is one packages that stands out for our purposes: JuMP. Essentially it addresses the problem of: mathematical formulations of optimization problems are often not the best way to feed the problem into a solver. To quote from the main page:

JuMP is a modeling language and supporting packages for mathematical optimization in Julia.

JuMP makes it easy to formulate and solve linear programming, semidefinite programming, integer programming, convex optimization, constrained nonlinear optimization, and related classes of optimization problems.

I use JuMP to run polynomial optimization problems that have been relaxed to semidefinite problems. It must be noted however that JuMP is not a solver. It simply allows you to model your problem in a way that a solver parse. So which solvers can JuMP work with? There is quite a list here to choose form. I use MOSEK, largely because it was recommended to me by colleagues.

To conclude, I hope that the links and notes provided in this blogpost will serve the reader well in putting the PO in POEMA.

Comments

Popular posts from this blog

Purpose of this blog: To log my mathematical endeavours.