# Ongoing research projects

Are you doing a research internship or taking a course on research projects? Take a look at my research interests and projects available for students. Please feel free to get in touch if you want to contribute or participate in any of these!

## Evolutionary Computation in Julia

**Evolutionary computation** encompasses a bunch of optimisation methods that use evolution as a metaphor for their heuristic search and selection. Population, selection, crossover and mutation are common operators found in these kind of algorithms, which make them perform quite well for discrete, continuous, combinatorial and multi-objective optimisation.

I’m currently implementing a module/toolbox in Julia for evolutionary computation, both for teaching and analysis. Here’s a couple of interesting things we can do:

### Implementation of solvers

Contributing with new methods and algorithms is always fun.

- A good candidate would have some familiarity with a GNU/Linux OS and some programming experience
- Modest background of data structures is desired
- Knowledge about evolutionary computation is a bonus

### Integration with other frameworks

The IOHanalyzer is an analyser for empirical performance of iterative optimisation heuristics (such as evolutionary computation!). They use a data format similar to other optimisation suites, so standardising and presenting the framework results in this format sounds like a good project by itself.

- A good candidate would have some familiarity with a GNU/Linux OS and some programming experience
- A solid background on software design is desired
- Knowledge about evolutionary computation is a bonus

## Surrogate modelling and Evolutionary Computation

Problems in the real world are usually very complex, and evaluating the performance of an objective function may be quite expensive. For that, we use **surrogate models**: mathematical models that can approximate the actual objective function, so that we can use them in our solvers to speed up the process. I’m interested in both the surrogate construction, as well as the solvers themselves (as mentioned above)

- A good candidate will have some programming experience
- A strong background in statistics is recommended
- Knowledge about evolutionary computation is a bonus

## Evolutionary computation for Machine Learning optimisation

Feature selection and extraction, as well as hyper-parameter optimisation can be tackled with evolutionary computation. That’s precisely what we want.

- A good candidate will have some programming experience
- Knowledge about evolutionary computation and Machine Learning is required
- A solid background in linear algebra and statistics is desired

## Some other old projects

These projects are somewhat outdated, but are interesting things to consider. If you think you can handle them with *less* guidance, let me know.

### Python Hyper-heuristic Framework

Despite having many works on hyper-heuristics, there is no common or integrated library at the research group at Tec. I’m interested in generating a professional module that we can host on GitHub and use as needed, along with proper documentation and unit testing.

- As a research assistant, you will carry out most of the implementation and maintenance
- A good candidate will have plenty of experience with Python. Scientific Python (
`numpy`

,`scipy`

,`sympy`

), and some knowledge of version control and package management is a bonus.

### Combinatorial challenges of Hyper-heuristics

One of the common topics in my previous research group is that of hyper-heuristics, which are general-purpose solvers that operate on heuristic space instead of dealing directly with solutions. I am interested in theoretical and experimental analyses of the overhead of hyper-heuristics compared to ensembles, portfolios and heuristics alone: e.g. complexity trade-offs or identification of situations in which a combinatorial problem is better suited for a hyper-heuristic or a metaheuristic.

- As research assistant, you will carry out theoretical analysis using mostly mathematical tools but some programming experience is desired as it may be necessary to conduct empirical trials.
- A good candidate would have a strong background in discrete mathematics, linear algebra and complexity analysis. Practical experience with statistics is a bonus.