Caractéristiques

Un moteur puissant et adaptable pour l'optimisation de la recherche locale.

Pourquoi la recherche locale ?

La recherche locale est une technique d’optimisation polyvalente et évolutive pour résoudre des problèmes de recherche opérationnelle. Elle est, par exemple, bien adaptée aux problèmes d’optimisation avec un grand espace de recherche, tels que les problèmes d’optimisation de routage.

Elle peut également intégrer facilement des algorithmes dédiés tels que les graphes ou la géométrie computationnelle.

La recherche locale englobe également des métaheuristiques telles que la recherche tabou, le redémarrage, le recuit simulé, la destruction et la reconstruction, la recherche locale généralisée, les chaînes d’éjection, le VLSN, etc.

Pourquoi OscarR.cbls ?

Développer une solution de recherche locale est souvent coûteux car :

  • Développer des contraintes efficaces est complexe car cela repose sur une évaluation incrémentale des contraintes.
  • Une procédure de recherche dédiée doit être élaborée, et elle doit prendre en compte la structure du problème.

OscaR.cbls est une librairie logicielle qui permet de largement réduire ces coûts de développement.

OscaR.cbls est un outil intelligent pour les ingénieurs en optimisation. Il est fourni sous forme de bibliothèque logicielle open source (LGPL). Programmer en Scala ou en Java est nécessaire pour développer une solution basée sur OscaR.cbls. Quelques exemples sont fournis.

Philosophie générale d’OscarR.cbls

OscaR.cbls repose sur la philosophie générale suivante :

  • Se concentrer sur la complexité computationnelle et fournir une API bien pensée pour obtenir une bonne complexité computationnelle globale, quelle que soit l’application.
  • Offrir un support maximal, à la fois pour la modélisation et la résolution. Il est donc nécessaire de programmer en Scala ou Java pour utiliser OscaR.cbls.
  • OscaR.cbls pourrait se résumer à comment investir au mieux le temps de cerveau disponible. OscaR.cbls permet de se concentrer pour :
    • Élaborer un modèle approprié d’un problème métier complexe sans perdre de temps dans la mise en œuvre.
    • Rapidement concevoir et étudier diverses procédures de recherches et métaheuristiques pour identifier la combinaison la mieux adaptée au cas considéré et à ses contraintes.

Principales fonctionnalités d’OscarR.cbls

La recherche locale, c’est la modélisation (modeling) avec la procédure de recherche (searching).

OscaR.cbls offre un support avancé à la fois pour la modélisation et la procédure de recherche :

  • Modélisation basée sur les contraintes (constraint-based modeling)
    • Intègre des algorithmes très efficaces pour évaluer les solutions basées sur l’évaluation incrémentale, les pré-calculs, les caches, etc.
  • Procédure de recherche basée sur les combinateurs (combinator-based searching)
    • Une procédure de recherche locale doit être conçue pour chaque cas d’utilisation, nous avons donc facilité la définition de toute procédure de recherche locale et métaheuristique en l’assemblant à partir d’une bibliothèque d’éléments standard.

Origines d’OscarR.cbls

OscaR.cbls a débuté en 2011 et a évolué au fil de projets industriels et de recherche. L’objectif global était de structurer les résultats de recherche pertinents issus du milieu académique dans un solveur propre et bien structuré. Il a évolué au fil des années et divers aspects ont été ajoutés, notamment :

  • Combinateurs de recherche
  • Optimisation de routage basée sur des séquences
  • Mécanismes pour développer de nouvelles contraintes globales basées sur des fonctions de transition
  • Recherche distribuée
  • Informations de profilage

En 2024, nous avons commencé une réécriture en profondeur d’OscaR.cbls. Celui-ci ayant été initialement développé comme prototype de recherche, divers modules reposaient sur des technologies obsolètes. Début 2025, nous avons présenté la première version prête pour la production d’OscaR.cbls. Elle comprend notamment une API de référence qui a été conçue pour être stable face aux évolutions futures d’OscaR.cbls.

Optimisation de routage

La recherche locale s’applique très bien aux problèmes d’optimisation de routage de véhicule.

OscaR.cbls a donc été étendu avec des structures de données, contraintes globales et voisinages spécifiques.

Comme OScaR.cbls en général, ce module a été pensé pour être facilement étendu à de nouvelles contraintes et (méta-)heuristiques.

Et ensuite ?

