Cache model evaluations
In topologicalFilteringIteration
call to filterViablePoints
evaluates all viable points found previously with projected indices. A lot of these evaluations might have been already done in previous recursive step (estimate size from log with debugging level, that outputs each evalModel
call). In an extreme, plausible case, if the current projection is one of the OAT projections considered in the previous recursive step, then every evaluation was already done.
In the simplest approach evalModel
could easily cache model evaluations in persistent data (time vs. memory trade-off). It becomes more complicated with parallel computing, when caches have to be explicitly merged (like projections are in topologicalFilteringRecursiveStepParallel
).
A more general solution, relates to one of the consideration from #6 (closed): each sample remembers projections it was checked for, and respective errors.