98 Commits

Author SHA1 Message Date
Erik Rauer
7aad934b96 Change string/last
Changes `string/last` to return `:ignore-instruction` if the given string is empty
2021-03-23 22:42:49 -05:00
Erik Rauer
9cd4f875c2 Fix string/indexof-char
Changes `string/indexof-char` to return :ignore-instruction if the character is not present in the string. This makes it consistent with it's description
2021-03-21 01:02:11 -05:00
Erik Rauer
39a25fa7e3 Change the string/first instruction
This changes the `string/first` instruction to return :ignore-instruction if the string is empty.
2021-03-18 22:49:44 -05:00
Erik Rauer
ca311c9f36 Fix string/contains
This fixes `string/contains` to be consistent with it's descriptions, as well as it's implementation in Clojush
2021-03-16 22:47:41 -05:00
Nic McPhee
5c4d033c4f Merge remote-tracking branch 'upstream/master' 2021-01-23 17:41:39 -06:00
Lee Spector
b64d40e1b0 Resolve merge conflicts 2021-01-23 16:46:40 -05:00
Lee Spector
864c8fb8ee Print behavioral diversity and avg total error; add tail-aligned crossover and diploid operators; fix valiant problem 2021-01-23 16:14:09 -05:00
Erik Rauer
68802a9e45 Merge branch 'master' into test-vector-instructions 2021-01-21 15:19:11 -06:00
Erik Rauer
beed85b5c0 Change vector/_replacefirst
This changes `vector/_replacefirst` to just return the original vector if the value that will be replaced was not found. This change was made in order to be more consistent with Clojush.
2021-01-07 14:23:41 -06:00
Erik Rauer
7613f18c70 Fix vector/_set
This makes it so that `vector/_set` returns `:ignore-instruction` if the given vector is empty.
2021-01-05 15:47:37 -06:00
Erik Rauer
d5f115f81c Fix vector/_replacefirst
This changes the function to throw `:ignore-instruction` if the replacement value is not present in the vector.
2021-01-03 18:31:12 -06:00
Erik Rauer
99dbabcb82 Fix error in vector/_nth
Similar to `vector/_first` and `vector/_last`, `vector/_nth` would not check for the case of an empty vector and would divide by 0. This changes the instruction so that it simply throws `:ignore-instruction` in that case.
2020-12-29 16:21:15 -06:00
Nic McPhee
91df21dba5 Fix error in vector/_last
Similar to `vector/_first`, this didn't check for the empty vector case, so I've changed it to return `:ignore-instruction` in that case.

There's a lot of duplication between `_first` and `_last`, which makes me think there's some refactoring opportunities.
2020-12-18 17:03:56 -06:00
Nic McPhee
66ec0a1ebd Address the possibility of vectors being empty in vector/_first
The original version just used the built-in `first`, which returns `nil` if you give it an empty collection, which is almost certainly not a useful behavior.

This changes it to return `:ignore-instruction` if the vector is empty, thereby leaving all the stacks unchanged.
2020-12-17 18:45:06 -06:00
Erik Rauer
b3d9d89f4c Allow instructions to indicate they should be ignored
`make-instruction` will ignore any instructions that return `:ignore-instruction`. This allows instructions to be skipped without consuming their arguments.
2020-12-17 18:32:41 -06:00
Nic McPhee
fc26886815 Fix bugs in vector/_subvec
There were two independent bugs in `vector/_subvec` that were turned up by our `test.check` testing.

The first was that the order of the arguments was wrong and `stop-raw` and `start-raw` were flipped.

