Updates to clojush
March 14, 2010by Lee Spector (lspector)
Several improvements have been made to clojush, the version of Push3/PushGP implemented in Clojure. The version history additions are listed below, but I can also report getting upwards of 1300% CPU utilization on a dual 4-core mac, which is very nice!
VERSION HISTORY 20100227: - First distributed version. 20100301: - Added (shutdown-agents) for proper termination. 20100306: - Added history (of total errors of ancestors) to individuals. - Commented out (shutdown-agents) because it prevents multiple runs in a single launch of a Clojure REPL. 20100307: - Fixed bug in history: reproductive auto-simplification added was adding duplicate items. 20100314: - Added instructions: *_shove, code_extract, code_insert, code_subst, code_contains, code_container, code_position, code_discrepancy, *_rand. NOTE that the presence of *_rand instructions means that programs produced using the full set of instructions may be non-deterministic. As of this writing pushgp (via evaluate-individual) will evaluate an individual only once, so it will always have whatever fitness value it had upon first testing. - Added globals to support integer_rand and float_rand: min-random-integer, max-random-integer, min-random-float max-random-float. - Fixed bug in code_car that could produce nil. - Made execute-instruction safe for nil (although it shouldn't arise anyway). - Added stress-test for testing and debugging new Push instructions. See the stress-test documentation string for details. - Implemented size limits on intermediate results on code stack (in code_cons, code_list, code-append, code_insert, code_subst, exec_s, exec_y). - Fixed bug in exec_s (was always a noop previously).