MilesCranmer commited on
Commit
bfb799a
1 Parent(s): 53256e6

Update TODO.md

Browse files
Files changed (1) hide show
  1. TODO.md +7 -2
TODO.md CHANGED
@@ -58,19 +58,23 @@
58
  - [x] Consider printing output sorted by score, not by complexity.
59
  - [x] Increase max complexity slowly over time up to the actual max.
60
  - [x] Record density over complexity. Favor equations that have a density we have not explored yet. Want the final density to be evenly distributed.
 
 
61
  - [ ] Sort these todo lists by priority
62
 
63
  ## Feature ideas
64
 
65
- - [ ] Do printing from Python side. Then we can do simplification and pretty-printing.
 
 
66
  - [ ] Cross-validation
67
- - [ ] Sympy printing
68
  - [ ] Hierarchical model, so can re-use functional forms. Output of one equation goes into second equation?
69
  - [ ] Add function to plot equations
70
  - [ ] Refresh screen rather than dumping to stdout?
71
  - [ ] Add ability to save state from python
72
  - [ ] Additional degree operators?
73
  - [ ] Multi targets (vector ops). Idea 1: Node struct contains argument for which registers it is applied to. Then, can work with multiple components simultaneously. Though this may be tricky to get right. Idea 2: each op is defined by input/output space. Some operators are flexible, and the spaces should be adjusted automatically. Otherwise, only consider ops that make a tree possible. But will need additional ops here to get it to work. Idea 3: define each equation in 2 parts: one part that is shared between all outputs, and one that is different between all outputs. Maybe this could be an array of nodes corresponding to each output. And those nodes would define their functions.
 
74
  - [ ] Tree crossover? I.e., can take as input a part of the same equation, so long as it is the same level or below?
75
  - [ ] Create flexible way of providing "simplification recipes." I.e., plus(plus(T, C), C) => plus(T, +(C, C)). The user could pass these.
76
  - [ ] Consider allowing multi-threading turned off, for faster testing (cache issue on travis). Or could simply fix the caching issue there.
@@ -100,6 +104,7 @@
100
 
101
  - [ ] How hard is it to turn the recursive array evaluation into a for loop?
102
  - [ ] Try defining a binary tree as an array, rather than a linked list. See https://stackoverflow.com/a/6384714/2689923
 
103
  - [ ] Add true multi-node processing, with MPI, or just file sharing. Multiple populations per core.
104
  - Ongoing in cluster branch
105
  - [ ] Performance: try inling things?
 
58
  - [x] Consider printing output sorted by score, not by complexity.
59
  - [x] Increase max complexity slowly over time up to the actual max.
60
  - [x] Record density over complexity. Favor equations that have a density we have not explored yet. Want the final density to be evenly distributed.
61
+ - [x] Do printing from Python side. Then we can do simplification and pretty-printing.
62
+ - [x] Sympy printing
63
  - [ ] Sort these todo lists by priority
64
 
65
  ## Feature ideas
66
 
67
+ - [ ] Other default losses (e.g., abs, other likelihoods, or just allow user to pass this as a string).
68
+ - [ ] Other dtypes available
69
+ - [ ] NDSA-II
70
  - [ ] Cross-validation
 
71
  - [ ] Hierarchical model, so can re-use functional forms. Output of one equation goes into second equation?
72
  - [ ] Add function to plot equations
73
  - [ ] Refresh screen rather than dumping to stdout?
74
  - [ ] Add ability to save state from python
75
  - [ ] Additional degree operators?
76
  - [ ] Multi targets (vector ops). Idea 1: Node struct contains argument for which registers it is applied to. Then, can work with multiple components simultaneously. Though this may be tricky to get right. Idea 2: each op is defined by input/output space. Some operators are flexible, and the spaces should be adjusted automatically. Otherwise, only consider ops that make a tree possible. But will need additional ops here to get it to work. Idea 3: define each equation in 2 parts: one part that is shared between all outputs, and one that is different between all outputs. Maybe this could be an array of nodes corresponding to each output. And those nodes would define their functions.
77
+ - Much easier option: simply flatten the output vector, and set the index as another input feature. The equation learned will be a single equation containing indices as a feature.
78
  - [ ] Tree crossover? I.e., can take as input a part of the same equation, so long as it is the same level or below?
79
  - [ ] Create flexible way of providing "simplification recipes." I.e., plus(plus(T, C), C) => plus(T, +(C, C)). The user could pass these.
80
  - [ ] Consider allowing multi-threading turned off, for faster testing (cache issue on travis). Or could simply fix the caching issue there.
 
104
 
105
  - [ ] How hard is it to turn the recursive array evaluation into a for loop?
106
  - [ ] Try defining a binary tree as an array, rather than a linked list. See https://stackoverflow.com/a/6384714/2689923
107
+ - in array branch
108
  - [ ] Add true multi-node processing, with MPI, or just file sharing. Multiple populations per core.
109
  - Ongoing in cluster branch
110
  - [ ] Performance: try inling things?