openscvx 0.4.1.dev4__tar.gz → 0.4.1.dev10__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (267) hide show
  1. {openscvx-0.4.1.dev4/openscvx.egg-info → openscvx-0.4.1.dev10}/PKG-INFO +1 -1
  2. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/_version.py +3 -3
  3. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/problem.py +128 -1
  4. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10/openscvx.egg-info}/PKG-INFO +1 -1
  5. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/.github/assets/logo.svg +0 -0
  6. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/.github/release-drafter.yml +0 -0
  7. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/.github/workflows/_docs.yml +0 -0
  8. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/.github/workflows/branch-name.yml +0 -0
  9. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/.github/workflows/docs.yml +0 -0
  10. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/.github/workflows/lint.yml +0 -0
  11. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/.github/workflows/nightly.yml +0 -0
  12. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/.github/workflows/release-drafter.yml +0 -0
  13. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/.github/workflows/release.yml +0 -0
  14. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/.github/workflows/tests-integration.yml +0 -0
  15. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/.github/workflows/tests-unit.yml +0 -0
  16. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/.gitignore +0 -0
  17. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/CONTRIBUTING.md +0 -0
  18. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/LICENSE +0 -0
  19. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/README.md +0 -0
  20. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/Foundations/constraint_reformulation.md +0 -0
  21. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/Foundations/control_parameterization.md +0 -0
  22. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/Foundations/discretization.md +0 -0
  23. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/Foundations/ocp.md +0 -0
  24. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/Foundations/scvx.md +0 -0
  25. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/Foundations/time_dilation.md +0 -0
  26. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/UnderTheHood/lowering_architecture.md +0 -0
  27. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/UnderTheHood/vectorization_and_vmapping.md +0 -0
  28. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/UsersGuide/00_introduction.md +0 -0
  29. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/UsersGuide/01_hello_world_brachistochrone.md +0 -0
  30. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/UsersGuide/02_drone_racing_constraints.md +0 -0
  31. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/UsersGuide/03_obstacle_avoidance_vmap.md +0 -0
  32. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/UsersGuide/04_viewpoint_constraints.md +0 -0
  33. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/UsersGuide/05_visualization.md +0 -0
  34. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/UsersGuide/06_logic.md +0 -0
  35. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/UsersGuide/07_lie.md +0 -0
  36. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/assets/favicon.png +0 -0
  37. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/assets/images/ct-scvx_dark.png +0 -0
  38. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/assets/images/ct-scvx_light.png +0 -0
  39. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/assets/images/ctcs_dark.png +0 -0
  40. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/assets/images/ctcs_light.png +0 -0
  41. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/assets/images/problem_class_dark.png +0 -0
  42. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/assets/images/problem_class_light.png +0 -0
  43. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/assets/logo.svg +0 -0
  44. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/citation.md +0 -0
  45. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/examples.md +0 -0
  46. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/getting-started.md +0 -0
  47. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/index.md +0 -0
  48. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/docs/javascripts/mathjax.js +0 -0
  49. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/abstract/brachistochrone.py +0 -0
  50. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/arm/three_link_arm.py +0 -0
  51. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/car/dubins_car.py +0 -0
  52. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/car/dubins_car_conditional.py +0 -0
  53. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/car/dubins_car_disjoint.py +0 -0
  54. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/car/dubins_car_stljax.py +0 -0
  55. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/drone/cinema_vp.py +0 -0
  56. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/drone/dr_double_integrator.py +0 -0
  57. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/drone/dr_vp.py +0 -0
  58. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/drone/dr_vp_nodal.py +0 -0
  59. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/drone/dr_vp_polytope.py +0 -0
  60. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/drone/drone_racing.py +0 -0
  61. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/drone/obstacle_avoidance.py +0 -0
  62. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/drone/obstacle_avoidance_nodal.py +0 -0
  63. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/drone/obstacle_avoidance_vmap.py +0 -0
  64. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/plotting.py +0 -0
  65. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/plotting_viser.py +0 -0
  66. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/realtime/base_problems/cinema_vp_realtime_base.py +0 -0
  67. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/realtime/base_problems/drone_racing_realtime_base.py +0 -0
  68. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/realtime/base_problems/obstacle_avoidance_realtime_base.py +0 -0
  69. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/realtime/cinema_vp_realtime.py +0 -0
  70. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/realtime/drone_racing_realtime.py +0 -0
  71. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/realtime/dubins_car_realtime.py +0 -0
  72. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/realtime/obstacle_avoidance_realtime.py +0 -0
  73. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/rocket/3DoF_pdg.py +0 -0
  74. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/examples/spacecraft/proxops_cw.py +0 -0
  75. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/figures/ctlos_cine.gif +0 -0
  76. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/figures/ctlos_dr.gif +0 -0
  77. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/figures/dtlos_cine.gif +0 -0
  78. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/figures/dtlos_dr.gif +0 -0
  79. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/figures/openscvx_logo.svg +0 -0
  80. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/figures/openscvx_logo_square.png +0 -0
  81. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/figures/oscvx_structure_full_dark.svg +0 -0
  82. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/figures/video_preview.png +0 -0
  83. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/__init__.py +0 -0
  84. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/1-background.avif +0 -0
  85. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/1-background@1x.avif +0 -0
  86. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/1-background@2x.avif +0 -0
  87. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/1-background@3x.avif +0 -0
  88. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/1-background@4x.avif +0 -0
  89. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/2-mars.avif +0 -0
  90. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/2-mars@1x.avif +0 -0
  91. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/2-mars@2x.avif +0 -0
  92. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/2-mars@3x.avif +0 -0
  93. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/2-mars@4x.avif +0 -0
  94. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/3-moon.avif +0 -0
  95. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/3-moon@1x.avif +0 -0
  96. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/3-moon@2x.avif +0 -0
  97. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/3-moon@3x.avif +0 -0
  98. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/3-moon@4x.avif +0 -0
  99. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/4-sat1.avif +0 -0
  100. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/4-sat1@1x.avif +0 -0
  101. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/4-sat1@2x.avif +0 -0
  102. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/4-sat1@3x.avif +0 -0
  103. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/4-sat1@4x.avif +0 -0
  104. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/5-space.avif +0 -0
  105. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/5-space@1x.avif +0 -0
  106. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/5-space@2x.avif +0 -0
  107. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/5-space@3x.avif +0 -0
  108. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/5-space@4x.avif +0 -0
  109. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/6-earth.avif +0 -0
  110. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/6-earth@1x.avif +0 -0
  111. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/6-earth@2x.avif +0 -0
  112. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/6-earth@3x.avif +0 -0
  113. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/images/layers/6-earth@4x.avif +0 -0
  114. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/javascripts/parallax.js +0 -0
  115. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/logo.svg +0 -0
  116. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/stylesheets/custom.css +0 -0
  117. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/assets/stylesheets/parallax.css +0 -0
  118. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/home.html +0 -0
  119. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/main.html +0 -0
  120. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/partials/parallax/hero.html +0 -0
  121. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/material/overrides/partials/parallax.html +0 -0
  122. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/mkdocs.yml +0 -0
  123. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/__init__.py +0 -0
  124. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/algorithms/__init__.py +0 -0
  125. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/algorithms/autotuning.py +0 -0
  126. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/algorithms/base.py +0 -0
  127. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/algorithms/optimization_results.py +0 -0
  128. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/algorithms/penalized_trust_region.py +0 -0
  129. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/config.py +0 -0
  130. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/discretization/__init__.py +0 -0
  131. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/discretization/discretization.py +0 -0
  132. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/expert/__init__.py +0 -0
  133. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/expert/byof.py +0 -0
  134. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/expert/lowering.py +0 -0
  135. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/expert/validation.py +0 -0
  136. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/init/__init__.py +0 -0
  137. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/init/interpolation.py +0 -0
  138. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/integrators/__init__.py +0 -0
  139. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/integrators/runge_kutta.py +0 -0
  140. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/lowered/__init__.py +0 -0
  141. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/lowered/cvxpy_constraints.py +0 -0
  142. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/lowered/cvxpy_variables.py +0 -0
  143. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/lowered/dynamics.py +0 -0
  144. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/lowered/jax_constraints.py +0 -0
  145. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/lowered/parameters.py +0 -0
  146. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/lowered/problem.py +0 -0
  147. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/lowered/unified.py +0 -0
  148. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/plotting/__init__.py +0 -0
  149. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/plotting/plotting.py +0 -0
  150. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/plotting/scp_iteration.py +0 -0
  151. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/plotting/viser/__init__.py +0 -0
  152. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/plotting/viser/animated.py +0 -0
  153. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/plotting/viser/plotly_integration.py +0 -0
  154. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/plotting/viser/primitives.py +0 -0
  155. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/plotting/viser/scp.py +0 -0
  156. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/plotting/viser/server.py +0 -0
  157. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/propagation/__init__.py +0 -0
  158. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/propagation/post_processing.py +0 -0
  159. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/propagation/propagation.py +0 -0
  160. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/solvers/__init__.py +0 -0
  161. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/solvers/base.py +0 -0
  162. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/solvers/ptr_solver.py +0 -0
  163. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/__init__.py +0 -0
  164. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/augmentation.py +0 -0
  165. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/builder.py +0 -0
  166. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/constraint_set.py +0 -0
  167. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/__init__.py +0 -0
  168. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/arithmetic.py +0 -0
  169. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/array.py +0 -0
  170. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/constraint.py +0 -0
  171. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/control.py +0 -0
  172. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/expr.py +0 -0
  173. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/lie/__init__.py +0 -0
  174. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/lie/adjoint.py +0 -0
  175. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/lie/se3.py +0 -0
  176. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/lie/so3.py +0 -0
  177. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/linalg.py +0 -0
  178. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/logic.py +0 -0
  179. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/math.py +0 -0
  180. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/spatial.py +0 -0
  181. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/state.py +0 -0
  182. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/stl.py +0 -0
  183. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/variable.py +0 -0
  184. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/expr/vmap.py +0 -0
  185. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/hashing.py +0 -0
  186. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lower.py +0 -0
  187. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/__init__.py +0 -0
  188. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/cvxpy/__init__.py +0 -0
  189. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/cvxpy/_lowerer.py +0 -0
  190. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/cvxpy/_registry.py +0 -0
  191. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/cvxpy/arithmetic.py +0 -0
  192. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/cvxpy/array.py +0 -0
  193. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/cvxpy/constraint.py +0 -0
  194. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/cvxpy/control.py +0 -0
  195. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/cvxpy/expr.py +0 -0
  196. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/cvxpy/linalg.py +0 -0
  197. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/cvxpy/logic.py +0 -0
  198. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/cvxpy/math.py +0 -0
  199. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/cvxpy/state.py +0 -0
  200. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/__init__.py +0 -0
  201. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/_lowerer.py +0 -0
  202. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/_registry.py +0 -0
  203. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/arithmetic.py +0 -0
  204. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/array.py +0 -0
  205. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/constraint.py +0 -0
  206. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/control.py +0 -0
  207. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/expr.py +0 -0
  208. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/lie.py +0 -0
  209. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/linalg.py +0 -0
  210. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/logic.py +0 -0
  211. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/math.py +0 -0
  212. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/spatial.py +0 -0
  213. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/state.py +0 -0
  214. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/stl.py +0 -0
  215. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/lowerers/jax/vmap.py +0 -0
  216. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/preprocessing.py +0 -0
  217. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/problem.py +0 -0
  218. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/time.py +0 -0
  219. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/symbolic/unified.py +0 -0
  220. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/utils/__init__.py +0 -0
  221. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/utils/cache.py +0 -0
  222. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/utils/caching.py +0 -0
  223. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/utils/printing.py +0 -0
  224. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/utils/profiling.py +0 -0
  225. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx/utils/utils.py +0 -0
  226. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx.egg-info/SOURCES.txt +0 -0
  227. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx.egg-info/dependency_links.txt +0 -0
  228. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx.egg-info/requires.txt +0 -0
  229. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/openscvx.egg-info/top_level.txt +0 -0
  230. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/pyproject.toml +0 -0
  231. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/scripts/gen_example_pages.py +0 -0
  232. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/scripts/gen_ref_pages.py +0 -0
  233. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/setup.cfg +0 -0
  234. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/__init__.py +0 -0
  235. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/brachistochrone_analytical.py +0 -0
  236. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/__init__.py +0 -0
  237. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/__init__.py +0 -0
  238. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/test_arithmetic.py +0 -0
  239. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/test_array.py +0 -0
  240. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/test_constraint.py +0 -0
  241. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/test_expr.py +0 -0
  242. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/test_lie.py +0 -0
  243. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/test_linalg.py +0 -0
  244. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/test_logic.py +0 -0
  245. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/test_math.py +0 -0
  246. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/test_node_reference.py +0 -0
  247. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/test_parameters.py +0 -0
  248. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/test_scaling.py +0 -0
  249. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/test_spatial.py +0 -0
  250. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/test_variable.py +0 -0
  251. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/expr/test_vmap.py +0 -0
  252. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/test_augmentation.py +0 -0
  253. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/test_hashing.py +0 -0
  254. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/test_lower_cvxpy.py +0 -0
  255. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/test_lower_jax.py +0 -0
  256. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/test_preprocessing.py +0 -0
  257. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/symbolic/test_unified.py +0 -0
  258. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/test_autotuning.py +0 -0
  259. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/test_brachistochrone.py +0 -0
  260. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/test_cvxpygen_optional.py +0 -0
  261. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/test_discretization.py +0 -0
  262. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/test_examples.py +0 -0
  263. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/test_expert.py +0 -0
  264. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/test_init.py +0 -0
  265. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/test_integrators.py +0 -0
  266. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/test_plotting.py +0 -0
  267. {openscvx-0.4.1.dev4 → openscvx-0.4.1.dev10}/tests/test_propagation.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openscvx
