Genetic Programming in Clojure
summary
Shows a working genetic programming pipeline implemented in Clojure that fits in about 100 lines of Clojure, uses eval for fitness evaluation and is trivially parallelizable. Describes a stack‑based language PushGP with separate type stacks and an exec stack, enforces step limits to handle the halting problem, and reports that using lexicase selection finds more concise solutions and speeds search — e.g., solving 22 of 29 student programming benchmarks. Also demos a Quil-based artificial‑life playground called Pucks where evolved Push programs control agents.
AI-written summary · about
chapters (20)
- 0:00Intro
- 0:35Automatic Programming
- 1:34Inductive Programming
- 6:55Tests
- 7:15Genetic Algorithms
- 8:43Program Representations
- 9:26Lisp Symbolic Expressions
- 10:17Recombining Lisp
- 10:36Even 3 Parity
- 17:13Test-Driven Selection
- 20:02Symbolic Regression
- 21:47Humies Criteria
- 22:14Humies Winners
- 23:01Evolution, the Designer
- 25:31Expressive Representations
- 27:28Execution
- 32:03Digital Organisms
- 32:46Pucks
- 35:35Prospects
- 37:25GP & Clojure
related talks
38mProbabilistic programming and meta-programming in Clojure
01h 02mSolving Problems the Clojure Way
36mPlaying Go with Clojure
33mLinear Genetic Programming in Python Bytecode
45mKeynote: Writing Code? Pfft... Evolve it Instead!
40mFun with Functional Programming in Clojure
38mFun with Functional Programming in Clojure
48mAncestry of Polymorphism in Clojure
