1 10 package org.jgap.gp; 11 12 import java.io.*; 13 14 import java.awt.*; 15 import javax.swing.tree.*; 16 17 import org.jgap.*; 18 import org.jgap.gp.function.*; 19 import org.jgap.gp.impl.*; 20 import org.jgap.util.tree.*; 21 22 29 public abstract class GPProblem { 30 31 private final static String CVS_REVISION = "$Revision: 1.3 $"; 32 33 private GPConfiguration m_conf; 34 35 public GPProblem(GPConfiguration a_conf) 36 throws InvalidConfigurationException { 37 if (a_conf == null) { 38 throw new InvalidConfigurationException("Configuration must not be null!"); 39 } 40 m_conf = a_conf; 41 } 42 43 50 public abstract GPGenotype create() 51 throws InvalidConfigurationException; 52 53 63 public void showTree(IGPProgram a_prog, String a_filename) 64 throws InvalidConfigurationException { 65 TreeNode myTree = createTree(a_prog); 66 if (myTree == null) { 67 return; 68 } 69 TreeVisualizer tv = new TreeVisualizer(); 70 tv.setTreeBranchRenderer(new JGAPTreeBranchRenderer()); 71 tv.setTreeNodeRenderer(new JGAPTreeNodeRenderer()); 72 tv.setBranchStartWidth(18.0); 73 tv.setArenaColor(Color.black); 74 tv.setBkgndColor(Color.black); tv.setRenderNodes(true); 76 tv.setSide(1024); 77 tv.setCircleDiminishFactor(0.5); 78 tv.writeImageFile(tv.renderTree(myTree), new File(a_filename)); 79 } 80 81 94 public void showTree(IGPProgram a_prog, String a_filename, 95 TreeBranchRenderer a_treeBranchRenderer, 96 TreeNodeRenderer a_treeNodeRenderer) 97 throws InvalidConfigurationException { 98 TreeNode myTree = createTree(a_prog); 99 if (myTree == null) { 100 return; 101 } 102 TreeVisualizer tv = new TreeVisualizer(); 103 tv.setTreeBranchRenderer(a_treeBranchRenderer); 104 tv.setTreeNodeRenderer(a_treeNodeRenderer); 105 tv.setBranchStartWidth(18.0); 106 tv.setArenaColor(Color.black); 107 tv.setBkgndColor(Color.black); tv.setRenderNodes(true); 109 tv.setSide(1024); 110 tv.setCircleDiminishFactor(0.5); 111 tv.writeImageFile(tv.renderTree(myTree), new File(a_filename)); 112 } 113 114 124 public TreeNode createTree(IGPProgram a_prog) 125 throws InvalidConfigurationException { 126 if (a_prog == null) { 127 return null; 128 } 129 ProgramChromosome master = new ProgramChromosome(m_conf); 130 TreeNode tree; 131 if (a_prog.size() > 1) { 132 Class [] types = new Class [a_prog.size()]; 133 for (int i = 0; i < a_prog.size(); i++) { 134 types[i] = CommandGene.VoidClass; } 136 master.setGene(0, new SubProgram(m_conf, types)); 137 int index = 1; 138 for (int i = 0; i < a_prog.size(); i++) { 139 ProgramChromosome child = a_prog.getChromosome(i); 140 for (int j = 0; j < child.size(); j++) { 141 master.setGene(index++, child.getGene(j)); 142 } 143 } 144 master.redepth(); 145 tree = new JGAPTreeNode(master, 0); 146 } 147 else { 148 tree = new JGAPTreeNode(a_prog.getChromosome(0), 0); 149 } 150 return tree; 151 } 152 153 159 public GPConfiguration getGPConfiguration() { 160 return m_conf; 161 } 162 } 163 | Popular Tags |