3
- Version: 0.4.1.dev4
3
+ Version: 0.4.1.dev10
4
4
  Summary: A general Python-based successive convexification implementation which uses a JAX backend.
5
5
  Author-email: Chris Hayner and Griffin Norris <haynec@uw.edu>
6
6
  License: Apache Software License
@@ -28,7 +28,7 @@ version_tuple: VERSION_TUPLE
28
28
  commit_id: COMMIT_ID
29
29
  __commit_id__: COMMIT_ID
30
30
 
31
- __version__ = version = '0.4.1.dev4'
32
- __version_tuple__ = version_tuple = (0, 4, 1, 'dev4')
31
+ __version__ = version = '0.4.1.dev10'
32
+ __version_tuple__ = version_tuple = (0, 4, 1, 'dev10')
33
33
 
34
- __commit_id__ = commit_id = 'gf4ee3b8ca'
34
+ __commit_id__ = commit_id = 'gb6a70b8ee'
@@ -264,11 +264,115 @@ class Problem:
264
264
 
265
265
  def _sync_parameters(self):
266
266
  """Sync all parameter values to CVXPy parameters."""
267
+ if self._lowered is None:
268
+ return
269
+
267
270
  if self._lowered.cvxpy_params is not None:
268
271
  for name, value in self._parameter_wrapper.items():
269
272
  if name in self._lowered.cvxpy_params:
270
273
  self._lowered.cvxpy_params[name].value = value
271
274
 
275
+ def _sync_boundary_conditions(self):
276
+ """Sync boundary conditions from State objects to lowered representation.
277
+
278
+ This method reads the current `.initial` and `.final` values and types
279
+ from the original State objects and updates both the unified state
280
+ representation and the CVXPy solver parameters. This enables workflows
281
+ where initial conditions change between solves.
282
+
283
+ Note:
284
+ Safe to call before initialize() - it will simply do nothing.
285
+ """
286
+ if self._lowered is None:
287
+ return
288
+
289
+ # Sync initial/final values and types from State objects to optimization unified
290
+ # representation
291
+ for state in self.symbolic.states:
292
+ if state.initial is not None:
293
+ self._lowered.x_unified.initial[state._slice] = state.initial
294
+ self._lowered.x_unified.initial_type[state._slice] = state.initial_type
295
+ if state.final is not None:
296
+ self._lowered.x_unified.final[state._slice] = state.final
297
+ self._lowered.x_unified.final_type[state._slice] = state.final_type
298
+
299
+ # Sync initial/final values and types to propagation unified representation
300
+ # (states_prop includes optimization states, so we sync those too)
301
+ for state in self.symbolic.states_prop:
302
+ if state.initial is not None:
303
+ self._lowered.x_prop_unified.initial[state._slice] = state.initial
304
+ self._lowered.x_prop_unified.initial_type[state._slice] = state.initial_type
305
+ if state.final is not None:
306
+ self._lowered.x_prop_unified.final[state._slice] = state.final
307
+ self._lowered.x_prop_unified.final_type[state._slice] = state.final_type
308
+
309
+ # Update CVXPy solver parameters (only if solver is initialized)
310
+ if self._solver._problem is not None:
311
+ self._solver.update_boundary_conditions(
312
+ x_init=self._lowered.x_unified.initial,
313
+ x_term=self._lowered.x_unified.final,
314
+ )
315
+
316
+ def _sync_guesses(self):
317
+ """Sync trajectory guesses from State/Control objects to lowered representation.
318
+
319
+ This method reads the current `.guess` values from the original State and
320
+ Control objects and updates the unified representations. This enables warm-starting
321
+ workflows where the initial trajectory guess is updated between solves (e.g., shifting
322
+ the previous solution).
323
+
324
+ Note:
325
+ This only updates the unified representation. The AlgorithmState is
326
+ created from these values in reset() or initialize(), so this must
327
+ be called before those methods to take effect.
328
+ """
329
+ if self._lowered is None:
330
+ return
331
+
332
+ # Sync optimization state guesses
333
+ for state in self.symbolic.states:
334
+ if state.guess is not None:
335
+ self._lowered.x_unified.guess[:, state._slice] = state.guess
336
+
337
+ # Sync propagation state guesses (includes optimization states)
338
+ for state in self.symbolic.states_prop:
339
+ if state.guess is not None:
340
+ self._lowered.x_prop_unified.guess[:, state._slice] = state.guess
341
+
342
+ # Sync control guesses
343
+ for control in self.symbolic.controls:
344
+ if control.guess is not None:
345
+ self._lowered.u_unified.guess[:, control._slice] = control.guess
346
+
347
+ def sync(self):
348
+ """Sync parameters and boundary conditions to the solver.
349
+
350
+ Call this after modifying State.initial/final or parameters when using
351
+ step() without reset(). This allows warm-starting from the previous
352
+ solution while updating problem data.
353
+
354
+ Note:
355
+ This is automatically called by solve() and reset(). Only needed
356
+ when using step() directly with modified parameters or boundary
357
+ conditions between iterations.
358
+
359
+ Example:
360
+ MPC with warm-starting::
361
+
362
+ problem.initialize()
363
+ while running:
364
+ # Update initial condition from measurement
365
+ pos.initial = measured_state
366
+ problem.sync() # Sync without resetting algorithm state
367
+
368
+ # Continue from previous solution (warm-start)
369
+ for _ in range(max_iters):
370
+ if problem.step()["converged"]:
371
+ break
372
+ """
373
+ self._sync_parameters()
374
+ self._sync_boundary_conditions()
375
+
272
376
  @property
