0 / 0
Retourner à la version anglaise de la documentation
Formats des données d'entrée et de sortie pour Decision Optimization Modèles OPL
Dernière mise à jour : 05 déc. 2024
Decision Optimization Formats des fichiers de données d'entrée et de sortie du modèle OPL

Pour le déploiement, vous devez utiliser les formats de données d'entrée et de sortie suivants pour les modèles OPL Decision Optimization.

Formats de données OPL

Dans un modèle OPL, vous devez déclarer une tupleset, pour chaque table que vous utilisez. L'exemple suivant montre un extrait d'un modèle OPL :
tuple parameters {
	int maxTrucks;
	int maxVolume;
}
parameters Parameters = ...;

tuple location {
  key string name;
}
{location} Hubs = ...;

tuple spoke {
  key string name;
  int     minDepTime;
  int     maxArrTime;
};
{spoke} Spokes = ...;

dvar int+ TruckOnRoute[Routes][TruckTypeIds] in 0..Parameters.maxTrucks;

[...]

minimize TotalCost;

subject to {
	[...]
} 

Données d'entrée

Les données d'entrées peuvent être ajoutées à partir d'une source de données externe. Les données d'entrée des modèles OPL peuvent être fournies dans l'un des ces formats :

  • fichier .csv
  • fichier .dat
  • Document JSON
  • Les fichiers de classeurs Microsoft Excel (.xlsx et " .xls) sont obsolètes.

    Pour se connecter à des fichiers Microsoft Excel, utiliser un connecteur de données. Le connecteur de données transforme votre fichier Excel en un fichier '.csv. Pour plus d'informations, voir Données référencées.

Fichier .dat
Toutes les structures de données OPL sont prises en charge. Exemple :
{Parameters = <100, 5000>;

Hubs = { <"G">, <"H"> };

Spokes = { <"A", 360, 1080>, <"B", 400, 1150> };
Document JSON ou classeur Microsoft Excel
Vous ne pouvez utiliser que tuples et tuple sets comme entrées dans le modèle OPL.

Les types pris en charge pour les zones de tuples sont int, float ou string.

Pour mapper les valeurs d'entrée à votre modèle OPL, vous devez suivre ces règles :
  • L'élément OPL doit avoir le même nom que la propriété JSON ou le classeur Excel.
  • Un ensemble de tuples peut être rempli par un tableau de propriétés JSON ou une feuille de calcul.
  • Un élément tuple peut être alimenté par un objet de propriété JSON ou par une feuille Excel à une seule ligne.
Le format JSON peut être utilisé pour l'intégration du modèle OPL afin de faciliter la génération des données d'entrée et l'analyse des résultats.
{
  "Parameters": {
    "maxTrucks": 100,
    "maxVolume": 5000
  },
  "Hubs": [
    {  "name": "G"  },
    {  "name": "H"  }
  ],
  "Spokes": [
    { "name": "A",
      "minDepTime": 360,
      "maxArrTime": 1080 },
    { "name": "B",
      "minDepTime": 400,
      "maxArrTime": 1150  },
   . . .
}

Vous pouvez utiliser un fichier Excel au lieu d'un fichier .dat. Cette option est différente de IBM ILOG CPLEX Optimization Studio où le fichier Excel doit être spécifié comme source externe dans le fichier .dat. Dans Decision Optimization le fichier Excel doit être inclus dans le modèle et ne peut pas être appelé à partir d'un fichier .dat.

La limitation à l'utilisation de tuples et d'ensembles de tuples en tant qu'entrée OPL a pour but de faciliter l'intégration avec les sources de données. Par exemple, il est possible d'accéder à des sources de données SQL et d'en extraire des données avec un minimum d'effort ; NoSQL il est possible d'accéder à des sources de données et de transformer automatiquement les données en tables. Si nécessaire, le développeur du modèle d'optimisation peut reformuler les données pour remplir d'autres structures de données pendant l'optimisation, mais cette manipulation ne doit pas affecter les données d'entrée ou de sortie.

Données de sortie

Si votre résultat est un fichier texte, la fonction objective et les valeurs des variables de décision sont fournies dans un format non structuré.

Si votre format de sortie est JSON, '.csv ou Excel, vous devez définir ce que vous souhaitez exporter vers le client dans le bloc de post-traitement. Le post-traitement est tout le code qui suit la section subject to dans le fichier .mod. Ainsi, pour définir une sortie JSON, " .csv ou Excel, vous devez déclarer des ensembles de n-uplets ou de n-uplets dans le post-traitement.

Si vous ne déclarez pas d'éléments de sortie dans le bloc de post-traitement du fichier .mod, aucune donnée de sortie n'est générée.

Dans l'exemple suivant, le fichier de sortie contiendra la valeur de Result et NbTrucksOnRouteRes ainsi que la fonction objective car ces éléments sont définis dans le post-traitement.

subject to {
   [...]
}

tuple result {
  float totalCost;
}
result Result;

execute {
     Result.objValue = cplex.getObjValue();
}

tuple nbTrucksOnRouteRes {
  key string	spoke;
  key string	hub;
  key string	truckType;
  int			nbTruck;
}
{nbTrucksOnRouteRes} NbTrucksOnRouteRes =
  {<r.spoke, r.hub, t, TruckOnRoute[r][t]> | r in Routes, t in TruckTypeIds :
                                                              TruckOnRoute[r][t] > 0};
Recherche et réponse à l'IA générative
Ces réponses sont générées par un modèle de langue de grande taille dans watsonx.ai en fonction du contenu de la documentation du produit. En savoir plus