Potential Projects for Third-Year and MSc Students

Xin Yao, Office: Rm 211. Phone: x43747. Email: x.yao@cs.bham.ac.uk


My major research interests include evolutionary algorithms, co-evolution, evolvable hardware, evolutionary artificial neural networks, evolutionary learning, evolutionary games, neural network ensembles, analysis of evolutionary algorithms, global optimisation, and data mining.


This link leads you to my presentation on 28 April 2010, summarising my research areas and three selected project areas. Most of the following are also possible as projects.

The following is a partial list of potential projects for third-year and MSc students. I am happy to supervise other projects proposed by our industrial collaborators. (Although that list was prepared for MSc in NC students, the projects are appropriate for other MSc and third year students.)


I also have another page on my research interests and projects, which is designed more towards research MSc and PhD students. You are welcome to browse it. You might find an interesting project there.


Discovering interesting patterns through interactive evolution

Data mining can be regarded as the process of discovering useful and interesting knowledge from large databases. One typical task in data mining is to discover interesting patterns where "interestingness" is not specified exactly. For example, one might like to discover frauds in an insurance database or buying patterns in an supermarket database. However, we don't really know all the possible frauds and interesting patterns (or else we would search for them). On the other hand, given some patterns or examples, a human expert usually knows whether they are interesting or not (from his point of view of course). This project aims at developing an interactive system that helps a domain expert to discover interesting patterns in a database. The system will show the expert some interesting examples based on the expert's initial (vague) guess and keep refining its internal representation of interestingness according to the expert's feedback. The expert's feedback is just a ranking of examples from high to low interestingness. This is much less demanding for the expert than asking him/her to tell the computer exactly what he/she wants.

Note: A large part of this project involves software development. You must be competent in C/C++/Java under UNIX/Solaris. You will need to learn basics of evolutionary algorithms, to implement an evolutionary algorithm, and to design and develop a good user interface.


Software package for negative correlation learning of neural network ensembles

Designing a complex monolithic system which contains everything can be very difficult. Machine learning systems are no exception. Trying to design a single neural network to solve a complex problem is hard. A better approach is divide-and-conquer, i.e., divide a complex problem into several simpler components, solve them individually and integrate the sub-solutions into the final complete solution. This works fine when you know how to divide a problem into several components. What if you don't? We can use a learning algorithm to learn to decompose a problem into several components automatically and solve them. Negative correlation learning is such an algorithm for designing neural network ensembles where each neural network in the ensemble does slightly different things. The whole ensemble, which consists of many individual neural networks, solves a problem collectively. After all, two heads are better than one. Why not more heads?

Note: The aim of this project is to develop a software package for the negative correlation learning algorithm so that it can be used by non-expert. The emphasis will be on the ease to use and efficiency of the algorithm. A good user interface for easy importing training data and visualising output networks is essential. You must be very competent in C/C++/Java under UNIX/Solaris. You also need to know neural networks.


Artificial speciation and automatic modularisation

The motivation of this project is similar to the previous one, i.e., how to solve a complex problem with less effort. Of course we should break it down and solve it piece by piece. However, we don't really don't how to break a problem down into pieces for most real world problems. That's why they are so difficult. This project investigates various speciation and niching techniques in the field of evolutionary computation and applies these techniques to designing machine learning systems (e.g., neural networks or rule-based systems). The idea is to evolve a population of species each of which is specialised toward solving certain parts of a complex problem. Collectively, the whole population solve the entire problem. The main task of this project is to implement a system which evolves a group of neural networks using evolutionary algorithms with speciation and niching.

Note:Programming in C/C++/Java under UNIX/Solaris is required. You will need to learn various artificial speciation and niching methods.


Time series prediction by neural network ensembles

This project has a clear emphasis on experimental studies. You will be given one or two time series data sets. Then you are expected to pre-process the data, partition the data into training anf testing parts, and train a neural network ensemble to learn from the data. The training algorithm will be negative correlation learning.

Note:Programming in C/C++/Java under UNIX/Solaris is essential. Some mathematical and statistical background would be useful although not essential.


Hybrid evolutionary algorithms

Evolutionary algorithms are good at global sampling but not fine-tuned local search in general. This project investigates various ways to combining an evolutionary algorithm (e.g., a genetic algorithm) with a local search algorithm (e.g., Brent's algorithm). The problems used will be a set of benchmark functions.

Note:Programming in C/C++/Java under UNIX/Solaris is essential. A mathematically trained brain would help although I don't use much mathematics. Your implementation should be useable by non-experts (i.e., people do not know evolutionary algorithms).


PC-based software package for evolutionary optimisation

This project requires the implementation of a number of evolutionary algorithms under Windows. User interface is a key part of this project. The software package will contain a number of programmed benchmark functions. It should also allow a user to enter his/her own function to be optimised.

Note:Programming in Java, Visual Basic or Visual C/C++ under Windows is essential. The package is to be used by non-experts. Potential extension by adding an interface to Excel should be considered. You need to know evolutionary algorithms.


An Evolutionary Approach to Cutting Stock Problems (CSPs)

The aim of CSP is to cut an object made of material that can be a reel of wire, paper, or a piece of wood, etc., to satisfy customers' demands. The material is referred to as the stock of ``(large) objects'' and the list of demands is so-called ``(small) items''. If there is more than one stock length to be cut to fulfill the requests, the problem is called a multiple stock length CSP. The objective is to minimise the wastage of cutting.

Automatic decomposition of complex problems

Complex problems are often solved using divide-and-conquer. Decomposition of a complex problem into subproblems require substantial domain knowledge, which is often very costly to obtain. An automatic approach, based on fitness sharing, negative correlation, etc., will be investigated. Pattern recognition problems will be used as test problems in this study.

Co-evolutionary Problem Solving

An autonomous robot can be very difficult to design if it is to survive in an unknown environment. Co-evolution can be used to learn by interacting with environments and to learn increasingly difficult tasks in increasingly complex environments. This work investigates co-evolutionary learning and incremental evolutionary learning.

Fault-tolerance through Speciation

Speciation can encourage the evolution of different species, which would have different fault patterns and distributions. Combining different species would lead to a robust fault-tolerance system. The work will be done in the context of evolvable hardware.

Generating jokes through interactive evolution

Some jokes have styles (patterns). Different people find different jokes to be more interesting than others. The idea of this project is to use interactive evolution to generate short jokes. The project may touch on case-based reasoning or analogical reasoning. But the emphasis is on interactive evolution.


Professor Xin Yao
School of Computer Science
The University of Birmingham
Edgbaston, Birmingham B15 2TT
U.K.
Phone: +44 121 414 3747
Fax: +44 121 414 4281
Email: x.yao@cs.bham.ac.uk