Spaces:
Sleeping
Sleeping
MilesCranmer
commited on
Commit
•
bfb799a
1
Parent(s):
53256e6
Update TODO.md
Browse files
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 |
-
- [ ]
|
|
|
|
|
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?
|