Archive for January, 2010

Schush do*range bug fixes

Sunday, January 24th, 2010

The latest schush.ss fixes bugs in the implementations of exec.do*range and code.do*range that were noticed by Tom Helmuth:

http://hampshire.edu/lspector/schush.ss

20100123: - Fixed bugs in orders in which exec.do*range and code.do*range pushed things
            onto the exec stack.

Schush performance improvements and mate selection

Thursday, January 21st, 2010

The latest schush.ss includes a significant performance improvement and a new option for crossover mate selection:

http://hampshire.edu/lspector/schush.ss

20100121: - Eliminated calls to eval in Push program execution, speeding up all Push
            program execution significantly. This is done with an instruction name/procedure
            hash table to which instructions are added when registered. Note that now 
            ALL instructions that appear in Push programs must be defined with
            define-registered, rather than define.
          - Fixed examples in this file to define input instructions with define-registered.
          - Added compensatory mate selection, in which mates for crossover with individual 
            i are selected on the basis of low sums, over fitness cases, of the product
            of i's error and the crossover candidate's error. This is off by default but
            can be turned on by passing a value of #t to the compensatory-mate-selection
            argument of schushgp.

Schush execution traces

Sunday, January 3rd, 2010

The updated schush.ss includes a simple mechanism for saving execution traces for later analysis, etc.:

http://hampshire.edu/lspector/schush.ss

20100103: - Added option to save execution traces. If the global parameter save-traces
            is #t then the global variable trace will contain an execution trace
            after each call to run-schush. A trace is a list of exec stack tops, listed
            last first.

Schush: trivial geography, historically assessed hardness, and other goodies

Saturday, January 2nd, 2010

A bigger update for the new year:

http://hampshire.edu/lspector/schush.ss

The biggest additions are trivial geography (which was trivial to add 🙂 but which can make a big difference) and error scaling using one form of historically assessed hardness. Here’s the full list of new changes:

20091229: - Added scale-errors parameter to schushgp; when #t this calculates
            scaled errors via the Historically Assessed Hardness (HAH) method (in the
            "current generation / quotient" setting) and uses these scaled errors
            as the basis of selection. HAH is described in:
              Klein, J., and L. Spector. 2008. Genetic Programming with Historically
              Assessed Hardness. In Genetic Programming Theory and Practice VI, edited by
              R. L. Riolo, T. Soule, and B. Worzel, pp. 61-74. New York: Springer-Verlag.
              http://hampshire.edu/lspector/pubs/kleinspector-gptp08-preprint.pdf
            This form of HAH is similar but non-identical (for non-Boolean problems)
            to "implicit fitness sharing" as described by McKay in:
              McKay, R. I. 2001. An investigation of fitness sharing in genetic programming.
              The Australian J. of Intelligent Information Processing Systems, 7(1/2):43–51.
            Also added examples using the scale-errors parameter.
          - Added three schushgp parameters to control the number of iterations of
            automatic simplification performed at various times:
            - report-simplifications:
                the number performed for each schushgp generation report
            - final-report-simplifications:
                the number performed on successful results
            - reproduction-simplifications:
                the number performed by the simplification genetic operator
          - Fixed bug in cases for factorial example.
          - Added YANK and YANKDUP instructions for all types.
20100102: - Added trivial geography, controlled by a trivial-geography-radius parameter
            to schushgp; set this to zero (the default) for no trivial geography.
            Trivial geography is described in:
              Spector, L., and J. Klein. 2005. Trivial Geography in Genetic Programming.
              In Genetic Programming Theory and Practice III, edited by T. Yu, R.L. Riolo,
              and B. Worzel, pp. 109-124. Boston, MA: Kluwer Academic Publishers.
              http://hampshire.edu/lspector/pubs/trivial-geography-toappear.pdf
            Also added an example using trivial geography.
          - Made several minor corrections to the documentation.