Fixes and traces

Tuesday, August 9th, 2011

Several recent changes to report to Clojush, which is available as usual from: https://github.com/lspector/Clojush

20110629: - Fixed abbreviate-tagged-code-macros printing of empty lists.
          - Added seq condition to walklist to permit walking of seqs that
            aren't actually full-fledged lists.
20110702: - Several fixes/refinements to tagged-code macros: 
            - Fixed incorrect no-op of arg-free calls with empty tag space.
            - Added :additional_args to tagged-code macro structure; the
              value should be a list of items and these will be executed
              in order before calling the macro's instruction.
            - Added optional 5th arg to tagged-code-macro-erc; this should
              be a function of zero args that will be called to produce
              the value of :additional_args (e.g. if you want to have one
              random integer arg then you could specify a 5th arg of
              (fn [] (list (lrand-int 101))).
            - Changed format produced by abbreviate-tagged-code-macros to
              handle :additional_args and to be slightly more concise.
20110714: - Added "trace" argument to eval-push and run-push. If this is
            true then the resulting state will map :trace to a list of
            executed instructions and literals, in reverse order of
            execution. If the argument is :changes then instructions that
            have no effect on the state will be excluded.

Clojush

Sunday, February 28th, 2010

A first version of Push3/PushGP in Clojure is available from http://hampshire.edu/lspector/clojush. It’s currently roughly the same stuff as was implemented in the first versions of Schush, but Clojure makes it easy to do some nice things like taking advantage of multi-core CPUs. When I run this on a 2-core machine I sometimes see CPU utilizations approaching 200% — I hope to try it on an 8-core machine soon…