Skip to content

v0.5.0

Compare
Choose a tag to compare
@f0uriest f0uriest released this 21 Jun 13:13
· 10882 commits to master since this release
bc6f39d

v0.5.0

Github Commits

Major Changes

  • 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.
  • New objective for solving vacuum equilibria