To provide a better UX, we should implement a new callback specifically for Blop that is used for blop.plans.optimize (or plans like it) such that we get a few things:
- structured output to stdout
- other callbacks may also be writing to the stdout so it should fit in nicely
- live plots showing
- histograms for parameters
- line plots for objectives/metrics
The live plots in particular can be tricky if we do multiple runs, i.e.
RE(agent.optimize(50))
RE(agent.optimize(23))
It could be non-blocking using ZMQ pub/sub with ipc:// but maybe not worth the complexity for an initial version of this.
Future work could be to integrate this with Tiled streaming (web sockets), but this assumes users will be using Tiled, which is not currently a dependency of Blop.
To provide a better UX, we should implement a new callback specifically for Blop that is used for
blop.plans.optimize(or plans like it) such that we get a few things:The live plots in particular can be tricky if we do multiple runs, i.e.
It could be non-blocking using ZMQ pub/sub with
ipc://but maybe not worth the complexity for an initial version of this.Future work could be to integrate this with Tiled streaming (web sockets), but this assumes users will be using Tiled, which is not currently a dependency of Blop.