?? simplemalteadaim.java~
字號:
/*
* MalteadaIM2.java
*
* Created on 06 July 2002, 23:00
*/
package jaga.pj.circuits.control;
import jaga.Queue;
import jaga.Genotype;
import jaga.SampleData;
import jaga.evolve.Evolver;
import jaga.deploy.Deployment;
import jaga.experiment.Experiment;
import jaga.control.StandardInteractionModel;
import jaga.pj.circuits.SimulatorDeployment;
import jaga.pj.circuits.SimulatorLogicElement;
import jaga.pj.circuits.CircuitsLib;
import jaga.pj.circuits.CircuitMapping;
import jaga.pj.circuits.fpgaft.SimulatorFaultyCircuit;
import java.util.Vector;
/**
*
* @author Michael Garvie
* @version
*/
public class SimpleMalteadaIM extends StandardInteractionModel
{
SimulatorFaultyCircuit circuit;
CircuitMapping mapping;
final int faultTypes = 2;
int currFPos = -1;
int faultGens = 0;
Queue lastAdded = new Queue();
Vector lastElements = new Vector();
int viscocity = 100;
/** Creates new MalteadaIM2 */
public SimpleMalteadaIM (Evolver evo,CircuitMapping mapping,SimulatorDeployment dep,Experiment exp)
{
super( evo, dep, exp );
circuit = ( SimulatorFaultyCircuit ) dep.getCircuit();
this.mapping = mapping;
}
public SimpleMalteadaIM (Evolver evo,CircuitMapping mapping,SimulatorDeployment dep,Experiment exp,int visco)
{
this( evo, mapping, dep, exp );
viscocity = visco;
}
public double[] evaluate( Genotype[] inds )
{
Genotype ind = inds[ 0 ];
deployment.program( ind );
if( currFPos >= 0 )
{
circuit.setFault( currFPos, currFPos % faultTypes );
}
SampleData[] input = experiment.generateInput( inputSampleSeparation );
SampleData[] output = deployment.run( input );
double fitness = experiment.getFitness( input, output );
houseWork( ind, fitness );
double[] rv = { fitness };
if( currFPos >= 0 )
{
circuit.setFault( currFPos, jaga.pj.circuits.fpgaft.FTLib.NOFAULT );
}
return rv;
}
public void evolve()
{
if( faultGens == viscocity )
{
if( lastAdded.size() > 0 )
{
currFPos = ( ( Integer ) lastAdded.deq() ).intValue();
faultGens = 0;
}else
{
currFPos = -1;
faultGens = 0;
}
debug("Curr FPos now " + currFPos + " Q is " + lastAdded );
}
faultGens++;
SimulatorLogicElement[][] inelout = mapping.map( fittestIndividual );
Vector els = CircuitsLib.addConnectedGates( inelout[ 1 ] );
Vector elsNrs = new Vector();
for( int el = 0; el < els.size(); el++ )
{
Integer elPos = new Integer( jaga.ESLib.indexOf( els.get( el ), inelout[ 2 ] ) );
elsNrs.add( elPos );
if( !lastElements.contains( elPos ) && !lastAdded.contains( elPos ) )
{
debug("adding to lastAdded: " + elPos );
lastAdded.enq( elPos );
}
}
lastElements = elsNrs;
super.evolve();
}
private void debug( Object o )
{
System.out.println( o );
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -