Version 0.9.3 Release Notes
Released: date of release
This release adds support for collocation in finding optimal
trajectories, adds the ability to compute optimal trajectories for
flat systems, adds support for passivity indices and passivity tests
for discrete time systems, and includes support for gain scheduling
(in create_statefbk_iosystem. Setup is now done using setuptools
(pip install . instead of python setup.py install).
This release requires Python 3.8 or higher.
New classes, functions, and methods
The following new classes, functions, and methods have been added in this release:
ispassive: check to see if an LTI system is passive (requirescvxopt).get_output_fb_index,get_input_ff_index: compute passivity indices.flatsys.BSplineFamily: new family of basis functions for flat systems.flatsys.solve_flat_ocp: allows solution of optimal control problems for differentially flat systems with trajectory and terminal costs and constraints, mirroring the functionality ofoptimal.solve_ocp.zpk: create a transfer funtion from a zero, pole, gain representation.find_eqpts(nowfind_operating_system) now works for discrete-time systems.
Bug fixes
The following bugs have been fixed in this release:
Fixed
timebasebug inInterconnectedSystemthat gave errors for discrete-time systems.Fixed incorect dimension check in
matlab.lsimfor discrete-time systems.Fixed a bug in the computation of derivatives for the Bezier family of basis functions with rescaled final time, and implemented a final time rescaling for the polynomial family of basis functions.
Fixed bug in the processing of the
paramskeyword for systems without states.Fixed a problem that was identified in PR #785, where interconnecting a LinearIOSystem with a StateSpace system via the interconnect function did not work correctly.
Fixed an issued regarding the way that
StateSpace._isstaticwas defining a static system. New version requires nstates == 0.Fixed a bug in which system and system name were not being handled correctly when a
TransferFunctionsystem was combined with other linear systems using interconnect.Fixed a bug in
find_eqptwhere when y0 is None, dy in the root function could not be calculated (since it tries to subtract None).
Improvements
The following additional improvements and changes in functionality were implemented in this release:
Handle
t_evalfor static systems ininput_output_response.Added support for discrete-time passive systems.
Added a more descriptive
__repr__for basis functions (show the family + information on attributes).StateSpace.sampleandTransferFunction.samplereturn a system with the same input and output labels, which is convenient when constructing interconnected systems usinginterconnect.optimal.solve_ocp: add collocation method for solving optimal control problems. Usetrajectory_methodparameter that be set to either ‘shooting’ (default for discrete time systems) or ‘collocation’ (default for continuous time systems). When collocation is used, theinitial_guessparameter can either be an input trajectory (as before) or a tuple consisting of a state trajectory and an input trajectory.StateSpaceobjects can now be divided by a scalar.rlocus,sisotool: Allowinitial_gainto be a scalar (instead of requiring and array).create_statefbk_iosystemnow supports gain scheduling.create_estimator_iosystemnow supports continous time systems.
Deprecations
The following functions have been newly deprecated in this release and generate a warning message when used:
In the optimal module, constraints are specified in the form
LinearConstraint(A, lb, ub)orNonlinearConstraint(fun, lb, ub)instead of the previous forms(LinearConstraint, A, lb, ub)and(NonlinearConstraint, fun, lb, ub).
The listed items are slated to be removed in future releases (usually the next major or minor version update).