1 18-GeneticProgramming


https://geneticprogramming.com/
https://en.wikipedia.org/wiki/Genetic_programming
https://en.wikipedia.org/wiki/Schema_(genetic_algorithms)

A great small-ish science community:
http://gpbib.cs.ucl.ac.uk/

1.1 Tree review

Show basics, traversals, print tricks, etc.
../../DataStructures/Content.html

1.2 Genetic programming the movie

Koza’s old introductory videos as a historical perspective:

Part 1:
https://www.youtube.com/watch?v=tTMpKrKkYXo

Part 2:
https://www.youtube.com/watch?v=pRk6cth7Bpg

Part 3:
https://www.youtube.com/watch?v=8DY7akqFvfw

Part 4:
https://www.youtube.com/watch?v=ordtzUccs2s

1.3 Clojure / lisp

https://www.clojure.org/guides/getting_started
https://www.clojure.org/guides/learn/clojure

Why clojure?
https://www.youtube.com/watch?v=C-kF25fWTO8

You can evolve this:

clojure -e "(float ( + ( * -10 ( / 9 5 ) ) 32 ))"
clojure -e "( + ( * -10 ( / 9 5 ) ) 32 )"

GP in clojure:
https://www.youtube.com/watch?v=HWMJdO4klIE

1.4 Code

18-GeneticProgramming/MyTree.py

1.5 Other types of GP

https://geneticprogramming.com/about-gp/tree-based-gp/
https://geneticprogramming.com/about-gp/stack-based-gp/
https://en.wikipedia.org/wiki/Grammatical_evolution
https://en.wikipedia.org/wiki/Cartesian_genetic_programming
https://en.wikipedia.org/wiki/Linear_genetic_programming
https://en.wikipedia.org/wiki/Multi_expression_programming
https://en.wikipedia.org/wiki/Genetic_improvement_(computer_science)
http://www0.cs.ucl.ac.uk/staff/ucacbbl/gismo/
https://en.wikipedia.org/wiki/Eurisko

1.6 Libraries

https://geneticprogramming.com/software/

1.7 PushGP

Lee Spector’s talk on clojure, push, lexicase selection, gp as a modern perspective:
https://www.youtube.com/watch?v=HWMJdO4klIE

The GP suite and API he develops:
https://faculty.hampshire.edu/lspector/push.html

Quick intro
https://www.youtube.com/watch?v=ryW9w5cAwaI

Even quicker
https://www.youtube.com/watch?v=VGJWlSC0gl4&t=13s

1.7.1 PyshGP

http://erp12.github.io/pyshgp/html/index.html
https://github.com/erp12/pyshgp

Examples (show and run these)
https://github.com/erp12/pyshgp/tree/master/examples
https://github.com/erp12/pyshgp-demo

Show this for example functions (integer_+ integer_add)
pyshgp/pyshgp/push/instructions/numeric.py
propel/src/propel/core.clj

1.7.2 Propel

A very simple implementation in Clojure:
https://github.com/lspector/propel

1.8 Benchmarks

https://geneticprogramming.com/benchmarks/

What does a benchmark suite look like for GP?
What does a test suite look like for your code?
My autograder?
Other code-judge programming competion sites?
A test suite for code is just IO pairs, or unit tests.
Show the bowling problem, clojure code, and dataset, for example
https://cs.hamilton.edu/~thelmuth/PSB2/PSB2.html
https://www.youtube.com/watch?v=p5qtiD3q8_A
https://github.com/thelmuth/psb2-python
https://github.com/thelmuth/program-synthesis-benchmark-datasets
https://github.com/thelmuth/Clojush/releases/tag/psb2-v1.0
http://thelmuth.github.io/GECCO_2015_Benchmarks_Materials/

Show:
https://raw.githubusercontent.com/thelmuth/GECCO_2015_Benchmarks_Materials/master/GECCO-slides.pdf

pip3 install --upgrade psb2 --user