-
Notifications
You must be signed in to change notification settings - Fork 280
Comparing changes
Open a pull request
base repository: acados/acados
base: v0.3.4
head repository: acados/acados
compare: v0.3.5
- 20 commits
- 112 files changed
- 6 contributors
Commits on Jul 18, 2024
-
This PR implements a new globalization method that is based on a funnel. It can be used by setting the option `globalization` to `FUNNEL_L1PEN_LINESEARCH` and is detailed below. In addition, the PR contains the following general new options: - `eval_residual_at_max_iter`: boolean that decides if the residuals (and function and derivatives) will be evaluated in the last iteration. The previous behavior of the SQP method is to _not_ evaluate again at max iter. For the funnel methode, the default is true. - `nlp_solver_tol_min_step_norm`: If this option is set to a value larger than zero, the solver will terminate if a step size smaller than the given value is encountered. ## Funnel method A funnel method can be seen as a simplification of a filter method that can achieve similar performance in terms of robustness. The implemented algorithm uses a line search for step size determination. Additionally, a penalty phase is implemented that should handle infeasible subproblems similiarly to a feasibility restoration as, e.g., implemented in IPOPT. The work on the funnel is subject of current research. Therefore, we are currently working on an article that describes the algorithm in detail. This PR includes the following features: - new globalization strategy based on a funnel: The funnel is an upper bound on constraint violation, that drives globalization. In case no progress can be made, a penalty phase is incorporated that avoids a feasibility restoration phase. - an improvement of the termination criterion. Unbounded problems can be detected, as well as when the algorithm converges to suboptimal point and the step size goes below a given threshold. - The iteration output for the `FUNNEL_L1PEN_LINESEARCH` includes more data about the globalization parameters. - The current `FUNNEL_L1PEN_LINESEARCH` globalization is tested on feasibility problems and on some simple OCPs. The following new funnel related options are added: - `funnel_initialization_increase_factor`: initialization of funnel width: `max(funnel_initialization_upper_bound, funnel_initialization_increase_factor * initial_infeasibility)` - `funnel_initialization_upper_bound`: see line above - `funnel_sufficient_decrease_factor`: h-type steps need to declare sufficient decrease in constraint violation wrt funnel - `funnel_kappa`: convex combination factor for funnel decrease function - `funnel_fraction_switching_condition`: fraction in switching condition used for distinguishing between f and h steps - `funnel_initial_penalty_parameter`: initialization of penalty parameter, used in penalty phase that replaces a feasibility restoration. This penalty parameter will later be used in l1 relaxation. Disclaimer: The current funnel implementation is still preliminary. For example, infeasible QPs cannot be handled yet which can mitigate the convergence behavior of certain problems. --------- Co-authored-by: Jonathan Frey <jonathanpaulfrey@gmail.com> Co-authored-by: sandmaennchen <katrin.baumgaertner@posteo.de>
Configuration menu - View commit details
-
Copy full SHA for 95ac718 - Browse repository at this point
Copy the full SHA 95ac718View commit details
Commits on Jul 19, 2024
-
Align python and MATLAB classes for problem formulation (#1160)
This PR is a first step towards aligning the MATLAB interface with the python interface. python changes: - new attributes `dyn_impl_dae_fun_jac`, `dyn_impl_dae_jac`, `dyn_impl_dae_fun` in the `AcadosModel` for generic external implicit dynamics - new attribute `nlp_solver_warm_start_first_qp` in `AcadosOptions` MATLAB changes: - Renaming of internal classes `acados_<...>_json` to match corresponding python class `Acados...` - lots of option defaults added which are already available in python - remove `rti_phase` in formulation object, as it only makes sense to change this online
Configuration menu - View commit details
-
Copy full SHA for edeba2e - Browse repository at this point
Copy the full SHA edeba2eView commit details
Commits on Jul 22, 2024
-
Fix external casadi functions with sparse parameter definitions, remo…
…ve unused memory, add tests (#1162) - fix: `external_function_param_casadi` class for the case when the parameters are not a dense vector. This is still not recommended - removed unused memory requirement of `np` in `external_function_param_casadi`. - added static functions `d_cvt_ext_fun_arg_to_casadi`, `d_cvt_casadi_to_ext_fun_arg` to avoid code duplication Tests: - added `examples/acados_python/tests/sparse_param_test.py` - improved test of parametric OCP formulation --------- Co-authored-by: sandmaennchen <katrin.baumgaertner@posteo.de>
Configuration menu - View commit details
-
Copy full SHA for d0af625 - Browse repository at this point
Copy the full SHA d0af625View commit details
Commits on Jul 23, 2024
-
Stagewise parameter values for OCP NLP solver (#1163)
Previously parameter values could be set function wise and stage wise. - add external function classes: `external_function_external_param_casadi`, `external_function_external_param_generic`. These classes contain a pointer to the parameter values instead of a memory. - Adjust OCP solver templates (single- and multi-phase) to use the new classes. - Parameter vectors are now only stored once per stage in `ocp_nlp_in` This allows to update parameters faster and lowers memory footprint. Moreover, it will be possible to get parameter values which allows to perform tests on parameters and more. - Integrator not changes (yet). Benefit is that `external_function_param_casadi` is still tested.
Configuration menu - View commit details
-
Copy full SHA for e7993ec - Browse repository at this point
Copy the full SHA e7993ecView commit details -
Configuration menu - View commit details
-
Copy full SHA for 90607d1 - Browse repository at this point
Copy the full SHA 90607d1View commit details
Commits on Jul 24, 2024
-
Detect Nan and Inf in merit function based line search (#1166)
This PR adds Nan and Inf detection in merit function based line search. If Nan/inf is encountered during the evaluation of the merit function, the step size is decreased. If Nan/inf is encountered during the early termination check, no second-order corrections are performed. Follow-up: backtrack if new linearization results in NaN or infeasible QP.
Configuration menu - View commit details
-
Copy full SHA for fc14fb1 - Browse repository at this point
Copy the full SHA fc14fb1View commit details
Commits on Jul 25, 2024
-
Merit backtracking cleanup (#1167)
- split into functions - separate function for preliminary line search before SOC - reset merit function weights when doing SOC. This is the only change affecting the behavior of the algorithm in this PR. - adjusted test to account for point above.
Configuration menu - View commit details
-
Copy full SHA for 83bc553 - Browse repository at this point
Copy the full SHA 83bc553View commit details -
- use `OSQP_INFITY` - comments on how to export QP for Gianluca - improve example
Configuration menu - View commit details
-
Copy full SHA for 8109937 - Browse repository at this point
Copy the full SHA 8109937View commit details
Commits on Jul 26, 2024
-
MATLAB: Code generation of CasADi functions based on
AcadosOcp
/`Aca……dosSim` (#1170) This PR changes the code generation of CasADi functions in MATLAB such that it is solely based on the OCP description used of the template interface, i.e. `AcadosOcp`. Similar for integrators where only `AcadosSim` is used for code generation.
Configuration menu - View commit details
-
Copy full SHA for 29b3a4e - Browse repository at this point
Copy the full SHA 29b3a4eView commit details -
Progress maximization example in 3D using the Frenet-Serret Formulas. Dimensions: nx : 20, nu : 4, nh : 1, N : 50 Solver : HPIPM Integrator : Explicit RK4 --------- Co-authored-by: akash <subasha@informatik.uni-freiburg.de>
Configuration menu - View commit details
-
Copy full SHA for cb24233 - Browse repository at this point
Copy the full SHA cb24233View commit details
Commits on Jul 29, 2024
-
Matlab QP conditioning (#1172)
- SQP & DDP: move regularize before check_termination, such that we can get the QP at the stationary point that is actually solved, if we exit with success. - MEX: add functions `dump_last_qp_to_json`, `qp_diagnostics` --------- Co-authored-by: sandmaennchen <katrin.baumgaertner@posteo.de>
Configuration menu - View commit details
-
Copy full SHA for 239754c - Browse repository at this point
Copy the full SHA 239754cView commit details -
Configuration menu - View commit details
-
Copy full SHA for c4859e8 - Browse repository at this point
Copy the full SHA c4859e8View commit details
Commits on Jul 30, 2024
-
Sparse parame 10000 ter update in Matlab and parameter getters (#1176)
- added functionality in Matlab interface: `ocp_solver.set_params_sparse(idx_values, new_p_values, stage);`. This updates the parameters with indices `idx_values` (0 based) at `stage` with the new values `new_p_values`. - Added getters for parameter values `p` in Matlab and Python. - Tests for parameter setters are added, both in Matlab and Python.
Configuration menu - View commit details
-
Copy full SHA for cb6af30 - Browse repository at this point
Copy the full SHA cb6af30View commit details
Commits on Jul 31, 2024
-
Hotfix sparse parameter setter Matlab for empty parameter and MSVC co…
…mpiler (#1178) - empty array does not work with some compilers - nothing has to be set if parameter vector is empty, thus added if in template - reported in https://discourse.acados.org/t/minimal-example-ocp-m-error/1702 - introduced in #1176
Configuration menu - View commit details
-
Copy full SHA for 099cc83 - Browse repository at this point
Copy the full SHA 099cc83View commit details
Commits on Aug 1, 2024
-
Update docs build requirements (#1179)
Dependabot was sending mails about known security vulnerabilities detected in the dependency Jinja2 Version < 3.1.4
Configuration menu - View commit details
-
Copy full SHA for 3ee6aa6 - Browse repository at this point
Copy the full SHA 3ee6aa6View commit details -
Simulink sparse parameter update and testing (#1177)
- Simulink: add possible output `parameter_traj`, for testing - test setting and getting parameters in Simulink in `simulink_param_test` - add function `add_sparse_param_port_simulink(simulink_opts, idx_p, port_name, stage_idx_0, stage_idx_e)` in Matlab, which allows to specify information for an input port of the simulink block corresponding to an acados OCP solver. Inputs are - `idx_p` is a 0-based vector of parameter indices to be updated by the port. - `port_name` is used to identify the port and print information. - `stage_idx_0` is the first stage for which the parameters should be updated by the port (in `[0, N]`). - `stage_idx_e` is the last stage for which the parameters should be updated by the port (in `[stage_idx_0, N]`). - The resulting port gets as inputs: - first one: value which indicates if update should be performed (0 means no update). - afterwards: new numerical values of parameters to be updated at stages specified by `stage_idx_0`, `stage_idx_e`. - size of input port: 1 + (`stage_idx_e` - `stage_idx_0` + 1) * length(`idx_p`) - test sparse parameter update ports in Simulink
Configuration menu - View commit details
-
Copy full SHA for bc727aa - Browse repository at this point
Copy the full SHA bc727aaView commit details
Commits on Aug 2, 2024
-
- update HPIPM with latest fix giaf/hpipm@3ab7d60 - set HPIPM mode to ROBUST in example which did not work before HPIPM upgrade, see 33730ae
Configuration menu - View commit details
-
Copy full SHA for 7755995 - Browse repository at this point
Copy the full SHA 7755995View commit details -
Add new acados logo and favicon. Switch docs to
sphinx-book-theme
(#……1180) Following up on the acados logo design contest https://discourse.acados.org/t/logo-design-contest/1502/6 --------- Co-authored-by: sandmaennchen <katrin.baumgaertner@posteo.de>
Configuration menu - View commit details
-
Copy full SHA for 1a6d45b - Browse repository at this point
Copy the full SHA 1a6d45bView commit details -
Fix links to OSQP to point to its new GitHub organization (#1183)
OSQP moved to a dedicated organization a while ago, so this updates all the docs references and the submodule to point to the new organization.
Configuration menu - View commit details
-
Copy full SHA for 336b4fb - Browse repository at this point
Copy the full SHA 336b4fbView commit details -
Configuration menu - View commit details
-
Copy full SHA for 04c91bf - Browse repository at this point
Copy the full SHA 04c91bfView commit details
This comparison is taking too long to generate.
Unfortunately it looks like we can’t render this comparison for you right now. It might be too big, or there might be something weird with your repository.
You can try running this command locally to see the comparison on your machine:
git diff v0.3.4...v0.3.5