types.contraction.CCMResult

types.contraction.CCMResult()

Control Contraction Metrics (CCM) result.

Controller synthesis ensuring contraction of closed-loop system.

Fields

feedback_gain : GainMatrix State-dependent K(x) or constant K metric : ContractionMetric Contraction metric M(x) contraction_rate : ContractionRate Guaranteed contraction rate β metric_condition_number : ArrayLike Condition number κ(M(x)) over state space contraction_verified : bool LMI/SOS verification succeeded robustness_margin : float Margin in contraction condition geodesic_distance : Optional[Callable] Distance in M-metric: d_M(x₁, x₂)

Examples

>>> # Design CCM controller
>>> result: CCMResult = design_ccm_controller(
...     system=pendulum,
...     contraction_rate=0.5,
...     method='SDP'
... )
>>>
>>> if result['contraction_verified']:
...     K = result['feedback_gain']
...     M = result['metric']
...     beta = result['contraction_rate']
...
...     print(f"CCM controller designed!")
...     print(f"Contraction rate: {beta:.3f}")
...     print(f"Robustness margin: {result['robustness_margin']:.3f}")
...
...     # Apply controller
...     def controller(x):
...         if callable(K):
...             return K(x)  # State-dependent
...         else:
...             return K @ x  # Constant
...
...     # Geodesic distance (if available)
...     if 'geodesic_distance' in result:
...         d_M = result['geodesic_distance']
...         x1 = np.array([1.0, 0.5])
...         x2 = np.array([0.5, 0.3])
...         dist = d_M(x1, x2)
...         print(f"Distance in M-metric: {dist:.3f}")