sleipnirgroup-jormungandr 0.6.7.dev30__tar.gz → 0.6.7.dev32__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.
Potentially problematic release.
This version of sleipnirgroup-jormungandr might be problematic. Click here for more details.
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/PKG-INFO +1 -1
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/util/feasibility_restoration.hpp +18 -4
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/src/sleipnir/__init__.py +1 -1
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/nonlinear_problem_test.py +14 -6
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/CMakeLists.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/LICENSE.txt +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/README.md +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/SleipnirConfig.cmake.in +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/cmake/BuildTypes.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/cmake/CompilerFlags.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/cmake/Pybind11Mkdoc.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/cmake/SubdirList.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/cmake/arm-none-eabi.cmake +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/autodiff/expression.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/autodiff/expression_graph.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/autodiff/expression_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/autodiff/gradient.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/autodiff/hessian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/autodiff/jacobian.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/autodiff/sleipnir_base.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/autodiff/slice.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/autodiff/variable.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/autodiff/variable_block.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/autodiff/variable_matrix.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/multistart.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/ocp/dynamics_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/ocp/timestep_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/ocp/transcription_method.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/ocp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/problem.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/exit_status.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/ipm.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/ipm_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/iteration_info.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/newton.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/newton_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/options.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/sqp.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/sqp_matrix_callbacks.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/util/all_finite.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/util/append_as_triplets.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/util/bounds.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/util/dense_kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/util/filter.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/util/fraction_to_the_boundary_rule.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/util/inertia.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/util/kkt_error.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/util/kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/util/lagrange_multiplier_estimate.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/util/problem_scaling.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/util/sparse_inf_norms.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/optimization/solver/util/sparse_kkt_solver.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/util/assert.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/util/concepts.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/util/empty.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/util/function_ref.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/util/intrusive_shared_ptr.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/util/pool.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/util/print.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/util/print_diagnostics.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/util/profiler.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/util/scope_exit.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/util/spy.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/include/sleipnir/util/symbol_exports.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/pyproject.toml +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/autodiff/bind_expression_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/autodiff/bind_gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/autodiff/bind_hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/autodiff/bind_jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/autodiff/bind_variable.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/autodiff/bind_variable_block.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/autodiff/bind_variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/binders.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/docstrings.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/for_each_type.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/main.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/optimization/bind_equality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/optimization/bind_inequality_constraints.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/optimization/bind_ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/optimization/bind_problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/optimization/ocp/bind_dynamics_type.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/optimization/ocp/bind_timestep_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/optimization/ocp/bind_transcription_method.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/optimization/solver/bind_exit_status.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/optimization/solver/bind_iteration_info.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/try_cast.hpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/src/sleipnir/autodiff/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/src/sleipnir/optimization/__init__.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/autodiff/gradient_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/autodiff/hessian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/autodiff/jacobian_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/autodiff/variable_matrix_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/autodiff/variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/arm_on_elevator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/cart_pole_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/cart_pole_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/cart_pole_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/constraints_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/decision_variable_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/differential_drive_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/differential_drive_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/differential_drive_util.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/double_integrator_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/flywheel_ocp_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/flywheel_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/linear_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/multistart_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/near.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/problem_spy_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/quadratic_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/rk4.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/solver/exit_status_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/test/optimization/trivial_problem_test.py +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/src/autodiff/gradient.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/src/autodiff/hessian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/src/autodiff/jacobian.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/src/autodiff/variable_matrix.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/src/optimization/ocp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/src/optimization/problem.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/src/optimization/solver/ipm.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/src/optimization/solver/newton.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/src/optimization/solver/sqp.cpp +0 -0
- {sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/src/util/pool.cpp +0 -0
|
@@ -634,12 +634,22 @@ ExitStatus feasibility_restoration(
|
|
|
634
634
|
fr_x, fr_s, fr_y, fr_z, fr_μ, iterations);
|
|
635
635
|
|
|
636
636
|
x = fr_x.segment(0, x.rows());
|
|
637
|
-
s = fr_s.segment(0, s.rows());
|
|
638
637
|
|
|
639
638
|
if (status == ExitStatus::CALLBACK_REQUESTED_STOP) {
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
639
|
+
// Re-center the slacks on the original constraints cᵢ(x) if they're
|
|
640
|
+
// sufficiently feasible, and on 1 otherwise.
|
|
641
|
+
//
|
|
642
|
+
// We can't use the slacks of cᵢ(x) − pᵢ + nᵢ ≥ 0 because feasibility
|
|
643
|
+
// restoration's barrier parameter fr_μ drives them toward 0 independently
|
|
644
|
+
// of the original problem's barrier parameter μ. Slacks much smaller than μ
|
|
645
|
+
// make Σ = S⁻¹Z and μS⁻¹e very large, which causes very large dual steps
|
|
646
|
+
// after returning.
|
|
647
|
+
const DenseVector c_i = matrices.c_i(x);
|
|
648
|
+
s = (c_i.array() >= Scalar(1e-2)).select(c_i, Scalar(1));
|
|
649
|
+
|
|
650
|
+
const SparseVector g = matrices.g(x);
|
|
651
|
+
const SparseMatrix A_e = matrices.A_e(x);
|
|
652
|
+
const SparseMatrix A_i = matrices.A_i(x);
|
|
643
653
|
|
|
644
654
|
auto [y_estimate, z_estimate] =
|
|
645
655
|
lagrange_multiplier_estimate(g, A_e, A_i, s, μ);
|
|
@@ -654,6 +664,9 @@ ExitStatus feasibility_restoration(
|
|
|
654
664
|
// infeasibility anywhere else risks false positives (e.g., a
|
|
655
665
|
// point-in-time test can reject iterates the solver would otherwise
|
|
656
666
|
// escape). See section 3.3, p. 14 of [2].
|
|
667
|
+
|
|
668
|
+
s = fr_s.segment(0, s.rows());
|
|
669
|
+
|
|
657
670
|
DenseVector c_e = matrices.c_e(x);
|
|
658
671
|
if (matrices.scaling.c_e.size() > 0) {
|
|
659
672
|
c_e = matrices.scaling.c_e.cwiseInverse().cwiseProduct(c_e);
|
|
@@ -688,6 +701,7 @@ ExitStatus feasibility_restoration(
|
|
|
688
701
|
|
|
689
702
|
return ExitStatus::FEASIBILITY_RESTORATION_FAILED;
|
|
690
703
|
} else {
|
|
704
|
+
s = fr_s.segment(0, s.rows());
|
|
691
705
|
return ExitStatus::FEASIBILITY_RESTORATION_FAILED;
|
|
692
706
|
}
|
|
693
707
|
}
|
|
@@ -124,7 +124,9 @@ def test_conflicting_bounds():
|
|
|
124
124
|
|
|
125
125
|
|
|
126
126
|
def test_wachter_and_biegler_line_search_failure():
|
|
127
|
-
#
|
|
127
|
+
# Example 19.2 of [1] exercises a deficiency of line search IPMs that must
|
|
128
|
+
# be overcome by feasibility restoration. Depending on the specific
|
|
129
|
+
# trajectory taken, either success or local infeasibility are expected.
|
|
128
130
|
#
|
|
129
131
|
# [1] Nocedal, J. and Wright, S. "Numerical Optimization", 2nd. ed., Ch. 19.
|
|
130
132
|
# Springer, 2006.
|
|
@@ -147,8 +149,14 @@ def test_wachter_and_biegler_line_search_failure():
|
|
|
147
149
|
assert problem.equality_constraint_type() == ExpressionType.QUADRATIC
|
|
148
150
|
assert problem.inequality_constraint_type() == ExpressionType.LINEAR
|
|
149
151
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
152
|
+
status = problem.solve(diagnostics=True)
|
|
153
|
+
assert status in (ExitStatus.SUCCESS, ExitStatus.LOCALLY_INFEASIBLE)
|
|
154
|
+
|
|
155
|
+
if status == ExitStatus.SUCCESS:
|
|
156
|
+
assert x.value() == pytest.approx(1.0, abs=1e-6)
|
|
157
|
+
assert s1.value() == pytest.approx(0.0, abs=1e-6)
|
|
158
|
+
assert s2.value() == pytest.approx(0.5, abs=1e-6)
|
|
159
|
+
else:
|
|
160
|
+
assert x.value() == pytest.approx(-1.0, abs=1e-6)
|
|
161
|
+
assert s1.value() == pytest.approx(0.0, abs=1e-6)
|
|
162
|
+
assert s2.value() == pytest.approx(0.0, abs=3e-5)
|
{sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/CMakeLists.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/python/cpp/main.cpp
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{sleipnirgroup_jormungandr-0.6.7.dev30 → sleipnirgroup_jormungandr-0.6.7.dev32}/src/util/pool.cpp
RENAMED
|
File without changes
|