Skip to content
icltc edited this page Mar 24, 2013 · 22 revisions

The objective of the Machine Learning Optimiser (MLO) algorithm is to minimise the number of fitness function evaluations when solving a parameter optimisation problem, which is clearly more beneficial than traditional approaches, when the fitness function takes a long time to return. The motivation for this was for optimising parameters when designing reconfigurable computer systems, but it is useful in any parameter optimisation problem with a time consuming fitness function.

Aim

Our project is to create an extensible MLO, using Python. The most recent version of the product includes an intuitive GUI, a very straightforward framework for creating new regressors, classifiers and meta-heuristics, multi-threading and multi-processing to increase performance, crash-recovery, and more.

Collaboration

MLO is Imperial College custom computing group project. The work

Collaborators up to date.

1.Maciej Kurek

2.Tobias Becker

3.Wayne Luk

4.Jack Bracewell

5.Milan Misak

6.Craig Ellis

Development Releases

###v0.x

Maciej developed the initial version of MLO in an incremental fashion. Lack of initially specified architecture resulted in a choatic and unstable code. The version is no longer updated, yet is still available as a branch.

###v1.x

Evolution of the rudimentary v.0.0. The base version was developed by three Imperial College students as part of their third group year project. This tool uses professional software development practices. The most recent version of the MLO. Currently the master branch.

Production Releases

not available..

Being a Developer

Whenever you are assigned to a new milestone, please ask me (Maciej) to create a new branch which is going to be your working space. We are going to merge branches every now and then.. yet as I am the only person involved in all of the work.. please leave it to me :)

What to do..

1.Please submit an issue. For example if your machine breaks, some feature does not work or you find results being completely silly.

2.If you come up and implement a new feature which would benefit others please create a small commit to the master branch. Inform me (Maciej) beforehand.

3.If you start a new project, please request a new branch for yourself.

What NOT to do..

  1. Please do not commit .pyc files and your log directories. Images pyc files etc. are specific to your work/machine and there are no reasons for you to include it in the repository.

  2. Do not commit to master branch without informing me (again.. Maciej) about it:) You are free to do whatever you wish within your branch.

  3. Do not commit changes to the configuration script! It's a template design meant to work for all of the revisions...

Third-Party Library Requirements

MLO uses a number of python libraries.

1.numpy

2.scipy

3.deap

4.scikit-learn

5.infpy

6.matplotlib

7.wxpython

8.GitPython

Currently MLO is not a standalone product, in future releases packaged product might be provided.

###Testing

The current system has been tested using the following machines :

N/A

Adding new Meta-Heursitics

Please refer to trails.py.

After definining a new meta-heuristic it can be used by setting

Adding new Surrogate Models

Surrogate models are defined as classes in surrogatemodel.py. To add new models, define a new class like ProperSurrogateModel.

Regressors

Defined in regressors.py

Classifiers

Defined in classifier.py