# propeller

Yet another Push-based genetic programming system in Clojure.

## Usage

To run PushGP on the default genetic programming problem 
from a REPL, load propel.core into your REPL (i.e. `lein repl`), 
and run `(-main)`.

To run PushGP on the default genetic programming problem from 
command line, execute `lein run`. Command-line arguments may 
be provided to override the defaults specified in `-main`, for 
example, `lein run :population-size 100`. You can use something 
like `lein run | tee outfile` to send output both to the terminal 
and to `outfile`.

## CLJS Usage

### Development

Run in development:

```bash
yarn
(mkdir -p target && cp assets/index.html target/)
yarn shadow-cljs watch app
```

`shadow-cljs` will be installed in `node_modules/` when you run `yarn`.

`:dev-http` specifies that `target/` will be served at http://localhost:8080 .

### REPL

After page is loaded, you may also start a REPL connected to browser with:

```bash
yarn shadow-cljs cljs-repl app
```

Once the REPL is loaded, load the core namespace with:

```
(ns propeller.core)
```
Calling `(-main)` will run the default genetic programming problem.

## Description

Propel is an implementation of the Push programming 
language and the PushGP genetic programming system in Clojure.

For more information on Push and PushGP see 
[http://pushlanguage.org](http://pushlanguage.org).