HeurisTest - A modular testbed for metaheuristics

HeurisTest is a Java Application, designed to test MetaHeuristics on several benchmarks.
Moreover, it allows the user to implement his own heuristics easily and compare their performance to well-known heuristics.
Indeed, the user has only a single java class to write. After that, it can be load into the application which also can compile it.
A poster presenting this application has been made for ITT'09 conference.

This application is available for download. It's a Java executable file (JAR).
In order to download the Jar Application of HeurisTest click Here.

Implemented MetaHeuristics

Some basics MetaHeuristics are already implemented on the platform. Their Source Codes are available to download :

Test your own Heuristics !

It is very easy to implement your own metaheuristics on the platform and compare their results to well-known basics metaheuristics on several benchmarks.
As a matter of fact, it is very modular : a class loader has been implemented and allows the user to add dynamically new heuristics to the platform (File > Load Heuristic).
It is possible to load class files already compiled, or even directly source file which will be automatically compiled and loaded by the platform (if Java JDK is installed on the computer). Note : In order to work properly, the class loader needs the .class or the .java file to be put in this tree : MetaHeuristic/MyHeuristic/

So, just start by creating the source file, that you must named after your class name (and the package name which contains it too) : MyHeuristic.java inheriting from MetaHeuristic.Heuristic already wrote class.
You also have to create a .htp text file containing parameters for your heuristic (that you will be able to modify with the User Interface). This file must have the same name that your Heuristic : MyHeuristic.htp and have to be created in the same folder than the .java file.

There you are! You now only have to write your algorithm in the MyHeuristic.java file.
You can use the following objects as tools :

OSProject.alea : it's a Random class already initialized

Problem.dimension : which contains the problem dimension (i.e. the size of the solution vector).

Problem.initBound[0] : which is the lower bound of the INITIALISATION space of solutions, for all dimensions.

Problem.initBound[1] : which is the upper bound of the INITIALISATION space of solutions, for all dimensions.

Problem.searchSpaceBounds[0] : which is the lower bound of the SEARCH space, for all dimensions.

Problem.searchSpaceBounds[1] : which is the upper bound of the SEARCH space, for all dimensions.

Moreover, the following function :

double calculateFitness(double[] solution);

gets the objective function value for the given solution.Note : The solution vector must have n = Problem.dimension size.

The MyHeuristic class is given in example here. It's well commented so you can understand how it works easily.
You can also be inspired by already implemented Heuristics : NelderMead, StandardPSO, TabuSearch, CUS and EUS which source code is given ahead.
If you have performant algorithms, do not hesitate to submit them to me. After testing them, I could add them to the default platform, and so enhance the heuristics benchmark !