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

📄 elementparsimonyexperiment.java~

📁 Java遗传算法库
💻 JAVA~
字号:
/*
 * ElementParsimonyExperiment.java
 *
 * Created on 30 April 2002, 17:56
 */

package jaga.pj.circuits.experiment;

import jaga.*;
import jaga.experiment.*;
import jaga.pj.circuits.*;

import java.util.Vector;

/**
 *
 * @author  Michael Garvie
 * @version 
 */
public class ElementParsimonyExperiment implements Experiment {

    protected SimulatorCircuit circuit;
    protected Experiment experiment;
    protected int targetElements = 5;
    
    /** Creates new ElementParsimonyExperiment */
    public ElementParsimonyExperiment( Experiment pexperiment, SimulatorCircuit pcircuit )
    {
        experiment = pexperiment;
        circuit = pcircuit;
    }
    
    public ElementParsimonyExperiment( Experiment pexperiment, SimulatorCircuit pcircuit, int ptarget )
    {
        this( pexperiment, pcircuit );
        targetElements = ptarget;
    }

    /** returns a fitness associated to a given input/output pair for
     * this experiment.  The fitness is a double and is in adjusted
     * fitness format.  From 0 to 1, 1 being perfectly fit.
     * @param in array of inputs
     * @param out array of outputs
     */
    public double getFitness(SampleData[] in,SampleData[] out) {
        double realFitness = experiment.getFitness( in, out );
        Vector added = CircuitsLib.addConnectedGates( circuit.getElements(), experiment.getNumOfOutputs() );
        int connectedGates = added.size();
        // minimize:
        double rv = targetElements * realFitness / connectedGates; // could be better if normalized to pop avg
        //maximize:
        //double rv = realFitness * ( connectedGates + 0.0 )/ targetElements;
        return Math.min( rv, 1d );        
    }

    /** generates an array of inputs suitable for this experiment
     * using default input sample separation.
     */
    public SampleData[] generateInput() {
        return experiment.generateInput();
    }
    /** generates an array of inputs suitable for this experiment.
     * @param inputSampleSeparation relative frequency of input to output samples.  If this is n, then n outputs will be sampled for every change in inputs.
     */
    public SampleData[] generateInput(int inputSampleSeparation) {
        return experiment.generateInput( inputSampleSeparation );
    }
    public int getNumOfInputs() {
        return experiment.getNumOfInputs();
    }
    public int getNumOfOutputs() {
        return experiment.getNumOfOutputs();
    }
    
    public String toString()
    {
        String rv = "ElementParsimonyExperiment with:";
        rv += "\n  Real Experiment: " + experiment;
        rv += "\n  Target Number of Elements: " + targetElements;
        
        return rv;
    }
}

⌨️ 快捷键说明

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