Skip to content

Flexibility in how solves are terminated #182

@michael-0brien

Description

@michael-0brien

Hello again! First of all, amazing package. The modularity here is really fantastic.

For me, I think a key missing feature is some kind of flexibility in how to terminate solves. There are two aspects of this I think

  1. I sometimes struggle with the interpretability of the cauchy termination criteria. My parameters all have different scales, and the meaning of “atol” and “rtol” applied to all parameters is not always meaningful. I would find it useful if there were 1) a way to converge just on function tolerance or 2) to have pytree-valued rtol and atol applied to parameters.

  2. It is very cool that OptaxMinimiser is provided. For me, the ability to do the converse—wrap an optimistix minimizer into an optax-like style API—would be very useful. For my work, I don’t always want to use the cauchy termination criteria at all—I may want to just step through a solve and inspect the results. I also may want to vmap over solves, and I don't think it is always wise to use while loop logic in this case. I wrote my own API to give this behavior using AbstractMinimiser.init and AbstractMinimiser.step, and this was fairly straight forward to do! But I definitely needed the source code to do so and some prior Equinox expertise. Also, related to the above, rtol and atol I noticed were required parameters.

I realize what I’m describing is not a small feature request by any means and there is no immediate need for this on my end, but I thought it would be interesting to have some discussion about this. Let me know what you think!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions