Passer au contenu

Data frame contenant une séquence de paramètres d'OSQP pour tsbalancing() spécifié avec l'argument osqp_settings_df. La librairie inclut deux data frames prédéfinis de séquences de paramètres d'OSQP :

  • default_osqp_sequence : rapide et efficace (valeur par défaut de l'argument osqp_settings_df);

  • alternate_osqp_sequence : orienté vers la précision au détriment du temps d'exécution.

Voir vignette("osqp-settings-sequence-dataframe") pour le contenu de ces data frames.

Utilisation

# Séquence par défaut :
# tsbalancing(..., osqp_settings_df = default_osqp_sequence)

# Séquence alternative (plus lente) :
# tsbalancing(..., osqp_settings_df = alternate_osqp_sequence)

# Séquence personnalisée (à utiliser avec précaution !) :
# tsbalancing(..., osqp_settings_df = <mon-dataframe-de-sequence-osqp>)

# Une seule tentative de résolution avec les valeurs par défaut d'OSQP (déconseillé !) :
# tsbalancing(..., osqp_settings_df = NULL)

Format

Un data frame avec au moins un enregistrement (une rangée) et au moins une colonne, les colonnes les plus courantes étant :

max_iter

Nombre maximal d'itérations (integer)

sigma

Pas sigma (sigma step) de la méthode des multiplicateurs à direction alternée (MMDA, ou ADMM en anglais pour alternating direction method of multipliers) (double)

eps_abs

Tolérance absolue (double)

eps_rel

Tolérance relative (double)

eps_prim_inf

Tolérance d'infaisabilité du problème primal (double)

eps_dual_inf

Tolérance d'infaisabilité du problème dual (double)

polish

Effectuer l'étape de raffinement de la solution (logical)

scaling

Nombre d'itérations de mise à l'échelle (integer)

prior_scaling

Mise à l'échelle préalable des données, avant la résolution avec OSQP (logical)

require_polished

Exiger une solution raffinée (polished solution) pour arrêter la séquence (logical)

[any-other-OSQP-setting]

Valeur du paramètre OSQP correspondant

Détails

À l'exception de prior_scaling et require_polished, toutes les colonnes du data frame doivent correspondre à un paramètre d'OSQP. Les valeurs par défaut d'OSQP sont utilisées pour tout paramètre non spécifié dans ce data frame. Visitez https://osqp.org/docs/interfaces/solver_settings.html pour connaître tous les paramètres d'OSQP disponibles. Notez que le paramètre d'OSQP verbose est en fait contrôlé par les arguments quiet et display_level de tsbalancing() (c'est à dire que la colonne verbose dans un data frame pour la séquence de paramètres d'OSQP serait ignorée).

Chaque enregistrement (rangée) d'un data frame pour la séquence de paramètres d'OSQP représente une tentative de résolution d'un problème d'équilibrage avec les paramètres d'OSQP correspondants. La séquence de résolution s'arrête dès qu'une solution valide est obtenue (une solution pour laquelle tous les écarts de contraintes sont inférieurs ou égaux à la tolérance spécifiée avec l'argument validation_tol de tsbalancing()) à moins que la colonne require_polished = TRUE, auquel cas une solution raffinée d'OSQP (status_polish = 1) serait également nécessaire pour arrêter la séquence. Les écarts de contraintes correspondent à \(\mathrm{max}(0, l - Ax, Ax - u)\) avec des contraintes définies comme \(l \le Ax \le u\). Dans le cas où une solution satisfaisante ne peut être obtenue après avoir parcouru toute la séquence, tsbalancing() renvoie la solution qui a généré le plus petit total d'écarts de contraintes parmi les solutions valides, le cas échéant, ou parmi toutes les solutions, dans le cas contraire. Notez que l'exécution de la séquence de résolution entière peut être forcée en spécifiant l'argument full_sequence = TRUE avec tsbalancing(). Les enregistrements avec la colonne prior_scaling = TRUE ont les données du problème mises à l'échelle avant la résolution avec OSQP, en utilisant la moyenne des valeurs libres (non contraignantes) du problème comme facteur d'échelle.

En plus de spécifier un data frame pour la séquence de paramètres d'OSQP personnalisé avec l'argument osqp_settings_df, on peut aussi spécifier osqp_settings_df = NULL ce qui résultera en une seule tentative de résolution avec les valeurs par défaut d'OSQP pour tous les paramètres et avec prior_scaling = FALSE et require_polished = FALSE. Il est cependant recommandé d'essayer d'abord les data frames default_osqp_sequence et alternate_osqp_sequence, avec full_sequence = TRUE si nécessaire, avant d'envisager d'autres alternatives.

La vignette « Data frame » pour la séquence de paramètres d’OSQP (vignette("osqp-settings-sequence-dataframe")) contient des informations supplémentaires.