1 10 package org.jgap.gp.function; 11 12 import org.jgap.*; 13 import org.jgap.gp.*; 14 import org.apache.commons.lang.builder.CompareToBuilder; 15 import org.apache.commons.lang.builder.EqualsBuilder; 16 import org.jgap.gp.impl.*; 17 18 24 public class ADF 25 extends CommandGene { 26 27 private final static String CVS_REVISION = "$Revision: 1.7 $"; 28 29 private int m_chromosomeNum; 30 31 41 public ADF(final GPConfiguration a_conf, int a_chromosomeNum) 42 throws InvalidConfigurationException { 43 super(a_conf, 0, null); 44 m_chromosomeNum = a_chromosomeNum; 45 } 46 47 53 public int getChromosomeNum() { 54 return m_chromosomeNum; 55 } 56 57 public String toString() { 58 return "ADF(" + m_chromosomeNum + ")"; 59 } 60 61 public int getArity(IGPProgram a_individual) { 62 return a_individual.getChromosome(m_chromosomeNum).getArity(); 63 } 64 65 public int execute_int(ProgramChromosome c, int n, Object [] args) { 66 check(c); 67 int numargs = c.getIndividual().getChromosome(m_chromosomeNum).getArity(); 68 Object [] vals = new Object [numargs]; 69 for (int i = 0; i < numargs; i++) { 70 vals[i] = new Integer (c.execute_int(n, i, args)); 71 } 72 return c.getIndividual().execute_int(m_chromosomeNum, vals); 75 } 76 77 public float execute_float(ProgramChromosome c, int n, Object [] args) { 78 check(c); 79 int numargs = c.getIndividual().getChromosome(m_chromosomeNum).getArity(); 80 Object [] vals = new Object [numargs]; 81 for (int i = 0; i < numargs; i++) { 82 vals[i] = new Float (c.execute_float(n, i, args)); 83 } 84 return c.getIndividual().execute_float(m_chromosomeNum, vals); 85 } 86 87 public double execute_double(ProgramChromosome c, int n, Object [] args) { 88 check(c); 89 int numargs = c.getIndividual().getChromosome(m_chromosomeNum).getArity(); 90 Object [] vals = new Object [numargs]; 91 for (int i = 0; i < numargs; i++) { 92 vals[i] = new Double (c.execute_double(n, i, args)); 93 } 94 return c.getIndividual().execute_double(m_chromosomeNum, vals); 95 } 96 97 public Object execute_object(ProgramChromosome c, int n, Object [] args) { 98 check(c); 99 int numargs = c.getIndividual().getChromosome(m_chromosomeNum).getArity(); 100 Object [] vals = new Object [numargs]; 101 for (int i = 0; i < numargs; i++) { 102 vals[i] = c.execute(n, i, args); 103 } 104 return c.getIndividual().execute_object(m_chromosomeNum, vals); 105 } 106 107 public Class getChildType(IGPProgram a_ind, int i) { 108 return a_ind.getChromosome(m_chromosomeNum).getArgTypes()[i]; 109 } 110 111 public boolean isValid(ProgramChromosome a_chrom) { 112 StackTraceElement [] stack = new Exception ().getStackTrace(); 115 if (stack.length > 60) { 116 return false; 117 } 118 return true; 119 } 120 121 130 public int compareTo(Object a_other) { 131 if (a_other == null) { 132 return 1; 133 } 134 else { 135 ADF other = (ADF) a_other; 136 return new CompareToBuilder() 137 .append(m_chromosomeNum, other.m_chromosomeNum) 138 .toComparison(); 139 } 140 } 141 142 151 public boolean equals(Object a_other) { 152 if (a_other == null) { 153 return false; 154 } 155 else { 156 try { 157 ADF other = (ADF) a_other; 158 return new EqualsBuilder() 159 .append(m_chromosomeNum, other.m_chromosomeNum) 160 .isEquals(); 161 } catch (ClassCastException cex) { 162 return false; 163 } 164 } 165 } 166 } 167 | Popular Tags |