View Javadoc
1   package net.bmahe.genetics4j.gp.program;
2   
3   import java.util.Objects;
4   import java.util.Set;
5   
6   import org.apache.commons.lang3.Validate;
7   import org.immutables.value.Value;
8   import org.immutables.value.Value.Parameter;
9   
10  import net.bmahe.genetics4j.gp.InputSpec;
11  import net.bmahe.genetics4j.gp.OperationFactory;
12  
13  @Value.Immutable
14  public abstract class Program {
15  
16  	@Parameter
17  	public abstract Set<OperationFactory> functions();
18  
19  	@Parameter
20  	public abstract Set<OperationFactory> terminal();
21  
22  	@Parameter
23  	public abstract InputSpec inputSpec();
24  
25  	@Parameter
26  	public abstract int maxDepth();
27  
28  	@Value.Check
29  	protected void check() {
30  		Objects.requireNonNull(functions());
31  		Validate.isTrue(functions().size() > 0);
32  
33  		Objects.requireNonNull(terminal());
34  		Validate.isTrue(terminal().size() > 0);
35  	}
36  }