📄 elementparsimonyexperiment.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 + -