I am trying to evaluate the performance of multi-objective genetic algorithm using NSGA III. I am trying to use The Instrumenter I wrote the following code:
Instrumenter instrumenter=new Instrumenter()
.withProblem("Optimization_Problem")
.withFrequency(100)
.attachAll();
NondominatedPopulation result = new Executor()
.withProblem("Optimization_Problem")
.withAlgorithm("NSGAIII")
.withMaxEvaluations(50000)
.withInstrumenter(instrumenter)
.run();
Accumulator accumulator=instrumenter.getLastAccumulator();
for(int i=0;i<accumulator.size("NFE"); i++){
System.out.println(accumulator.get("NFE",i)+"/t"+accumulator.get(????))
}
But I am little confused on how to continue I think to evaluate the convergence speed of each objective function " i.e. get the mean of each objective function at each generation" but I am a little confused if the instrumenter Can be used to do this what you suggest guys?
Your help is highly appreciated
View and moderate all "bugs Discussion" comments posted by this user
Mark all as spam, and block user from posting to "Bugs"
The instrumenter is useful for collecting performance metrics. There are a bunch built in, such as generational distance, hypervolume, etc. You can also define your own custom collector, such as:
Then attach it with your instrumenter:
new Instrumenter().attach(new CustomCollector(null))
.Since you are using NSGA-III, I would encourage you to use the latest code at https://github.com/MOEAFramework/MOEAFramework. We have made a number of enhancements, including better default values for NSGA-III's parameters.