tidy3d
tidy3d copied to clipboard
`invdes` enhancements
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
tdioperations.
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).
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.