Propeller 0.3.2
Released under the EPL-2.0 OR GPL-2.0-or-later WITH Classpath-exception-2.0
Yet another Push-based genetic programming system in Clojure.
Installation
To install, add the following dependency to your project or build file:
[net.clojars.lspector/propeller "0.3.2"]
Topics
- A Guide to Propeller
- Adding Genetic Operators
- Adding a Problem
- Adding a Selection Method
- Additional Instructions
- # Downsample Functions
- Generating Documentation for Propeller
Namespaces
propeller.downsample
FIXME: write docs
Public variables and functions:
- assign-indices-to-data
- convert-to-elite-error
- convert-to-soft-error
- get-distance-between-cases
- initialize-case-distances
- merge-map-lists-at-index
- replace-close-zero-with-zero
- replace-mins-with-zero
- select-downsample-maxmin
- select-downsample-maxmin-adaptive
- select-downsample-random
- update-at-indices
- update-case-distances
propeller.genome
The genetic material in Propeller. A plushy
is a list of Push instructions that represent a Push program. They hold the genetic material for an individual
. In the initial population, we create random plushys.
Public variables and functions:
propeller.problems.PSB2.fizz-buzz
FIZZ BUZZ from PSB2 Given an integer x, return “Fizz” if x is divisible by 3, “Buzz” if x is divisible by 5, “FizzBuzz” if x is divisible by 3 and 5, and a string version of x if none of the above hold.
Public variables and functions:
propeller.problems.PSB2.substitution-cipher
SUBSTITUTION CIPHER from PSB2
Public variables and functions:
propeller.problems.PSB2.twitter
TWITTER from PSB2 Given a string representing a tweet, validate whether the tweet meets Twitter’s original character requirements. If the tweet has more than 140 characters, return the string “Too many characters”. If the tweet is empty, return the string “You didn’t type anything”. Otherwise, return “Your tweet has X characters”, where the X is the number of characters in the tweet.
Public variables and functions:
propeller.problems.data-creation
FIXME: write docs
Public variables and functions:
- edge-cases-for-problem
- generate-data
- generate-data-find-pair
- generate-data-for-all-problems
- generate-data-for-problem
- generate-data-gcd
- read-data
- read-data-formatted
- read-string-and-convert
- save-data-for-all-problems
- save-data-for-problem
- save-train-test-data
- scrabble-score-read-data-formatted
- testing-cases-for-problem
- training-cases-for-problem
propeller.problems.software.number-io
Number IO from iJava (http://ijava.cs.umass.edu/)
Public variables and functions:
propeller.problems.software.smallest
SMALLEST PROBLEM from C. Le Goues et al., "The ManyBugs and IntroClass Benchmarks
Public variables and functions:
propeller.problems.valiant
Possibly impossible to solve with genetic programming. Stems from the work of Leslie Valiant and involves determining the parity of an unknown subsequence of a larger sequence of bits.
Public variables and functions:
propeller.push.instructions.bool
BOOLEAN Instructions, created with propeller.push.instructions/def-instruction
. List of instructions can be found at Additional Instructions.
Public variables and functions:
propeller.push.instructions.character
CHAR Instructions, created with propeller.push.instructions/def-instruction
. List of instructions can be found at Additional Instructions.
Public variables and functions:
propeller.push.instructions.code
CODE Instructions, created with propeller.push.instructions/def-instruction
. List of instructions can be found at Additional Instructions.
Public variables and functions:
propeller.push.instructions.input-output
INPUT and OUTPUT Instructions. Additional instructions can be found at Additional Instructions.
Public variables and functions:
propeller.push.instructions.numeric
FLOAT and INTEGER Instructions (polymorphic). Additional instructions can be found at Additional Instructions.
propeller.push.instructions.polymorphic
Polymorphic Instructions (for all stacks, with the exception of non-data ones like input and output)
Public variables and functions:
propeller.push.instructions.string
STRING Instructions, created with propeller.push.instructions/def-instruction
. List of instructions can be found at Additional Instructions.
Public variables and functions:
propeller.push.instructions.vector
VECTOR instructions for all vector element subtypes: BOOLEAN, FLOAT, INTEGER, and STRING.
propeller.push.limits
Values used by the Push instructions to keep the stack sizes within reasonable limits and values used by the Push instructions to keep computed values within reasonable size limits.
Public variables and functions:
propeller.selection
Propeller includes many kinds of genetic operators to select parents within the population such as tournament selection, lexicase selection, and epsilon lexicase selection.
Public variables and functions:
propeller.simplification
To use Propeller’s auto-simplification system, simply include the following four command line arguments when running a problem:
Public variables and functions:
propeller.tools.calculus
Functions for calculus operations
propeller.tools.math
Math functions.
propeller.utils
Useful functions.
Public variables and functions:
- bmx-distance
- break-up
- count-genes
- count-points
- depth
- drop-nth
- enforce-gene-length-limit
- ensure-list
- extract-genes
- filter-by-index
- first-non-nil
- gaussian-noise-factor
- indexof
- log
- not-lazy
- onenum
- perturb-with-gaussian-noise
- PI
- pmapallv
- pretty-map-println
- random-instruction
- remove-empty-genes
- round
- seq-zip
propeller.variation
Propeller includes many kinds of genetic operators to create variation within the population. You can specify the rate of the variation genetic operators with the :variation
map.
Public variables and functions: