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

📄 permutingconfigurationtest.java

📁 JGAP(发音"jay-gap")是一款用Java编写的遗传算法包。提供了基本的遗传算法.你可以使用它来解决一些适用于遗传算法解决的问题.
💻 JAVA
字号:
package org.jgap.audit;

import java.util.*;
import org.jgap.*;
import org.jgap.event.*;
import org.jgap.impl.*;
import junit.framework.*;

/**
 * Tests the PermutingConfiguration class
 *
 * @author Klaus Meffert
 * @since 2.2
 */
public class PermutingConfigurationTest
    extends JGAPTestCase {
  /** String containing the CVS revision. Read out via reflection!*/
  private static final String CVS_REVISION = "$Revision: 1.5 $";

  public void setUp() {
    super.setUp();
    Configuration.reset();
  }

  public static Test suite() {
    TestSuite suite = new TestSuite(PermutingConfigurationTest.class);
    return suite;
  }

  /**
   * Test construction with empty fitness function, population size 0, random
   * generator initial, sample chromosome initial of reference configuration.
   * No error should occur.
   * @throws Exception
   *
   * @author Klaus Meffert
   * @since 2.2
   */
  public void testConstruct_0()
      throws Exception {
    Configuration conf1 = new DefaultConfiguration();
    new PermutingConfiguration(conf1);
  }

  /**
   * @throws Exception
   *
   * @author Klaus Meffert
   * @since 2.2
   */
  public void testConstruct_1()
      throws Exception {
    Configuration conf1 = new DefaultConfiguration();
    conf1.setFitnessFunction(new StaticFitnessFunction(0.5d));
    PermutingConfiguration conf = new PermutingConfiguration(conf1);
    assertEquals(StaticFitnessFunction.class,
                 conf.getFitnessFunction().getClass());
    assertEquals(EventManager.class, conf.getEventManager().getClass());
    assertEquals(DefaultFitnessEvaluator.class,
                 conf.getFitnessEvaluator().getClass());
    assertEquals(0, conf.getNaturalSelectorsSize(true));
    assertEquals(StockRandomGenerator.class,
                 conf.getRandomGenerator().getClass());
    assertEquals(ChromosomePool.class, conf.getChromosomePool().getClass());
    assertEquals(0, conf.getGeneticOperators().size());
    assertNull(conf.getBulkFitnessFunction());
  }

  /**
   * Tests if the correct number of permutations appears and that they are
   * unique.
   * @throws Exception
   *
   * @author Klaus Meffert
   * @since 2.2
   */
  public void testPermute_0()
      throws Exception {
    Map cache = new Hashtable();
    Configuration conf1 = new DefaultConfiguration();
    PermutingConfiguration conf = new PermutingConfiguration(conf1);
    // 2 possible combinations (because only 1 RandomGenerator a time possible)
    conf.addRandomGeneratorSlot(new StockRandomGenerator());
    conf.addRandomGeneratorSlot(new GaussianRandomGenerator());
    // 3 possible combinations (multiple NaturalSelector's possible)
    conf.addNaturalSelectorSlot(new BestChromosomesSelector(conf));
    conf.addNaturalSelectorSlot(new WeightedRouletteSelector(conf));
    // 3 possible combinations (multiple GeneticOperator's possible)
    conf.addGeneticOperatorSlot(new MutationOperator(conf));
    conf.addGeneticOperatorSlot(new CrossoverOperator(conf));
    // 1 possible combinations
    conf.addFitnessFunctionSlot(new StaticFitnessFunction(0.5d));
    assertTrue(conf.hasNext());
    Configuration c;
    for (int i = 0; i < 18; i++) { // 18 = 2 * 3 * 3 * 1
      c = conf.next();
      assertNotNull(c);
      // add to cache and check that object is unique among cached ones
      int hash = c.getRandomGenerator().hashCode()
          + c.getFitnessFunction().hashCode();
      for (int j = 0; j < c.getNaturalSelectorsSize(true); j++) {
        hash += c.getNaturalSelector(true, j).hashCode();
      }
      for (int j = 0; j < c.getGeneticOperators().size(); j++) {
        hash += c.getGeneticOperators().get(j).hashCode();
      }
      Integer hashI = new Integer(hash);
      assertFalse(cache.containsKey(hashI));
      cache.put(hashI, hashI);
    }
    assertFalse(conf.hasNext());
  }

  /**
   * Permutation without chromosome pool
   * @throws Exception
   *
   * @author Klaus Meffert
   * @since 2.6
   */
  public void testPermute_1()
      throws Exception {
    Configuration conf1 = new DefaultConfiguration();
    conf1.setChromosomePool(null);
    conf1.setFitnessFunction(new StaticFitnessFunction(0.5d));
    PermutingConfiguration conf = new PermutingConfiguration(conf1);
    assertFalse(conf.hasNext());
    conf.addFitnessFunctionSlot(new StaticFitnessFunction(0.5d));
    conf.addRandomGeneratorSlot(new StockRandomGenerator());
    conf.addNaturalSelectorSlot(new BestChromosomesSelector(conf));
    conf.addGeneticOperatorSlot(new MutationOperator(conf));
    assertTrue(conf.hasNext());
    Configuration c = conf.next();
    assertNull(c.getChromosomePool());
  }

  /**
   * Ensures that not supported methods throw an exception
   * @throws Exception
   *
   * @author Klaus Meffert
   * @since 2.2
   */
  public void testNotSupported_1()
      throws Exception {
    Configuration conf1 = new DefaultConfiguration();
    conf1.setFitnessFunction(new StaticFitnessFunction(0.5d));
    PermutingConfiguration conf = new PermutingConfiguration(conf1);
    try {
      conf.addNaturalSelector(null, true);
      fail();
    } catch (UnsupportedOperationException uex) {
      ;//this is OK
    }
    try {
      conf.addGeneticOperator(null);
      fail();
    } catch (UnsupportedOperationException uex) {
      ;//this is OK
    }
  }
}

⌨️ 快捷键说明

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