Thanks to visit codestin.com
Credit goes to github.com

Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: acados/acados
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: v0.3.4
Choose a base ref
...
head repository: acados/acados
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: v0.3.5
Choose a head ref
  • 20 commits
  • 112 files changed
  • 6 contributors

Commits on Jul 18, 2024

  1. Funnel globalization (#1151)

    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 <[email protected]>
    Co-authored-by: sandmaennchen <[email protected]>
    3 people authored Jul 18, 2024
    Configuration menu
    Copy the full SHA
    95ac718 View commit details
    Browse the repository at this point in the history

Commits on Jul 19, 2024

  1. 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
    sandmaennchen authored Jul 19, 2024
    Configuration menu
    Copy the full SHA
    edeba2e View commit details
    Browse the repository at this point in the history

Commits on Jul 22, 2024

  1. 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 <[email protected]>
    FreyJo and sandmaennchen authored Jul 22, 2024
    Configuration menu
    Copy the full SHA
    d0af625 View commit details
    Browse the repository at this point in the history

Commits on Jul 23, 2024

  1. 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.
    FreyJo authored Jul 23, 2024
    Configuration menu
    Copy the full SHA
    e7993ec View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    90607d1 View commit details
    Browse the repository at this point in the history

Commits on Jul 24, 2024

  1. 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.
    FreyJo authored Jul 24, 2024
    Configuration menu
    Copy the full SHA
    fc14fb1 View commit details
    Browse the repository at this point in the history

Commits on Jul 25, 2024

  1. 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.
    FreyJo authored Jul 25, 2024
    Configuration menu
    Copy the full SHA
    83bc553 View commit details
    Browse the repository at this point in the history
  2. Small improvements (#1169)

    - use `OSQP_INFITY`
    - comments on how to export QP for Gianluca
    - improve example
    FreyJo authored Jul 25, 2024
    Configuration menu
    Copy the full SHA
    8109937 View commit details
    Browse the repository at this point in the history

Commits on Jul 26, 2024

  1. 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.
    sandmaennchen authored Jul 26, 2024
    Configuration menu
    Copy the full SHA
    29b3a4e View commit details
    Browse the repository at this point in the history
  2. Drone example (#1165)

    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 <[email protected]>
    AkashJohnSubash and akash authored Jul 26, 2024
    Configuration menu
    Copy the full SHA
    cb24233 View commit details
    Browse the repository at this point in the history

Commits on Jul 29, 2024

  1. 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 <[email protected]>
    FreyJo and sandmaennchen authored Jul 29, 2024
    Configuration menu
    Copy the full SHA
    239754c View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    c4859e8 View commit details
    Browse the repository at this point in the history

Commits on Jul 30, 2024

  1. Sparse parameter 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.
    FreyJo authored Jul 30, 2024
    Configuration menu
    Copy the full SHA
    cb6af30 View commit details
    Browse the repository at this point in the history

Commits on Jul 31, 2024

  1. 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
    FreyJo authored Jul 31, 2024
    Configuration menu
    Copy the full SHA
    099cc83 View commit details
    Browse the repository at this point in the history

Commits on Aug 1, 2024

  1. Update docs build requirements (#1179)

    Dependabot was sending mails about known security vulnerabilities
    detected in the dependency Jinja2 Version < 3.1.4
    FreyJo authored Aug 1, 2024
    Configuration menu
    Copy the full SHA
    3ee6aa6 View commit details
    Browse the repository at this point in the history
  2. 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
    FreyJo authored Aug 1, 2024
    Configuration menu
    Copy the full SHA
    bc727aa View commit details
    Browse the repository at this point in the history

Commits on Aug 2, 2024

  1. Update HPIPM (#1181)

    - update HPIPM with latest fix
    giaf/hpipm@3ab7d60
    - set HPIPM mode to ROBUST in example which did not work before HPIPM
    upgrade, see
    33730ae
    FreyJo authored Aug 2, 2024
    Configuration menu
    Copy the full SHA
    7755995 View commit details
    Browse the repository at this point in the history
  2. 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 <[email protected]>
    FreyJo and sandmaennchen authored Aug 2, 2024
    Configuration menu
    Copy the full SHA
    1a6d45b View commit details
    Browse the repository at this point in the history
  3. 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.
    imciner2 authored Aug 2, 2024
    Configuration menu
    Copy the full SHA
    336b4fb View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    04c91bf View commit details
    Browse the repository at this point in the history
Loading