CARL Optim est un moteur d’optimisation conçu pour résoudre des problèmes de planification et de routage complexes en appliquant des contraintes spécifiques pour répondre le plus finement possible à vos besoins.
La sélection des contraintes ainsi que le choix du niveau de contraintes et de la pondération permettent d'orienter le résultat de l'optimisation.
En appliquant ses différents paramètres, un score par niveau de contraintes (fort, moyen, souple) est calculé pour chacune des solutions testées. La meilleure solution proposée est celle se rapprochant d'un score de 0/0/0.
En revanche une solution avec un score négatif correspondant aux contraintes de type fort n'entraine pas une proposition de solution.
L'attribut Intervenant Optimisé présent sur le détail d'un intervenant permet de comptabiliser le nombre d'intervenants autorisés lors de la réalisation d'une optimisation.
Scénario d'exécution d'une optimisation
Une optimisation via CARL Source comprend plusieurs étapes :
- Configurer un modèle d’optimisation,
- Sélectionner les interventions à optimiser dans la fonctionnalité [Interventions]
- Sélectionner l'action [Optimisation des interventions] accessible sous l'icône
de la liste des interventions.
→ La popup de lancement de l'optimisation s'affiche.
- Remplir les informations demandées et valider :
→Si OK alors l'optimisation s'est lancée et un mémo de suivi est généré.
→Si KO alors l'optimisation ne s'est pas lancée et un mémo de suivi est généré.
- A la fin du temps imparti d’exécution de l’optimisation, l'application affiche un mémo de suivi :
→ Si un résultat est trouvé : La popup de lancement de l'optimisation s'affiche.
→ Si aucun résultat n'est trouvé : La popup de lancement de l'optimisation s'affiche.
- Visualiser une optimisation
→ Affichage de l'optimisation sous forme graphique, consulter [Détail d'une optimisation]
- Réaliser l'action sur l'optimisation
→ Accepter une optimisation et enregistrer les informations dans CARL Source.
→ Refuser une optimisation.
Il est nécessaire de saisir à minima une intervention pour pouvoir lancer une optimisation.
Le paramètre de module BLOPTIM_FST_CALL permet de définir le pourcentage de temps de traitement en plus du temps de traitement initial pour la gestion des étapes d'initialisation.
Le paramètre de module BLOPTIM_NEXT_CALL permet de définir le pourcentage de temps de traitement avant ré-interrogation du moteur d'optimisation lorsque le temps initial n'a pas suffi à résoudre le problème d'optimisation.
Afin que le moteur d’optimisation connaisse le planning existant des intervenants pour éviter une double planification, CARLl Source envoie en complément l’ensemble des interventions associées aux intervenants et dont la date de planification est comprise dans l’horizon de planification. De cette manière, le moteur les considère comme des interventions déjà planifiées devant être prise en compte au moment de la recherche de la meilleure solution d’optimisation.
A chacune des étapes, un mémo de suivi est envoyé.
Paramétrage DU lancement d'une optimisation
Les champs suivants sont obligatoires pour le lancement d'une optimisation :
- Date début d'optimisation : Date de début souhaitée de l'optimisation. Initialisée à Date du jour + 1,
- Modèle d'optimisation : Modèle d'optimisation à appliquer. Infozone contenant les modèles d'optimisation actifs,
- Intervenants concernés : Liste des intervenants à affecter. Initialisé avec la valeur configurée dans le modèle d'optimisation. Info Zone contenant les filtres publics ainsi que les filtres personnels de l'utilisateur connecté sur l'entité "TECHNICIAN".
Mode d'optimisation
TASP
Le mode TASP permet de répartir les tâches entre des ressources disponibles, sans prendre en compte les déplacements.
VRP
Le mode VRP organise des tournées optimisées en tenant compte des lieux d’intervention et des trajets à effectuer.
La distance entre 2 points se réalise au travers d'une matrice de coût basée sur la solution open source ORS (Open Route Service). La matrice de coût se complète au fur et à mesure du lancement d'optimisations et des nouvelles adresses. L'ensemble des distances (ancienne adresse - nouvelle adresse) sont calculées et stockées dans la matrice de coût pour une utilisation ultérieure.
Deux adresses distantes de 120 mètres sont considérées comme étant à la même adresse.
Il est intéressant de purger de temps en temps la matrice de coûts afin que les recalculs soient réalisés pour prendre en compte les changements d'itinéraires (travaux, nouvelle route, sens interdit).
Contrôles avant lancement d'une optimisation
Avant lancement d'une optimisation, des contrôles différents sont réalisés.
- Les interventions doivent être dans un état différent de TERMINER / SOLDER / ARCHIVER / ANNULER,
- Le filtre sur intervenants doit contenir à minima un intervenant,
- Le fuseau horaire des interventions doit être identique au fuseau horaire du contexte utilisateur,
- Une semaine type doit être renseignée si la contrainte OPENNING_HOURS est activée sur le modèle d'optimisation,
- La charge sur chaque ligne main d'œuvre doit être renseignée si la contrainte SPLIT_ACTIVITY est activée sur le modèle d'optimisation,
- Les adresses (Intervention, Intervenant ou modèle d'optimisation) ainsi que le paramètre de module TRAVEL_OCCTYPE doivent être renseignés si le mode d'optimisation VRP est activé sur le modèle d'optimisation.
Mise à jour des interventions
L'acception d'une solution entraine la mise à jour des interventions.
Les données pouvant être mise à jour sont :
- Onglet général : Date début - date fin intervention,
- Onglet Main d'œuvre : Équipe, Spécialité, Intervenant, Nature main d'œuvre, Date, Temps.
En fonction des contraintes appliquées dans le modèle , il est possible de compléter une ligne main d'œuvre ou de la remplacer.
Il s'agit d'une sauvegarde totale de la solution d'optimisation. S'il y a un problème au moment de la sauvegarde alors aucune information est sauvegardée et un mémo d'information est envoyé.
Gestion des déplacements
Dans le cas de l'utilisation du mode d'optimisation VRP, le moteur d'optimisation calcule les temps de déplacements nécessaires pour réaliser une intervention.
Cette information sera remontée dans l'intervention concernée en tant que ligne de main d'œuvre avec le champ nature main d'œuvre de renseigné.
La nature main d'œuvre associée automatiquement est celle définie dans le paramètre de module TRAVEL_OCCTYPE.
Les temps de déplacement sont comptabilisés dans la charge totale de l'intervention.
Le dernier déplacement d’une journée (sans intervention qui suit le déplacement) n’est pas sauvegardé dans CARL Source.