• Simultaneously optimize over an arbitrary list of objectives

  • Optimize over multiple control fields at the same time

  • Arbitrary equations of motion, through a propagator callback function

  • Arbitrary optimization functionals, through chi_constructor callback function

  • Allows injection of arbitrary code, through modify_params_after_iter function

  • Customizable parallelization of the propagation of different objectives

  • Customizable analysis and convergence check

  • Support for dissipative dynamics (Liouville space)

  • Convenience constructors for objectives describing gate optimization (in Hilbert space or Liouville space) and for “ensemble optimization” to obtain robust controls

Not yet implemented:

  • non-linear controls

  • state-dependent constraints