Spaces:
Sleeping
Sleeping
Commit
·
d5ec823
1
Parent(s):
e8b8d89
Use @fastmath for evaluating on array
Browse files- README.md +7 -2
- julia/sr.jl +1 -1
README.md
CHANGED
|
@@ -299,10 +299,10 @@ pd.DataFrame, Results dataframe, giving complexity, MSE, and equations
|
|
| 299 |
- [x] Sympy evaluation
|
| 300 |
- [x] Threaded recursion
|
| 301 |
- [x] Test suite
|
| 302 |
-
- [ ] Add true multi-node processing, with MPI, or just file sharing. Multiple populations per core.
|
| 303 |
-
- Ongoing in cluster branch
|
| 304 |
- [x] Performance: - Use an enum for functions instead of storing them?
|
| 305 |
- Gets ~40% speedup on small test.
|
|
|
|
|
|
|
| 306 |
- [ ] Consider allowing multi-threading turned off, for faster testing (cache issue on travis). Or could simply fix the caching issue there.
|
| 307 |
- [ ] Dump scores alongside MSE to .csv (and return with Pandas).
|
| 308 |
- [ ] Consider returning only the equation of interest; rather than all equations.
|
|
@@ -320,6 +320,7 @@ pd.DataFrame, Results dataframe, giving complexity, MSE, and equations
|
|
| 320 |
- [ ] Use NN to generate weights over all probability distribution conditional on error and existing equation, and train on some randomly-generated equations
|
| 321 |
- [ ] Add GPU capability?
|
| 322 |
- Not sure if possible, as binary trees are the real bottleneck.
|
|
|
|
| 323 |
- [ ] Idea: use gradient of equation with respect to each operator (perhaps simply add to each operator) to tell which part is the most "sensitive" to changes. Then, perhaps insert/delete/mutate on that part of the tree?
|
| 324 |
- [ ] For hierarchical idea: after running some number of iterations, do a search for "most common pattern". Then, turn that subtree into its own operator.
|
| 325 |
- [ ] Additional degree operators?
|
|
@@ -332,4 +333,8 @@ pd.DataFrame, Results dataframe, giving complexity, MSE, and equations
|
|
| 332 |
- [ ] Call function to read from csv after running
|
| 333 |
- [ ] Add function to plot equations
|
| 334 |
- [ ] Sort this todo list by priority
|
|
|
|
|
|
|
|
|
|
|
|
|
| 335 |
|
|
|
|
| 299 |
- [x] Sympy evaluation
|
| 300 |
- [x] Threaded recursion
|
| 301 |
- [x] Test suite
|
|
|
|
|
|
|
| 302 |
- [x] Performance: - Use an enum for functions instead of storing them?
|
| 303 |
- Gets ~40% speedup on small test.
|
| 304 |
+
- [ ] Add true multi-node processing, with MPI, or just file sharing. Multiple populations per core.
|
| 305 |
+
- Ongoing in cluster branch
|
| 306 |
- [ ] Consider allowing multi-threading turned off, for faster testing (cache issue on travis). Or could simply fix the caching issue there.
|
| 307 |
- [ ] Dump scores alongside MSE to .csv (and return with Pandas).
|
| 308 |
- [ ] Consider returning only the equation of interest; rather than all equations.
|
|
|
|
| 320 |
- [ ] Use NN to generate weights over all probability distribution conditional on error and existing equation, and train on some randomly-generated equations
|
| 321 |
- [ ] Add GPU capability?
|
| 322 |
- Not sure if possible, as binary trees are the real bottleneck.
|
| 323 |
+
- Could generate on CPU, evaluate score on GPU?
|
| 324 |
- [ ] Idea: use gradient of equation with respect to each operator (perhaps simply add to each operator) to tell which part is the most "sensitive" to changes. Then, perhaps insert/delete/mutate on that part of the tree?
|
| 325 |
- [ ] For hierarchical idea: after running some number of iterations, do a search for "most common pattern". Then, turn that subtree into its own operator.
|
| 326 |
- [ ] Additional degree operators?
|
|
|
|
| 333 |
- [ ] Call function to read from csv after running
|
| 334 |
- [ ] Add function to plot equations
|
| 335 |
- [ ] Sort this todo list by priority
|
| 336 |
+
- [ ] Consider printing output sorted by score, not by complexity.
|
| 337 |
+
- [ ] Performance: try inling things?
|
| 338 |
+
- [ ] Multi targets (vector ops)
|
| 339 |
+
|
| 340 |
|
julia/sr.jl
CHANGED
|
@@ -247,7 +247,7 @@ function evalTreeArray(tree::Node)::Array{Float32, 1}
|
|
| 247 |
elseif tree.degree == 1
|
| 248 |
return unaops[tree.op].(evalTreeArray(tree.l))
|
| 249 |
else
|
| 250 |
-
return binops[tree.op].(evalTreeArray(tree.l), evalTreeArray(tree.r))
|
| 251 |
end
|
| 252 |
end
|
| 253 |
|
|
|
|
| 247 |
elseif tree.degree == 1
|
| 248 |
return unaops[tree.op].(evalTreeArray(tree.l))
|
| 249 |
else
|
| 250 |
+
return @fastmath binops[tree.op].(evalTreeArray(tree.l), evalTreeArray(tree.r))
|
| 251 |
end
|
| 252 |
end
|
| 253 |
|