80 likes | 166 Views
JavaGenes: Evolving Graphs. Al Globus, Veridian MRJ Technology Solutions, Inc. globus@nas.nasa.gov http://www.nas.nasa.gov/~globus/home.html John Lawton, UCSC Todd Wipke, UCSC Sean Atsatt, Sierra Imaging,Inc. Crossover. Graphs. Strings. Trees. abcd wxyz. ab cd wx yz. ab yz wx cd.
E N D
JavaGenes: Evolving Graphs Al Globus, Veridian MRJ Technology Solutions, Inc. globus@nas.nasa.gov http://www.nas.nasa.gov/~globus/home.html John Lawton, UCSC Todd Wipke, UCSC Sean Atsatt, Sierra Imaging,Inc.
Crossover Graphs Strings Trees abcd wxyz abcd wxyz abyz wxcd
Graph Crossover Combine into a Child Rip Two Parents Apart
Molecule Fitness Function All-pairs-shortest-path (APSP) distance • Assign extended types to each atom = (element, |single bonds|, |double bonds|, |triple bonds|) • Find shortest bond path between each pair of atoms • Create bag with one item per pair of atoms • item = (type1, type2, path length) • bag = set with repeated items • Tanimoto distance = |intersection| / |union|
Evolving Molecules size median shortest failures(%) benzene purine cubane diazepam cholesterol morphine 100 100 100 200 200 200 3 51 30 NA NA NA 0 6 4 453 1414 9769 0 0 0 71 74 97
Circuits • Directed graphs • More node types (and, nand, or, nor, xor, nxor, plus initial 0 or 1 for each type) • Exactly one input and one output node per graph • Crossover generates unconnected circuits on very rare occasion • Fitness function: number of right answers on 100 randomly generated inputs • Serial logic (one bit input and output at each step) • Logic simulator assumes all devices require unit time
Circuits parity delay add 200 600 600 NA 18 21 NA 6 0 100 13 6 name size median shortest failures(%)
Conclusions • Evolving graphs using genetic operators is possible • Molecules and circuits have been evolved • Molecular evolution is reasonably successful • Non-trivial circuits have yet to be evolved • This is a new technique that will require substantial refinement • open source in the near future • Where self-assembly problems can be cast as graphs JavaGenes may be of some utility