You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
New API for building objectives and solving/optimizing equilibria. A brief explainer can be found in the documentation
The Equilibrium class no longer "owns" an Optimizer or Objective, and does not build its own Transforms.
The ObjectiveFunction class is a "super-objective" that combines multiple "sub-objectives" which follow the ABC _Objective class.
Each sub-objective function can be used as either an "objective" (minimized during optimization) or a "constraint" (enforced exactly).
Each sub-objective function takes unique inputs that can be specified by a grid/surface/etc. or use default values from an Equilibrium.
Each sub-objective is responsible for building its own transforms or other constant matrices, and is also responsible for computing its own derivatives.
The super-objective dynamically builds the state vector with the independent variables from each sub-objective, and also combines the function values and derivatives by combining the outputs from each sub-objective.
The super-objective only takes a single argument (the state vector x or y). Perturbations are now performed wrt the full state vector y, which contains all of the individual parameters.
Adds ability to optimize physics quantities under equilibrium constraint using wide array of scipy and custom optimizers.