EARS
文件大小: unknow
源码售价: 5 个金币 积分规则     积分充值
资源说明:Evolutionary Algorithms Rating System
NEW VERSION of the sistem is now on 
https://github.com/UM-LPM/EARS


Evolutionary Algorithms Rating System
=====================================

EARS in action http://earatingsystem.appspot.com

What is included:
* some banchmarks with problem functions (Sphere, ...).
* some already implemented test Alorithms
* some simple test experiments


How to use it!

* All projects are Eclipse java projects.
* Download it use git in eclipse.
* In same workspace create new java project.
* Add Properties -> Java Build Path -> Projects -> EARS
* Include your algorithm in the project.
* Modify algorithm to work with EARS

Example:
```java
public class RandomWalkAlgorithm extends Algorithm { //needs to me extended 
	private Individual i; //EARS Individual includes solution vector and its fitness value
  private boolean debug = true;
  
	public RandomWalkAlgorithm() { 
	  super();
	  setDebug(debug);  //EARS prints some debug info
		ai = new AlgorithmInfo("","","RWSi+","Random Walk+");  //EARS add algorithm name
		au =  new Author("robi", "N/A"); //EARS author info
	}

	@Override  
	public Individual run(Task taskProblem) throws StopCriteriaException{ //EARS main evaluation loop 
		Individual ii;

		i = taskProblem.getRandomIndividual(); //EARS Helper for creating random solution, it takes one evaluation (eval++)
	  //user can use its own representation for example double[] and in fase of evaluation calls taskProblem.eval that creates individual
		System.out.println(taskProblem.getNumberOfEvaluations()+" "+i); //prints number of evaluations

		while (!taskProblem.isStopCriteria()) {   //EARS user needs to take care about number of evaluations
			ii = taskProblem.getRandomIndividual();
			if (taskProblem.isFirstBetter(ii, i)) { //EARS primary function it takes care if we are searching minimum or maximum, if solution is valit etc.
			  i = ii;
				if (debug) System.out.println(taskProblem.getNumberOfEvaluations()+" "+i);
			}
		}
		return i;

	}
	
  @Override
  public void resetDefaultsBeforNewRun() {
    i=null;
  }

}
```
Run it on single task:

- Run your algorithm.

Example:
```java
public class Main4Run {
	public static void main(String[] args) {
		Task t = new Task(EnumStopCriteria.EVALUATIONS, 3000, 0.0001, new ProblemSphere(5)); //run problem Sphere Dimension 5, 3000 evaluations
		RandomWalkAlgorithm test = new RandomWalkAlgorithm();
		try {
			System.out.println(test.run(t)); //prints best result afrer 3000 runs
		} catch (StopCriteriaException e) {
			e.printStackTrace();
		}
	}
}
```
Compare:

* For rating you need more than one algorithm (player) and more than one task (banchmark)).

Example:
```java
public class MainBenchMarkTest {
    public static void main(String[] args) {
        Util.rnd.setSeed(System.currentTimeMillis());
        RatingBenchmark.debugPrint = true; //prints one on one results
        ArrayList players = new ArrayList();
        players.add(new ES1p1sAlgorithm()); //EARS exampels
        players.add(new TLBOAlgorithm()); //EARS examples
        players.add(new RandomWalkAlgorithm());
        ResultArena ra = new ResultArena(100); 
        RatingRPUOed2 suopm = new RatingRPUOed2(); //Create banchmark
        for (Algorithm al:players) {
          ra.addPlayer(al.getID(), 1500, 350, 0.06,0,0,0); //init rating 1500
          suopm.registerAlgorithm(al);
        }
        BankOfResults ba = new BankOfResults();
	suopm.run(ra, ba, 50); //repeat competition 50X
        ArrayList list = new ArrayList();
        list.addAll(ra.recalcRangs()); //new rangs
        for (Player p: list) System.out.println(p); //print rangs
    }
}
```

Tips
____

* If you have special representation create your own individual by extending EARS Individual.
"class MyIndividual extends Individual"
* Search for main methods in EARS source code for more examples.
* All problem data (Dimension, Bounds, etc...) can be obtaint by Task in method public Individual run(Task taskProblem).
* Check taskProblem.isStopCriteria() after every evaluation.


本源码包内暂不包含可直接显示的源代码文件,请下载源码包。