Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

invdes enhancements #1581

Open
12 tasks
tylerflex opened this issue Apr 2, 2024 · 1 comment
Open
12 tasks

invdes enhancements #1581

tylerflex opened this issue Apr 2, 2024 · 1 comment
Assignees

Comments

@tylerflex
Copy link
Collaborator

tylerflex commented Apr 2, 2024

design Region

  • Allow for non-uniform pixel size (eg. a 2D slab). maybe an option to set some dimensions to 1 pixel? single_pixel_dims=(False, False, True)?

Postprocessing Functions

  • Schema-defined postprocessing fn using set of tdi operations.

Inverse Design Enhancements

  • Buffer layer for fabricability
  • Initial "structure" to seed parameters for starting optimization.
  • Robust optimization. Evaluate the objective for multiple design variations. I think this is possible using InverseDesignMulti, but might not be obvious to users, especially seeing that the documentation makes it seem like this is intended for running optimizations with multiple sources. It might be enough to clarify this in the documentation (and perhaps some examples in a notebook?).

Optimizers

  • Make starting params optional and choose a good default, maybe all 0.5? or 0.5 + some randomness?
  • Add more general optimization wrapper for optax
  • Add support for other types of optimizers (LBFGS, nlopt)

Callback functions

  • Display
  • Scheduling changes in the parameters
  • Storing optional fields to history (eg. monitor data, sim_data)
  • Stopping optimization based on a specific condition

Constraints

  • Penalties seem to be geared towards being... well, penalties, i.e., having a term in the objective function. It would be nice to have built-in support for constraints, as these are very commonly used (with MMA, for example). To have minimal support for this, the objective function's aux_data could return both the penalty value as well as its gradient, and the user could then plug these into their constrained optimizer of choice. This would mean that one needs access to all penalties separately (currently they are being summed over).
@e-g-melo
Copy link
Collaborator

e-g-melo commented Apr 4, 2024

Another feature the users should request is an "Estimate Function" to give them an idea of the maximum cost. I suppose we can calculate that using the number of iterations. Is that right?

Maybe we can also set a kind of "Maximum Cost" stop condition.

@tylerflex tylerflex mentioned this issue Apr 16, 2024
11 tasks
@tylerflex tylerflex removed the adjoint label May 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants