problem
LoweredProblem dataclass - container for all lowering outputs.
LoweredProblem
dataclass
¶
Container for all outputs from symbolic problem lowering.
This dataclass holds all the results of lowering symbolic expressions to executable JAX and CVXPy code. It provides a clean, typed interface for accessing the various components needed for optimization.
Note
CVXPy optimization variables (ocp_vars) are owned by the solver,
not stored here. Access them via solver.ocp_vars.
Attributes:
| Name | Type | Description |
|---|---|---|
dynamics |
Dynamics
|
Optimization dynamics with fields f, A, B (JAX functions) |
dynamics_prop |
Dynamics
|
Propagation dynamics with fields f, A, B |
jax_constraints |
LoweredJaxConstraints
|
Non-convex constraints lowered to JAX with gradients |
cvxpy_constraints |
LoweredCvxpyConstraints
|
Convex constraints lowered to CVXPy |
x_unified |
UnifiedState
|
Aggregated optimization state interface |
u_unified |
UnifiedControl
|
Aggregated optimization control interface |
x_prop_unified |
UnifiedState
|
Aggregated propagation state interface |
cvxpy_params |
Dict[str, Parameter]
|
Dict mapping user parameter names to CVXPy Parameter objects |
algebraic_prop |
Optional[Dict[str, Callable]]
|
Dict mapping output names to vmapped JAX functions (evaluated, not integrated) |
Example
After lowering a symbolic problem::
solver = CVXPySolver()
lowered = lower_symbolic_problem(problem, solver, settings)
# Access components
dx_dt = lowered.dynamics.f(x, u, node, params)
jacobian_A = lowered.dynamics.A(x, u, node, params)
# Solver owns CVXPy variables
ocp_vars = solver.ocp_vars