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

Namespaces

propeller.downsample

FIXME: write docs

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.gp

Main genetic programming loop.

Public variables and functions:

propeller.problems.PSB1.count-odds

FIXME: write docs

propeller.problems.PSB1.grade

FIXME: write docs

propeller.problems.PSB1.scrabble-score

FIXME: write docs

propeller.problems.PSB1.small-or-large

FIXME: write docs

propeller.problems.PSB2.basement

BASEMENT from PSB2

propeller.problems.PSB2.bouncing-balls

BOUNCING BALLS from PSB2

propeller.problems.PSB2.bowling

BOWLING from PSB2

propeller.problems.PSB2.camel-case

CAMEL CASE from PSB2

propeller.problems.PSB2.dice-game

DICE GAME from PSB2

propeller.problems.PSB2.find-pair

FIXME: write docs

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.

propeller.problems.PSB2.fuel-cost

FUEL COST from PSB2

propeller.problems.PSB2.gcd

propeller.problems.PSB2.luhn

LUHN from PSB2

propeller.problems.PSB2.middle-character

MIDDLE CHARACTER from PSB2

propeller.problems.PSB2.paired-digits

PAIRED DIGITS from PSB2

propeller.problems.PSB2.shopping-list

SHOPPING LIST from PSB2

propeller.problems.PSB2.snow-day

SNOW DAY from PSB2

propeller.problems.PSB2.solve-boolean

SOLVE BOOLEAN from PSB2

Public variables and functions:

propeller.problems.PSB2.spin-words

SPIN WORDS from PSB2

propeller.problems.PSB2.square-digits

SQUARE DIGITS from PSB2

propeller.problems.PSB2.substitution-cipher

SUBSTITUTION CIPHER from PSB2

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.

propeller.problems.UBall5D

FIXME: write docs

propeller.problems.boolean.mul3

FIXME: write docs

propeller.problems.boolean.mul4

FIXME: write docs

propeller.problems.complex-regression

FIXME: write docs

Public variables and functions:

propeller.problems.data-creation

FIXME: write docs

propeller.problems.float-regression

FIXME: write docs

Public variables and functions:

propeller.problems.integer-regression

FIXME: write docs

Public variables and functions:

propeller.problems.simple-classification

FIXME: write docs

Public variables and functions:

propeller.problems.software.number-io

Number IO from iJava (http://ijava.cs.umass.edu/)

propeller.problems.software.smallest

SMALLEST PROBLEM from C. Le Goues et al., "The ManyBugs and IntroClass Benchmarks

propeller.problems.string-classification

String Classification:

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

Push Instructions

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.parentheses

        FIXME: write docs

        Public variables and functions:

        propeller.push.instructions.polymorphic

        Polymorphic Instructions (for all stacks, with the exception of non-data ones like input and output)

        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.interpreter

          Interprets Push programs.

          Public variables and functions:

          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.

          propeller.push.state

          Push states

          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.

          propeller.simplification

          To use Propeller’s auto-simplification system, simply include the following four command line arguments when running a problem:

          propeller.tools.calculus

          Functions for calculus operations

          Public variables and functions:

          propeller.tools.character

          Functions for CHARs

          Public variables and functions:

          propeller.tools.distributions

          Functions to calculate distribution.

          Public variables and functions:

          propeller.tools.math

          Math functions.

          propeller.tools.metrics

          Functions to measure things.

          propeller.utils

          Useful functions.

          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.