OscaR.cbls hérite d’un code datant de 2011. Nous sommes actuellement en train de refactoriser l’ensemble de cette base de code. Dans les mois à venir, nous publierons davantage de versions d’OscaR.cbls avec des fonctionnalités incroyables, notamment :

  • L’incorporation de plus de fonctionnalités de notre version héritée, y compris :
    • Contraintes globales (100+)
    • Combinateurs de voisinage (recuit simulé, chaînes d’éjection, acceptation tardive, VLSN)
  • Optimisation multi-thread et multi-nœuds

OscaR.cbls propose une API utilisateur. Cette API sera rétrocompatible, donc passer aux futures versions d’OscaR.cbls sera simple.

Restez informé sur Github !

Fonctionnalités

Ce qui rend Oscar.Cbls meilleur

Pertinence d'OscaR.cbls pour les entreprises et importance de l'adaptabilité

La recherche locale est souvent une méthode privilégiée car elle offre une bonne évolutivité et une qualité adéquate pour des problèmes non excessivement contraints, notamment pour les problèmes d’optimisation de routage et similaires. Cependant, les moteurs d’optimisation, et en particulier les moteurs de recherche locale, doivent être adaptables pour proposer une solution adéquate.

Cette notion d’adaptabilité a été le moteur principal derrière chaque choix technique effectué lors de la conception d’OscaR.cbls.

Adaptabilité du modèle

Le modèle doit représenter précisément les notions du problème, et cette représentation doit être optimale pour être recherchée efficacement par le moteur.

  • Tous les frameworks offrent des primitives de modélisation ; OscaR.cbls est doté d’un langage basé sur les contraintes à partir duquel nous pouvons facilement assembler un modèle complet du problème en question.
  • Souvent, les problèmes industriels comportent des aspects “sales” qui ne correspondent pas aux contraintes disponibles. Pour y remédier, OscaR.cbls est également facilement extensible ; il est possible de déclarer rapidement une nouvelle contrainte, même une contrainte globale efficace pour le routage en quelques heures. Un exemple typique est une contrainte de retard avec une ligne précoce développée en deux jours, avec une complexité de O(log n) sur tous les voisinages classiques (1-opt, 2-opt, 3-opt).

Adaptabilité de la procédure de recherche

Il existe un théorème bien connu appelé “No Free Lunch Theorem” qui stipule grossièrement qu’il n’existe pas d’approche d’optimisation universelle efficace. Nous devons donc adapter les métaheuristiques aux caractéristiques spécifiques du problème [Sörensen ORBEL2025].

À cette fin, OscaR.cbls propose une approche basée sur des combinateurs pour assembler une procédure de recherche à partir de voisinages standardisés, de métaheuristiques, de critères d’arrêt et d’autres aspects typiquement nécessaires dans la recherche locale.

A retenir...

OscaR.cbls est un cadre d’optimisation par recherche locale très pertinent pour une utilisation en entreprise grâce à :

  • Son adaptabilité profondément intégrée
  • Une licence favorable aux entreprises (LGPL)
  • Un langage facile à intégrer (Scala, qui se compile en Java ByteCode standard)

Cas d'application

F.A.Q.

Comment pouvons-nous vous aider?

Voici quelques-unes des questions que nous recevons le plus. Si vous ne voyez pas ce que vous pensez, contactez-nous à tout moment par téléphone ou e-mail.

OscaR.cbls a été développé comme un moyen de transfert de technologie entre la recherche et l’industrie. Il permet de développer des solutions d’optimisation basées sur la recherche locale et d’incorporer, si nécessaire, des algorithmes personnalisés. Nous écrivons notamment des contraintes spécifiques aux clients avec des algorithmes de graphes incrémentaux et des algorithmes de géométrie computationnelle incrémentaux.

  • LGPLV2 ou supérieure.
  • C’est un type de licence open source, qui ne contamine pas le code de votre application. Cependant, les extensions et les corrections de bugs doivent être partagés avec la communauté via une pull request sur le Git; nous serions ravis d’aider.

Le langage de programmation C offrirait effectivement une accélération. Cependant, le coût de développement, d’utilisation et de maintenance serait beaucoup plus élevé. Nous préférons consacrer nos efforts et les vôtres à trouver les algorithmes et métaheuristiques les plus efficaces, car nous pouvons obtenir bien plus d’améliorations de vitesse en réduisant la complexité qu’en passant de Scala à C.

OscaR.cbls est notre cheval de bataille depuis 2011 ; nous existerons dans les années à venir.

Nous serions ravis de collaborer avec vous ! Veuillez nous contacter à l’adresse renaud.delandtsheer@cetic.be

Contactez-nous

Envie de découvrir l’ensemble des bénéfices que cet outil apportera à votre entreprise ?