In the world of programming languages, those that have good runtime performance (like C or Fortran) rarely have nice dynamic features, whereas languages that offer a better programmer productivity (like MATLAB or Python) lack performance. Julia is a newcomer in the field of scientific and technical computations that has a productivity-oriented syntax, but closely matches the performance of lower-level languages like C.
Julia also has a strong community for mathematical optimization, named JuliaOpt. It has developed a series of packages to propose a state-of-the-art environment for mathematical programming, mainly several interfaces to existing solvers MathProgBase.jl, and two modelling layers JuMP.jl for general cases, Convex.jl for convex programming. Another JuliaOpt package, Optim.jl, provides full Julia implementation of optimisation algorithms, which can better handle Julia’s peculiarities than external solvers (in particular, it can exploit properties in linear algebra not exposed through standard libraries, which could improve performance and scaleability).
This environment can be further developed with other contributions, such as:
Any of those three subjects is a candidate for a master’s thesis.
The proposed master’s theses would take the form of open-source contributions to existing Julia packages or to new open-source libraries. Previous knowledge of the language is appreciated, but is not mandatory.
Feel free to propose other kinds of contributions to the Julia environment!
As the electricity price becomes more and more volatile and hard to predict, the industrial sites are more willing to adapt their production to the price variations; the evolution of the electricity market also provides opportunities for the plant to increase the revenue in exchange of some services (such as reducing the total consumption). To this end, the plants must be completely modeled to globally optimize the use of energy: the production can be scheduled, while taking into account the various consumption profiles of the machines and guaranteeing the absence of shortage in the processes.
For example, a paper mill has different consumption profiles depending on the type of paper it is producing. This consumption comes from the various fans and burners that make it up. These various components could be actuated differently while still providing the same quality of paper in order to minimise the total electricity bill. The paper machines can also be turned off when the grid operator asks for it in order to provide flexibility services to the electrical grid operator.
A part of this project is to model the industrial processes of the plants. For optimization purposes, the main tool is to simplify their behaviour and make a linear model. This approach is often sufficient for many processes, but some of them are too complicated. To keep the linearity of the model while having very complex behaviours, an idea is to simulate a representative set of evolutions of the process depending on the way it is controlled (e.g., for the paper machine, increase the use of a fan and simulate the effect on the drying). These scenarios could then be extrapolated by linearizing the process around them.
The goal of this master’s thesis is to simulate a series of modes of operations for industrial processes and to prepare their integration into the global plant model. The student is expected to have or to be willing to acquire good knowledge of power-intensive industrial processes (such as HVAC, electrical ovens, electrolysis) and an interest in optimization.
As the electricity prices become more and more volatile and hard to predict, the industrial sites are more willing to adapt their production to the price variations; the evolution of the electricity market also provides opportunities for the plant to increase the revenue in exchange of some services (such as reducing the total consumption). To this end, the plants must be completely modelled to globally optimise the use of energy: the production can be scheduled, while taking into account the various consumption profiles of the machines and guaranteeing the absence of shortage in the processes.
For example, the paper mill’s production should be scheduled according to the price of electricity, in order to minimise the total electricity bill. The paper machines can also be turned off when the grid operator asks for it in order to provide flexibility services to the electrical grid operator. This scheduling problem is called ‘single-machine preemptive job scheduling with transition costs.’
A part of this project is to schedule jobs efficiently on machines within the context of a global plant model. Technically, the machines are modelled with a mixed-integer program (MIP), but the scheduling part is more commonly performed with constraint programming (CP). The actual difficulty is to mix both models in a single solver.
The goal of this master’s thesis is to develop a state-of-the-art solver for these kinds of problems that can find good solutions in a reasonable amount of time. The solver must work within the framework of mathematical programming to be integrated in the global plant model. Approaches can include formulation comparison and improvement, heuristics to find good initial solutions or improve existing ones, development of valid inequalities.