273
377
  def state(self) -> Optional[AlgorithmState]:
274
378
  """Access the current solver state.
@@ -543,6 +647,10 @@ class Problem:
543
647
  Creates fresh AlgorithmState while preserving compiled dynamics and solvers.
544
648
  Use this to run multiple optimizations without re-initializing.
545
649
 
650
+ This method automatically syncs:
651
+ - Trajectory guesses from State/Control `.guess` attributes
652
+ - Boundary conditions from State `.initial` and `.final` attributes
653
+
546
654
  Raises:
547
655
  ValueError: If initialize() has not been called yet.
548
656
 
@@ -554,10 +662,28 @@ class Problem:
554
662
  result1 = problem.step()
555
663
  problem.reset()
556
664
  result2 = problem.solve() # Fresh run with same setup
665
+
666
+ MPC with warm-starting from previous solution::
667
+
668
+ for measured_state in measurements:
669
+ # Update initial condition
670
+ pos.initial = measured_state[:3]
671
+
672
+ # Warm-start: shift previous solution as new guess
673
+ pos.guess = np.roll(prev_result.nodes["pos"], -1, axis=0)
674
+
675
+ problem.reset() # Syncs guesses and boundary conditions
676
+ result = problem.solve()
557
677
  """
558
678
  if self._compiled_dynamics is None:
559
679
  raise ValueError("Problem has not been initialized. Call initialize() first")
560
680
 
681
+ # Sync guesses from State/Control objects (must happen before AlgorithmState creation)
682
+ self._sync_guesses()
683
+
684
+ # Sync boundary conditions from State objects
685
+ self._sync_boundary_conditions()
686
+
561
687
  # Create fresh solver state from settings
562
688
  self._state = AlgorithmState.from_settings(self.settings)
563
689
 
@@ -619,8 +745,9 @@ class Problem:
619
745
  OptimizationResults with trajectory and convergence info
620
746
  (call post_process() for full propagation)
621
747
  """
622
- # Sync parameters before solving
748
+ # Sync parameters and boundary conditions before solving
623
749
  self._sync_parameters()
750
+ self._sync_boundary_conditions()
624
751
 
625
752
  required = [
626
753
  self._compiled_dynamics,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openscvx
3
- Version: 0.4.1.dev4
3
+ Version: 0.4.1.dev10
4
4
  Summary: A general Python-based successive convexification implementation which uses a JAX backend.
5
5
  Author-email: Chris Hayner and Griffin Norris <haynec@uw.edu>
6
6
  License: Apache Software License
File without changes
File without changes
File without changes
File without changes