There are couple of other optimization points that could help speed this up even more:
mainly the search criterion should be very greedy IMO. If you don't achieve a trim state at a given speed, you might not receive a trim state for a speed higher than that?
Reduce the number of I/O file operations. This might speed up everything significantly. (This is better suited in a different PR)
[ ] Progress bar: during the run the most important information can be better understood by opening the CSV. So, instead of the log messages (unless -v is given) it would be much more helpful to show a progress bar while the optimizer is running.
[ ] Sorting parameters and requirements by name for the CSV header (deterministic output)
Taking what @volgy has done, we need to add the following capability: