Une heuristique de tarification avec <0,2 % d'écart d'optimalité et jusqu'à 37 millions × d'accélération sur l'état de l'art
Le Breakpoint Heuristic Algorithm : résout la tarification capacitée là où toutes les méthodes exactes expirent, monte en charge jusqu'à 1 000 000 scénarios de demande à six prix en moins de 8 minutes, bat LAG (spécialiste capacité) d'un facteur 79× et CoBiT (spécialiste mixed-logit) d'un facteur jusqu'à 37 millions ×
Les algorithmes exacts sont beaux sur papier et incommodes en production. De vraies équipes de tarification ont besoin de réponses en quelques secondes, sur des instances avec contraintes de capacité, et d'une garantie de qualité qu'elles peuvent défendre en réunion.
Notre Breakpoint Heuristic Algorithm répond aux deux. Publié dans Computers & Operations Research, il résout le CPP capacité et non capacité avec un écart moyen sous 0,2 %, battant en vitesse et en qualité toute heuristique publiée pour cette classe de problèmes.
Le défi
Le problème de tarification capacité basé sur les choix (CPP), tarifer sous demande à choix discret quand les produits ont une capacité finie, est significativement plus difficile que son cousin non capacité. Ajouter la capacité détruit la totale unimodularité du knapsack par client, forçant le modèle à revenir en MILP : l'heuristique lagrangienne de Paneque et al. (2022) expire à 50 tirages et 4 prix, et le MILP exact ne gère que des instances jouets. Aucune des heuristiques existantes ne fonctionne sur toutes les classes de modèles.
Les praticiens ont besoin d'une heuristique unique et robuste qui marche sur toutes les classes de modèles, monte en charge sur des instances haute dimension, et leur donne une réponse défendable sur leur distance au vrai optimum.
Notre démarche
Nous avons étendu notre Breakpoint Exact Algorithm en régime heuristique : le BHA énumère les points de rupture le long d'un chemin de descente par coordonnées, acceptant des mouvements rapides quand ils améliorent l'objectif et contournant l'explosion combinatoire des méthodes exactes sur les instances multi-prix.
La capacité est gérée par une file de priorité exogène, une astuce propre et indépendante du modèle qui maintient le sous-problème interne linéaire et nous permet de réutiliser toute notre machinerie non capacité sans toucher à la logique d'énumération externe.
Nous avons combiné le BHA avec une recherche locale itérée pour échapper aux optima locaux ; la variante ILS résultante atteint tous les optima connus sur les benchmarks mixed-logit et trouve des solutions à revenu plus élevé que le BEA exact quand la méthode exacte expire.
Côté exact, nous avons conçu de nouvelles inégalités valides pour la formulation QCQP-L, accélérant notre Branch-and-Benders Decomposition ; le BHA sert aussi de warm-start de premier rang (accélérations totales jusqu'à 54 % à 10 % d'écart, selon la dimension).
Le résultat
Livrable : le Breakpoint Heuristic Algorithm et son extension Iterated Local Search, une heuristique rapide et scalable pour le problème de tarification capacité et non capacité basé sur les choix sous tout DCM à utilité linéaire en prix. Sur le benchmark de tarification parking avec capacités, le BHA livre un écart d'optimalité moyen sous 0,2 % sur toutes les instances complétées, et monte en charge jusqu'à 1 000 000 scénarios de demande à six prix en 439 secondes (~ 7,3 minutes) dans le cas non capacité.
Face à LAG (Paneque et al. 2022), la précédente heuristique CPP capacité, le BHA est au moins 79× plus rapide sur chaque classe d'instance testée. Face à CoBiT (Marandi et Lurkin 2023), le précédent état de l'art pour la tarification ML-spécifique, le BHA atteint jusqu'à 37-millions-× d'accélération (Tableau 12, R = 100 000) et l'extension ILS atteint chaque optimum connu. Nous avons aussi dérivé de nouvelles inégalités valides pour la Branch-and-Benders Decomposition spatiale de notre précédent article OR Spectrum, avec le BHA comme warm-start de premier rang — effet combiné jusqu'à 54 % d'accélération à 10 % d'écart d'optimalité. Publié en open access dans Computers & Operations Research, 2026.
Plongée technique
Le modèle derrière le résultat.
Le modèle
Ajouter des contraintes de capacité au problème de tarification basé sur les choix casse tout ce qui rendait le cas non capacité tractable. Le knapsack par client n'est plus totalement unimodulaire, donc la relaxation QCQP-L n'est plus entière, le problème redevient un MILP authentiquement combinatoire. Pire, quand un produit épuise sa capacité, le choix optimal de chaque client dépend du choix de tous les autres, ce qui signifie que l'astuce de mise à jour incrémentale du BEA échoue : l'objectif ne peut être évalué qu'après avoir assigné chaque client via la file de priorité. Le BHA est bâti autour de cette contrainte : garder l'énumération en points de rupture du BEA, mais ne l'utiliser que le long d'une dimension de prix à la fois, en évaluant l'objectif complet à chaque pas.
Variables du CPP capacité et contrainte de file de priorité. Les clients sont traités dans un ordre exogène (file de tickets, heure d'arrivée, priorité de segment, selon les besoins de l'application). Le nouveau binaire y_inr indique si l'alternative i est encore disponible quand le client n arrive en scénario r ; la famille de contraintes (f_inr, g_inr dans l'article) dit que y_inr bascule à 0 dès que les sélections cumulées de l'alternative i atteignent sa capacité c_i. Retirer la file de priorité et la remplacer par une inégalité de capacité globale permettrait au solveur de réordonner les clients de manière endogène, irréaliste et sous-estimant la volatilité du revenu.
Ce que coûte la capacité. Maintenant que ω est vraiment binaire, la bilinéarité p_i ω_inr doit être linéarisée avec des auxiliaires big-M (le MILP originel de Paneque et al.). La reformulation QCQP-L qui alimentait notre travail non capacité ne s'applique plus : la relaxation LP n'est pas entière, donc nous ne pouvons pas relâcher ω. Traduction : toute la chaîne algorithmique pricing1 (B&B spatial, B&BD, enveloppes de McCormick) s'effondre, et la seule approche exacte restante est le MILP, qui expire empiriquement à R ≥ 50.
Complexité du BEA capacité. Nous avons étendu le BEA en remplaçant sa mise à jour incrémentale par une passe d'allocation par file de priorité aux feuilles de l'arbre d'énumération. Ce correctif préserve la correction mais ajoute un facteur NRJ par niveau de récursion (nous devons considérer les J alternatives à chaque point de rupture, pas seulement une). Asymptotiquement : toujours polynomial en N et R, toujours exponentiel en J, mais la constante devant est significativement pire que la borne O(J!(NR)^J log NR) du cas non capacité.
Breakpoint Heuristic Algorithm : ascension par coordonnées sur le vecteur de prix, où chaque pas résout un BEA à un prix (la dimension où le BEA est bon marché, seulement NR points de rupture à évaluer, pas d'arbre de permutation). À l'itération t nous figeons tous les prix sauf j(t), énumérons les au plus NR + 2 prix candidats pour cette coordonnée sous l'état actuel de la file, évaluons l'objectif capacité complet à chaque candidat et choisissons le meilleur. Nous cyclons sur les dimensions jusqu'à ce que J passes consécutives de coordonnées ne produisent aucune amélioration.
Complexité effective du BHA. K est le nombre de cycles externes (empiriquement 5–20 sur les benchmarks), J le nombre de passes de coordonnées par cycle, NR le nombre de points de rupture par coordonnée, et NRJ le coût d'une évaluation de l'objectif par file de priorité. Le terme exponentiel en J qui écrase le BEA-cap exact a disparu, remplacé par un coût quadratique en (NR), ce qui explique pourquoi le BHA monte en charge là où la méthode exacte ne peut pas. Le prix : aucun certificat d'optimalité.
Enveloppe Iterated Local Search. Au lieu de muter la solution incumbente après chaque terminaison du BHA (ILS de manuel), nous élargissons le pas et relançons la recherche en ligne. C'est l'opérateur de perturbation : quand la recherche locale épuise le voisinage à petits pas, sauter à un plus grossier, ré-explorer, accepter sur amélioration. Continuer jusqu'à ce que δ dépasse Δ_max. Empiriquement cela ferme l'écart résiduel sur les benchmarks, ILS atteint tout optimum connu là où le BHA laisse ~0,04 % sur la table.
Méthode exacte guidée par l'heuristique. Nous injectons la solution du BHA dans notre Branch-and-Benders Decomposition spatial (non capacité) comme forte borne inférieure initiale, et nous en dérivons de nouvelles inégalités valides pour la formulation QCQP-L autour. Effet combiné sur le temps du B&BD pour atteindre 10 % d'écart d'optimalité : jusqu'à 54 % d'accélération à J = 4 (le régime où les méthodes exactes restent faisables). L'heuristique et la méthode exacte s'aident désormais mutuellement.
Quatre contributions algorithmiques en un article : le BEA capacité, le BHA, l'extension ILS, et le B&BD guidé par BHA avec de nouvelles inégalités valides. Le BHA est la clé de voûte, c'est l'algorithme qui passe en production, car il produit des solutions quasi optimales en temps tractable sur des instances à échelle réaliste hors de portée des méthodes exactes. La couche ILS est l'option à activer quand la qualité de solution compte plus que le temps d'exécution. Les inégalités valides et le guidage heuristique sont la manière dont le B&BD exact rivalise désormais avec les algorithmes mixed-logit spécialisés (CoBiT, LAG) sur leur terrain, et gagne, par des facteurs de 10⁴ – 10⁷.
Benchmark
Test 2 de l'article : tarification de parking capacité sur l'étude de cas d'Ibeas et al. (2014), N = 50 clients, capacités (20, 20) pour J = 2 et (15, 15, 15, 15) pour J = 4. Temps en secondes. MILP et BEA sont exacts (écart = 0) ; CMA-ES est une baseline générale par stratégie d'évolution ; BHA et ILS sont les nôtres. Sur chaque instance complétée, le BHA renvoie le même revenu que les méthodes exactes à 0,2 % près, et l'ILS atteint l'optimum exact.
| R | J | MILP | BEA (capacité) | CMA-ES | BHA (notre) | ILS (notre) |
|---|---|---|---|---|---|---|
| 2 | 2 | 5 | 0,5 | 0,6 | 0,2 | 1,2 |
| 10 | 2 | 173 | 12 | 2,3 | 0,6 | 21 |
| 25 | 2 | 3 224 | 174 | 8 | 3,6 | 129 |
| 50 | 2 | > 5 h | 1 291 | 18 | 8 | 558 |
| 100 | 2 | > 25 h | 9 914 | 132 | 51 | 2 793 |
| 250 | 2 | > 45 h | > 45 h | 1 084 | 435 | 16 357 |
| 10 | 4 | > 10 h | > 10 h | 23 | 6 | 517 |
| 100 | 4 | > 45 h | > 45 h | 1 693 | 828 | 34 963 |
Le MILP abandonne à R = 50 (limite 5 heures atteinte, écart de revenu > 8 % vs. vrai optimum). Le BEA porte la bannière exacte plus loin, résolvant R = 100, J = 2 en 2,75 heures, mais il est déjà deux ordres de grandeur plus lent que le BHA, qui finit la même instance en 51 secondes. À R = 250 même le BEA expire, alors que le BHA termine en 7 minutes. L'histoire à quatre prix est plus tranchée : toute méthode exacte échoue à R = 10, J = 4, mais le BHA renvoie des solutions quasi optimales sur toute la plage R = 10..200. CMA-ES est un test de cohérence utile, une métaheuristique respectée, mais 2–10× plus lent que le BHA et renvoie systématiquement 2–3 % de revenu en moins. Au-delà de ce test : le Tableau 6 de l'article montre le BHA résolvant J = 6, R = 1 000 000 en 439 secondes (sous 8 minutes) ; le Tableau 12 montre le BHA distançant le CoBiT spécifique mixed-logit avec des facteurs d'accélération de 3,5 × 10⁴ à 3,7 × 10⁶.
Tiré du dossier




Techniques
- Recherche en points de rupture par ascension par coordonnées
- Recherche locale itérée (pas adaptatif)
- Gestion de capacité par file de priorité
- Inégalités valides pour QCQP-L
- Guidage heuristique pour B&BD spatial
Stack
- Python
- Gurobi 13
- Julia (comparaison CoBiT)
- Boucles internes C++
Un problème de ce type ?