View Javadoc
1   package net.bmahe.genetics4j.gp.utils;
2   
3   import java.util.List;
4   import java.util.Objects;
5   
6   import net.bmahe.genetics4j.core.chromosomes.TreeChromosome;
7   import net.bmahe.genetics4j.core.chromosomes.TreeNode;
8   import net.bmahe.genetics4j.gp.Operation;
9   
10  public class ProgramUtils {
11  
12  	private ProgramUtils() {
13  	}
14  
15  	public static Object execute(final TreeChromosome<Operation<?>> treeChromosome, final Object[] input) {
16  		Objects.requireNonNull(treeChromosome);
17  
18  		final TreeNode<Operation<?>> root = treeChromosome.getRoot();
19  
20  		return execute(root, input);
21  	}
22  
23  	public static Object execute(final TreeNode<Operation<?>> node, final Object[] input) {
24  		Objects.requireNonNull(node);
25  
26  		final Operation operation = node.getData();
27  		final List<TreeNode<Operation<?>>> children = node.getChildren();
28  
29  		final Object[] parameters = children != null ? children.stream().map(child -> execute(child, input)).toArray()
30  				: new Object[] {};
31  
32  		return operation.apply(input, parameters);
33  	}
34  
35  }