I am using ECJ 15.
I have designed a GP using ECJ that should create a
program that controls a soccer agent. I am just unsure
that I have designed it correctly.
#Below is one of my functions I have used to create my
move function set:
public class ballfar extends GPNode
{
public String toString() {
return " if(ball != null && ball.m_distance > 0.7)
"
+ "{"
+ " if( ball.m_direction != 0 )"
+ " m_krislet.turn(ball.m_direction); "
+ " else "
+ " m_krislet.dash(10*ball.m_distance); "
+ "justKicked = false;"
+ "}"; }
public void checkConstraints(final EvolutionState
state,
final int tree,
final GPIndividual
typicalIndividual,
final Parameter
individualBase)
{
super.checkConstraints(state,tree,typicalIndividual,individualBase);
if (children.length!=2)
state.output.error("Incorrect number of
children for node " +
toStringForError() + "
at " +
individualBase);
}
public void eval(final EvolutionState state,
final int thread,
final GPData input,
final ADFStack stack,
final GPIndividual individual,
final Problem problem)
{
children[0].eval(state,thread,input,stack,individual,problem);
children[1].eval(state,thread,input,stack,individual,problem);
}
}
I put the code that the main robot class needs in the
toString() method because I didn't know if there was
anyway to print out the code within GPNodes from the
finished tree of the individual. When the best
individual is found I copy the tree from the out.stat
file then play one game of soccer with it. The
performance of the tree is calculated according to how
well the soccer agent's play. This performance is used
to calculate the fitness of the next generation.
Am I doing this in the correct way??
Will the GP be able to learn which functions produce a
program using this method???
__________________________________________________
Do You Yahoo!?
Tired of spam? Yahoo! Mail has the best spam protection around
http://mail.yahoo.com
|