⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 evolutionrunnable.java

📁 JGAP是一种遗传算法和遗传规划的组成部分提供了一个Java框架。它提供了基本的遗传机制
💻 JAVA
字号:
/*
 * This file is part of JGAP.
 *
 * JGAP offers a dual license model containing the LGPL as well as the MPL.
 *
 * For licensing information please see the file license.txt included with JGAP
 * or have a look at the top of class org.jgap.Chromosome which representatively
 * includes the JGAP license policy applicable for any file delivered with JGAP.
 */
package examples.monalisa.gui;

import java.awt.*;
import java.awt.image.*;
import org.jfree.chart.*;
import org.jfree.data.xy.*;
import org.jgap.*;
import examples.monalisa.core.*;

/**
 * Class in charge of actually running the evolution process.
 *
 * @author Yann N. Dauphin
 * @since 3.4
 */
public class EvolutionRunnable
    implements Runnable {
  /** String containing the CVS revision. Read out via reflection!*/
  private final static String CVS_REVISION = "$Revision: 1.2 $";

  private GAConfiguration m_conf;

  private GeneticDrawingView m_view;

  private Genotype m_genotype;

  public EvolutionRunnable(GeneticDrawingView a_view, GAConfiguration a_conf) {
    super();
    m_conf = a_conf;
    m_view = a_view;
    m_genotype = null;
  }

  public EvolutionRunnable(GeneticDrawingView a_view, GAConfiguration a_conf,
                           Genotype a_genotype) {
    super();
    m_conf = a_conf;
    m_view = a_view;
    m_genotype = a_genotype;
  }

  public void run() {
    try {
      JFreeChart chart = m_view.getChart();
      XYSeriesCollection sc = (XYSeriesCollection) chart.getXYPlot().getDataset();
      XYSeries series = sc.getSeries(0);
      series.clear();
      if (m_genotype == null) {
        int populationSize = m_conf.getPopulationSize();
        Population pop = new Population(m_conf, populationSize);
        for (int i = 0; i < populationSize; i++) {
          pop.addChromosome(GAInitialChromosomeFactory.create(m_conf));
        }
        m_genotype = new Genotype(m_conf, pop);
      }
      //
      while (m_view.isEvolutionActivated()) {
        m_genotype.evolve();
        if (m_conf.getGenerationNr() % 25 == 0) {
          IChromosome best = m_genotype.getFittestChromosome();
          series.add(m_conf.getGenerationNr(), best.getFitnessValue());
          BufferedImage image =
              m_conf.getPhenotypeExpresser().express(best);
          Graphics g = m_view.getFittestDrawingView().getMainPanel().
              getGraphics();
          g.drawImage(image, 0, 0, m_view.getFittestDrawingView());
        }
      }
    } catch (InvalidConfigurationException e) {
      e.printStackTrace();
      System.exit( -1);
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -