130 likes | 145 Views
Genetic Program. John Engelman Sami Shafe Siu-Cheong Lo. Application Package. Tree Structure Package. Processing Implementation. Program Usage. Test Results. Based on Fitness and Evaluation: Population Size Tree Depth Survival Probability Crossover Mutation. Test Results.
E N D
Genetic Program John EngelmanSami Shafe Siu-Cheong Lo
Test Results Based on Fitness and Evaluation: • Population Size • Tree Depth • Survival Probability • Crossover • Mutation
Application Output Detailed History Excution Start: Dec 8, 2007 3:10:35 PM Update 0 Update: INITIAL at Index: 0 Update: 0: MULT 1: ADD 3: 7 4: 0 2: MULT 5: X 6: 4 Update 1 Update: SURVIVAL at Index: 0 … Update 8 Update: MUTATION at Index: 4 Update: 4: DIV 9: X 10: 6 Update 9 Update: SURVIVAL at Index: 0 … Update 23 Update: MUTATION at Index: 3 Update: 3: 1 Update 24 Update: SURVIVAL at Index: 0 … Update 53 Update: MUTATION at Index: 6 Update: 6: 2 Update 54 Update: SURVIVAL at Index: 0 … Update 63 Update: CROSSOVER at Index: 3 Update: 3: ADD 7: X 8: X Update 64 Update: CROSSOVER at Index: 7 Update: 7: DIV 15: X 16: 6 Update 65 Update: MUTATION at Index: 2 Update: 2: X Update 66 Update: MUTATION at Index: 16 Update: 16: SUB 33: 6 34: X Update 67 Update: CROSSOVER at Index: 1 Update: 1: DIV 3: X 4: 6 Update 68 Update: MUTATION at Index: 4 Update: 4: X Update 69 Update: CROSSOVER at Index: 4 Update: 4: 2 Total Survivals: 59 Total Crossovers: 4 Total Mutations: 6 Execution Log Target Fitness: 1 Generation Size: 5 Crossover Probability: 20% Mutation Probability: 60% Surivival Probability: 20% Starting Tree Height: 3 Start Time: Dec 8, 2007 3:10:35 PM End Time: Dec 8, 2007 3:10:43 PM Run Time: 0.0mins 7.0secs 813msecs Total Generations: 70 Solution Fitness: 0.023547262141610105 0: MULT 1: DIV 3: X 4: 2 2: X (x / 2) * x
Conclusion & Lessons Learned • Integer may not be large enough to hold all possible indexes. If tree begins to become heavy to one branch, then the index value could roll-over. This is visible by a negative index. • Some threads may become stuck. A means of interrupting stuck threads without damaging a data structure or affecting the processing results should be included in the original design. • This is problematic for us because the execution time is checked within the main processing loop. If the deadlock occurs in this loop it will wait for a thread to complete then there is no means to exit the program within the time limit. • There is benefit to spontaneous generation of new trees into the mix. A number of cases have been observed where the application cycles for hundreds of generations without finding a better solution. In this case a new random tree added to the generation pool could provide the necessary diversity to find a better function. It wasn’t until after testing that we added the code to generate a completely new generation of trees randomly at each cycle and evaluate them before continuing on.