The second was that `stop` wasn't max'ed with 0, which meant it could sometimes be negative, leading to an `IndexOutOfBoundsException`.
2020-12-17 15:58:11 -06:00
Lee Spector
8cd1a79da3 Pass argmap to report 2020-12-09 10:50:49 -05:00
Lee Spector
2f4adfde7a Pass argmap to report 2020-12-09 10:49:53 -05:00
Lee Spector
b68cf4ad75 Pass argmap to plushy->post in report 2020-12-09 10:46:02 -05:00
Lee Spector
40ac1c73a4 Add uniform-replacement 2020-12-09 10:44:57 -05:00
Lee Spector
0af6aa095e Add uniform-replacement; pass argmap to plushy->push in report 2020-12-09 10:42:05 -05:00
Lee Spector
0a5a655181 Make genetic operator dispatch more modular and extensible 2020-12-08 22:59:44 -05:00
Lee Spector
180a7fdbe0 Provide more modular and and extensible approach to genetic operator dispatch 2020-12-08 22:53:37 -05:00
Lee Spector
09d5455da3 Remove extraneous argmap argument 2020-12-08 12:21:40 -05:00
Lee Spector
aed8eb8a76 Fix handling of boolean input values 2020-12-08 12:20:26 -05:00
Lee Spector
d49f9e4bf0 Remove extraneous argmap argument; experiment with valiant 2020-12-08 12:12:23 -05:00
Lee Spector
bb916c2ad3 Fix handling of false boolean input values; continue development of valiant problem 2020-12-07 20:19:59 -05:00
Lee Spector
14f63f880b Fix comment and error message in handle-input-instruction; begin developing valiant problem 2020-12-07 13:58:34 -05:00
Lee Spector
7a16770cb9
Merge pull request #9 from NicMcPhee/command-line-problem-specification
Support command-line problem specification
2020-12-04 18:49:20 -05:00
Lee Spector
7ecc32f13e Merge branch 'master' of https://github.com/lspector/propeller 2020-12-04 18:40:34 -05:00
Lee Spector
14e6cfcd08 Reformat 2020-11-29 22:29:31 -05:00
Lee Spector
d309869919 Comment out shutdown-agents since agents not currently used and this messes up REPL sessions 2020-11-29 22:16:29 -05:00
Lee Spector
4783d6695a Fix string-classification problem by adding train-and-test-data and fixing wrong instruction name 2020-11-29 22:09:36 -05:00
Lee Spector
0c6ebde41b Fix :flip that should be :diploid-flip 2020-11-29 21:43:00 -05:00
Lee Spector
81f2c3197f Distinguish flip rate from flip probability 2020-11-29 21:32:42 -05:00
Nic McPhee
e05290d87c Support command-line problem specification
This change uses the first command-line argument as the problem, which is assumed to be a namespace under `propeller.problems`. This will load the `instructions` and `error-function` from that namespace. If no problem is specified, then a (hopefully) helpful error is generated and the programs exits.

This allows us to call Propeller with calls such as:

```
   lein run software.smallest
```
2020-11-24 16:42:22 -06:00
Nic McPhee
da84852245 Move max-stack-items to globals
This creates a `push/utils/globals/cljc` similar to that created by @mcgirjau and moved the `max-stack-items` def to that namespace, updating `polymorphic` as necessary.
2020-11-24 16:00:03 -06:00
Nic McPhee
f675f69276 Merge branch 'master' into limit-dup-times 2020-11-24 15:53:36 -06:00
Lee Spector
35ac379f06 Add more examples to session.clj 2020-11-24 16:09:44 -05:00
Lee Spector
a8e9de97ce Fix peek-stack for false on boolean stack 2020-11-23 09:57:04 -05:00
Lee Spector
3ba030ceec Add train/test data support to simple-regression problem 2020-11-23 09:51:19 -05:00
Lee Spector
509c22b79c Fix naming clash in new-individual 2020-11-23 07:49:40 -05:00
Lee Spector
f8bdacc388 Remove debugging printing; update session.clj 2020-11-22 23:35:07 -05:00
Lee Spector
28da548e4c Undo wrong fix for exec_if; fix peek-stack for false on boolean stack 2020-11-22 23:28:02 -05:00
Lee Spector
0482ccccf5 Correct order of clauses for exec_if 2020-11-22 22:05:42 -05:00
Lee Spector
97de757f57 Begin bringing session.clj up to date 2020-11-22 21:57:29 -05:00
Lee Spector
b6a9a410c1 Call diploid-flip when appropriate; make new-individual robust to missing rates 2020-11-22 21:40:57 -05:00
Lee Spector
224d33c19d Add diploid-flip genetic operator 2020-11-22 21:32:49 -05:00
Lee Spector
4df6ea7fdd Use diploid operators when called for; fix bug in diploid-uniform-addition 2020-11-22 21:27:07 -05:00
Lee Spector
67fcdb13b5 Undo deletion rate adjustment (done elsewhere), remove argmap arguments to genetic operators, define diploid genetic operators 2020-11-22 21:18:30 -05:00