Example usage for org.apache.commons.math3.genetics StoppingCondition isSatisfied

List of usage examples for org.apache.commons.math3.genetics StoppingCondition isSatisfied

Introduction

In this page you can find the example usage for org.apache.commons.math3.genetics StoppingCondition isSatisfied.

Prototype

boolean isSatisfied(Population population);

Source Link

Document

Determine whether or not the given population satisfies the stopping condition.

Usage

From source file:it.units.malelab.sse.MyGeneticAlgorithm.java

@Override
public Population evolve(Population initial, StoppingCondition condition) {
    Population current = initial;/*  www .  j ava2  s.  co m*/
    generationsEvolved = 0;
    while (!condition.isSatisfied(current)) {
        current = nextGeneration(current);
        generationsEvolved++;
        //obtain stats
        List<EnumMap<Evaluator.ResultType, Double>> statsList = new ArrayList<>(current.getPopulationSize());
        Iterator<Chromosome> iterator = current.iterator();
        while (iterator.hasNext()) {
            OperationsChromosome chromosome = (OperationsChromosome) iterator.next();
            EnumMap<Evaluator.ResultType, Double> stats = chromosome.getStats();
            if (stats.containsKey(Evaluator.ResultType.OVERLAPNESS)) {
                statsList.add(stats);
            }
        }
        Collections.sort(statsList, new Comparator<EnumMap<Evaluator.ResultType, Double>>() {
            @Override
            public int compare(EnumMap<Evaluator.ResultType, Double> stats1,
                    EnumMap<Evaluator.ResultType, Double> stats2) {
                return Double.compare(stats1.get(Evaluator.ResultType.OVERLAPNESS),
                        stats2.get(Evaluator.ResultType.OVERLAPNESS));
            }
        });
        EnumMap<Evaluator.ResultType, Double> bestStats = statsList.get(0);
        EnumMap<Evaluator.ResultType, Double> top10Stats = mean(statsList.subList(0, 10));
        EnumMap<Evaluator.ResultType, Double> allStats = mean(statsList);
        System.out.printf("ovp=%5.3f/%5.3f/%5.3f   ", bestStats.get(Evaluator.ResultType.OVERLAPNESS),
                top10Stats.get(Evaluator.ResultType.OVERLAPNESS),
                allStats.get(Evaluator.ResultType.OVERLAPNESS));
        System.out.printf("ops=%4.0f/%4.0f/%4.0f   ", bestStats.get(Evaluator.ResultType.AVG_OPS),
                top10Stats.get(Evaluator.ResultType.AVG_OPS), allStats.get(Evaluator.ResultType.AVG_OPS));
        System.out.printf("mfp=%4.0f/%4.0f/%4.0f   ", bestStats.get(Evaluator.ResultType.AVG_FOOTPRINT),
                top10Stats.get(Evaluator.ResultType.AVG_FOOTPRINT),
                allStats.get(Evaluator.ResultType.AVG_FOOTPRINT));
        System.out.printf("err=%5.3f/%5.3f/%5.3f   ", bestStats.get(Evaluator.ResultType.ERROR_RATIO),
                top10Stats.get(Evaluator.ResultType.ERROR_RATIO),
                allStats.get(Evaluator.ResultType.ERROR_RATIO));
        System.out.printf("size=%3.0f/%3.0f/%3.0f   ", bestStats.get(Evaluator.ResultType.SIZE),
                top10Stats.get(Evaluator.ResultType.SIZE), allStats.get(Evaluator.ResultType.SIZE));
        System.out.printf("evals=%8d\n", evaluator.getEvaluatedCount());
        //System.out.println(evaluator.getErrorCodes());
    }
    return current;
}

From source file:eu.tsp.sal.SensorGeneticAlgorithm.java

/**
 * Evolve the given population. Evolution stops when the stopping condition
 * is satisfied. Updates the {@link #getGenerationsEvolved() generationsEvolved}
 * property with the number of generations evolved before the StoppingCondition
 * is satisfied./*from   ww  w  .j a  v  a  2 s  .  co  m*/
 *
 * @param initial the initial, seed population.
 * @param condition the stopping condition used to stop evolution.
 * @return the population that satisfies the stopping condition.
 */
public Population evolve(final Population initial, final StoppingCondition condition) {
    Population current = initial;
    generationsEvolved = 0;
    while (!condition.isSatisfied(current)) {
        current = nextGeneration(current);
        generationsEvolved++;
    }
    return current;
}

From source file:org.apache.kylin.cube.cuboid.algorithm.generic.CombinedStoppingCondition.java

@Override
public boolean isSatisfied(Population population) {
    for (StoppingCondition condition : conditions) {
        if (condition.isSatisfied(population)) {
            return true;
        }/*from  w w w. ja v  a2s .c  om*/
    }
    return false;
}