Index
Optimization
(interface)DesignShippingNetworkRequest
(message)DesignShippingNetworkResponse
(message)SolveMathOptModelRequest
(message)SolveMathOptModelResponse
(message)SolveShiftGenerationRequest
(message)SolveShiftGenerationResponse
(message)SolveShiftSchedulingRequest
(message)SolveShiftSchedulingResponse
(message)
Optimisation
API One Platform proposant un ensemble de solutions d'optimisation pour résoudre les problèmes de haut niveau de la recherche opérationnelle. MOE:début_bande
DesignShippingNetwork |
---|
Résoudre le problème de conception et de planification du réseau de livraison par ligne (LSNDSP) à partir de l'élément Le LSNDSP est un problème d'optimisation complexe qui vise à optimiser la conception et la planification d'un réseau de livraison par ligne. L'objectif est de minimiser le coût total d'exploitation du réseau, tout en répondant au maximum de la demande de fret entre les ports. Le LSNDSP peut être décomposé en deux principaux sous-problèmes: la conception du réseau et la planification. Le sous-problème de conception d'un réseau détermine l'ensemble des ports devant être desservis par le réseau, le nombre de navires à déployer sur chaque route et les routes que les navires emprunteront. Le sous-problème de planification détermine les horaires de navigation des navires, en tenant compte du temps nécessaire pour naviguer entre les ports, du temps de chargement et de déchargement des cargaisons, et de la demande de transport de marchandises entre les ports. En d'autres termes, le LSNDSP consiste à décider quels ports desservir, combien de navires utiliser et comment planifier les navires pour réduire au maximum les coûts d'exploitation du réseau tout en maximisant les revenus liés à la demande de cargaisons. L'acheminement des marchandises est un sous-composant complexe du LSNDSP, qui détermine les demandes à satisfaire et les itinéraires à attribuer au fret afin de maximiser les revenus. |
SolveMathOptModel |
---|
Résoudre le modèle d'entrée et renvoie le résultat en une seule fois. Utilisez cette option lorsque vous n'avez pas besoin de rappels, d'incrémentalité ni de suivre la progression d'une solution. |
SolveShiftGeneration |
---|
Résolution d'un problème de génération d'équipes à partir du |
SolveShiftScheduling |
---|
Résolution d'un problème de planification des équipes fixe à partir du |
DesignShippingNetworkRequest
La requête contient une instance du LSNDSP et doit contenir un ensemble de ports, un ensemble de sections candidates, un ensemble de classes de navires et un ensemble de produits à satisfaire.
Champs | |
---|---|
request_id |
Problème ou identifiant de la demande. |
solver_parameters |
Paramètres du résolveur. |
ports[] |
Liste des ports possibles à appeler dans les services de navire. La requête ne doit contenir que les ID de port figurant dans cette liste. |
leg_candidates[] |
Liste des étapes potentielles à ajouter aux services des navires. La requête ne doit contenir que les ID des étapes candidates figurant dans cette liste. |
vessel_classes[] |
Liste des classes de navires pour effectuer des services de navires. Notez que tous les navires d'une même classe sont complètement interchangeables. La requête ne doit contenir que les ID de classe de navire figurant dans cette liste. |
commodity_demands[] |
Liste des demandes potentielles de produits (c'est-à-dire de conteneurs) que les services des navires doivent remplir. |
vessel_services[] |
Vous pouvez fournir un réseau de services de navires valides (généralement l'état actuel du réseau) pour commencer l'optimisation. |
DesignShippingNetworkResponse
La réponse contient la solution à l'instance LSNDSP transmise dans la requête. Elle contient un réseau valide de services de navires et de chemins de la demande de marchandises. La demande totale de produits par tronçon ne peut pas dépasser la capacité de la classe des navires desservant cette section. Notez qu'aucun service de navire ne répondant à la demande est toujours une solution envisageable au problème de conception et de planification du réseau de livraison par ligne.
Champs | |
---|---|
request_id |
ID de la requête à laquelle cette réponse est associée. |
vessel_services[] |
Réseau de services de navires. Pour chaque classe de navire, le nombre total de navires utilisés ne peut pas dépasser le nombre de navires disponible pour cette classe. |
commodity_demand_paths[] |
Liste de tous les parcours par lesquels une demande positive de produits de base est acheminée. Notez que certains identifiants de demande de produits peuvent ne pas être inclus si aucune demande n'est expédiée. Par ailleurs, une demande de produits de base peut être partiellement satisfaite. Pour chaque demande de produits de base, la quantité totale satisfaite ne peut pas dépasser la demande totale. Enfin, commodity_demand_paths dépend de vessel_services (voir la définition de CommodityDemandPath). |
SolveMathOptModelRequest
Demande de solution unaire à distance dans MathOpt.
Champs | |
---|---|
solver_type |
Facultatif. Type Solveur permettant de résoudre le problème numériquement. Notez que si une solution n'est pas compatible avec une caractéristique spécifique du modèle, la procédure d'optimisation ne fonctionnera pas. |
model |
Obligatoire. Représentation mathématique du problème d'optimisation à résoudre. |
parameters |
Facultatif. Paramètres permettant de contrôler une seule résolution. Le paramètre enable_output est géré spécifiquement. Pour les résolveurs qui acceptent les rappels de messages, le définir sur "true" permet au serveur d'enregistrer un rappel de message. Les messages résultants seront renvoyés dans SolveMathOptModelResponse.messages. Pour les autres résolveurs, la définition de enable_output sur "true" entraîne une erreur. |
model_parameters |
Facultatif. Paramètres permettant de contrôler une seule résolution, spécifiques au modèle d'entrée (consultez la section SolveParametersProto pour les paramètres indépendants du modèle). |
SolveMathOptModelResponse
Réponse pour une solution unaire à distance dans MathOpt.
Champs | |
---|---|
result |
Description du résultat de la résolution du modèle dans la requête. |
messages[] |
Si SolveParametersProto.enable_output a été utilisé, il contient les messages de journal des résolveurs qui acceptent les rappels de message. |
SolveShiftGenerationRequest
Requête de résolution du problème de génération d'équipes. Les règles permettant de générer des équipes sont décrites dans chaque ShiftTemplate. Plusieurs décalages dans la réponse peuvent être générés à partir d'un seul ShiftTemplate. Les équipes générées et sélectionnées par le résolveur doivent respecter les règles décrites dans ShiftTemplate et couvrir la demande spécifiée des employés.
Champs | |
---|---|
solver_config |
Facultatif. Paramètres du résolveur. |
shift_templates[] |
Obligatoire. Ensemble de modèles d'équipes spécifiant des règles pour générer des équipes. |
employee_demands[] |
Obligatoire. Nombre total de demandes des employés que les équipes générées par |
SolveShiftGenerationResponse
Réponse au problème de génération d’équipes. Si la valeur solution_status
renvoyée est SOLVED
, un ensemble de décalages valides générés par le résolveur est renvoyé dans employee_schedules
. Pour que le planning des équipes soit valide, les propriétés suivantes sont valides:
- Chaque équipe générée dans
employee_schedules
respecte les règles spécifiées dans leShiftTemplate
correspondant. - Chaque événement sélectionné dans chaque quart de travail respecte les règles spécifiées dans le
ShiftTemplate.Event
correspondant. - Le nombre total d'employés affectés à l'ensemble des équipes générées à partir du même modèle ShiftTemplate ne dépasse pas
maximum_employee_count
de ce modèle. - L'ensemble des employés affectés couvrent la demande à chaque intervalle donné.
Champs | |
---|---|
solution_status |
État de la solution renvoyée. Si |
employee_schedules[] |
Ensemble des quarts de travail générés par le résolveur avec le nombre d'employés affectés à chaque planification. |
demand_coverage_violations[] |
Cas de non-respect de la couverture de la demande basés sur le |
SolveShiftSchedulingRequest
Requête pour l'API de planification des employés. La demande spécifie au minimum un ensemble d'employés, un ensemble d'équipes, un ensemble de rôles qu'un employé peut occuper et un ensemble d'exigences en matière de couverture. Les exigences de couverture précisent, sur une période donnée, le nombre d'employés nécessaires pour remplir chaque rôle. Les employés affectés à un quart de travail sont également affectés à un seul rôle (et à un seul) pour ce poste, et les employés ne peuvent pas être affectés à deux quarts de travail qui se chevauchent. Consultez les SolveShiftSchedulingResponse
ci-dessous pour en savoir plus sur la validité de l'attribution d'équipes.
Des contraintes de planification supplémentaires peuvent être spécifiées pour chaque employé afin de limiter davantage le problème. Un niveau de priorité est attribué à toutes les contraintes de planification et à toutes les exigences de couverture (OBLIGATOIRE, ÉLEVÉE, MOYENNE, FAIBLE). Toutes les contraintes avec le niveau de priorité PRIORITY_MANDATORY
doivent être satisfaites par le résolveur. Le résolveur peut contourner les contraintes associées à toute autre priorité, mais ces cas de non-respect sont minimisés dans l'ordre de priorité. Consultez l'énumération Priority
pour en savoir plus sur la gestion des niveaux de priorité pour chaque contrainte.
Le résolveur tente d'optimiser les valeurs ShiftPreference.preference
pour chaque employé en respectant les contraintes données. Le résolveur n'enfreint pas une contrainte afin de satisfaire d'autres préférences ; il n'enfreint une contrainte que si l'attribution de planification est impossible avec les contraintes données.
Remarque concernant l'heure: toutes les heures concernées par le problème sont spécifiées à l'aide du message DateTime. Ce message inclut un champ "TimeZone". Sauf indication contraire de l'utilisateur, le fuseau horaire par défaut est UTC. Les messages DateTime ne doivent être spécifiés qu'en minutes. Toutes les secondes et les nano-unités sont ignorées.
Champs | |
---|---|
request_id |
Problème ou identifiant de la demande. |
solve_parameters |
Paramètres permettant de contrôler une seule solution du problème. |
employees[] |
Tous les employés disponibles doivent être planifiés. |
shifts[] |
Toutes les périodes de travail constituent le planning. |
coverage_requirements[] |
Exigences de couverture pour l'ensemble de l'horizon de planification. Celles-ci indiquent le nombre d'employés qui doivent assumer chaque rôle ou posséder une compétence particulière au cours d'une période donnée ou d'une liste d'ID d'équipes. Toutes les exigences de couverture doivent être spécifiées soit à l'aide de périodes, soit à l'aide d'une liste d'ID d'équipes, mais pas des deux. Les périodes (le cas échéant) correspondant aux exigences de couverture ne peuvent pas se chevaucher pour chaque emplacement. Le niveau de priorité par défaut pour chacune de ces contraintes est |
role_ids[] |
Liste de tous les rôles possibles pour l'ensemble du personnel. Chaque employé doit avoir au moins un rôle auquel il peut être assigné pour un quart de travail. Un rôle fait référence à un poste spécifique attribué au cours d'une équipe (infirmier diplômé, chef exécutif, serveur, etc.). Lorsqu'un employé est affecté à un poste, il se voit également attribuer un rôle spécifique. |
skill_ids[] |
Liste de toutes les compétences possibles pour l'ensemble du personnel. Une compétence fait référence à toute qualification supplémentaire qu'un employé peut avoir et qui ne concerne pas un emploi spécifique qui peut lui être attribué (certifications, langues parlées, etc.). Cette liste peut être vide. Lorsqu'un employé est affecté à un poste, il doit posséder toutes les compétences nécessaires pour ce poste. |
location_ids[] |
Liste de tous les lieux possibles pour l'ensemble des quarts de la planification. Cette liste peut être vide. Il peut s'avérer utile de spécifier des lieux différents lorsque, par exemple, un infirmier en chef souhaite réserver des horaires à plusieurs membres du personnel d'un hôpital ou, dans un autre exemple, le directeur d'un hôtel veut réserver les employés de plusieurs hôtels. |
budget_requirements[] |
Spécification de budget pour le problème de planification. Le niveau de priorité par défaut pour chacune de ces exigences est |
assignments_hint[] |
Décalez les affectations à utiliser comme solution provisoire (c’est-à-dire une indice de solution) au problème de planification. Les indications d'attribution sont ignorées si l'attribution contredit un quart de travail non attribuable ou une demande de planification. |
SolveShiftSchedulingResponse
Réponse pour l'API de planification du personnel. Pour chaque réponse, shift_assignments
sera vide si la valeur solution_status
renvoyée est NOT_SOLVED_DEADLINE_EXCEEDED
ou INFEASIBLE
. Si la valeur solution_status
renvoyée est OPTIMAL
ou FEASIBLE
, une attribution d'équipe valide est renvoyée dans shift_assignments
. Pour que l'attribution d'un ajustement soit valide, les propriétés suivantes sont conservées:
- Chaque identifiant d'employé est contenu dans l'ensemble d'employés indiqué dans la demande.
- Chaque ID de rôle attribué à l'employé est contenu dans l'ensemble des ID de rôle de l'employé en question.
- Chaque ID d'équipe est contenu dans l'ensemble des quarts fourni dans la requête.
- Chaque ID d'équipe n'est pas l'un des ID non attribuables pour l'employé donné.
- Un employé ne sera jamais affecté à deux quarts de travail qui se chevauchent.
- Pour la planification donnée, aucune des contraintes ni des requêtes avec le niveau de priorité
PRIORITY_MANDATORY
n'est enfreinte.
Champs | |
---|---|
request_id |
ID de la requête à laquelle cette réponse est associée. |
solution_status |
État de la solution renvoyée. Si la solution n'est ni FÉASIBLE, ni OPTIMALE, les autres champs de ce fichier proto peuvent être vides. Si l'état est NOT_SOLVED_DEADLINE_EXCEEDED, cela signifie que le délai a été atteint sans que nous ayons trouvé de solution réalisable ni déterminé s'il en existe une. Les requêtes peuvent être impossibles si les contraintes du niveau de priorité MANDATORY ne peuvent pas toutes être satisfaites. |
shift_assignments[] |
Liste de toutes les attributions. Chaque |
status_message |
Si |