Updates to clojush

March 14, 2010
by 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).


Leave a Reply

You must be logged in to post a comment.