0 / 0
Volver a la versión inglesa de la documentación
Formatos de datos de entrada y salida para Decision Optimization Modelos OPL
Última actualización: 05 dic 2024
Decision Optimization Formatos de archivos de datos de entrada y salida del modelo OPL

Para el despliegue debe utilizar los siguientes formatos de datos de entrada y salida para los modelos OPL Decision Optimization.

Formatos de datos OPL

En un modelo OPL debes declarar un tupleset, por cada tabla que utilices. El siguiente ejemplo muestra un extracto de un modelo 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 {
	[...]
} 

Datos de entrada

Los datos de entrada pueden rellenarse desde un origen de datos externo. Los datos de entrada para los modelos de OPL se pueden proporcionar en uno de estos formatos:

  • Archivo .csv
  • Archivo .dat
  • Documento JSON
  • Los archivos de libros de Microsoft Excel (.xlsx y ' .xls) están obsoletos.

    Para conectarse a archivos de Microsoft Excel, utilice un conector de datos. El conector de datos transforma su fichero Excel en un fichero ' .csv '. Para más información, véase Datos de referencia.

Archivo .dat
Todas las estructuras de datos de OPL están soportadas. Por ejemplo:
{Parameters = <100, 5000>;

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

Spokes = { <"A", 360, 1080>, <"B", 400, 1150> };
Documento JSON o libro de Microsoft Excel
Sólo puede utilizar tuples y tuple sets como entradas en el modelo OPL.

Los tipos soportados para los campos de tupla son int, float o string.

Para correlacionar los valores de entrada con el modelo OPL, debe seguir estas reglas:
  • El elemento OPL debe tener el mismo nombre que la propiedad JSON o la hoja de cálculo Excel.
  • Un conjunto de tuplas puede rellenarse mediante una matriz de propiedades JSON o una hoja de cálculo.
  • Un elemento tupla puede rellenarse con un objeto de propiedad JSON, o con una hoja Excel de una sola fila.
El formato JSON se puede utilizar para la integración de modelos OPL para que sea más fácil generar datos de entrada y analizar los resultados.
{
  "Parameters": {
    "maxTrucks": 100,
    "maxVolume": 5000
  },
  "Hubs": [
    {  "name": "G"  },
    {  "name": "H"  }
  ],
  "Spokes": [
    { "name": "A",
      "minDepTime": 360,
      "maxArrTime": 1080 },
    { "name": "B",
      "minDepTime": 400,
      "maxArrTime": 1150  },
   . . .
}

Puede utilizar un archivo Excel en lugar de utilizar un archivo .dat. Esta opción es diferente de IBM ILOG CPLEX Optimization Studio donde el archivo Excel debe ser especificado como una fuente externa en el archivo .dat. En Decision Optimization el archivo Excel debe incluirse con el modelo y no puede llamarse desde un archivo .dat.

La limitación de utilizar sólo tuplas y conjuntos de tuplas como entrada OPL es para facilitar la integración con fuentes de datos. Por ejemplo, se puede acceder a fuentes de datos SQL y realizar un flujo de datos con un mínimo esfuerzo; NoSQL y transformar los datos automáticamente en tablas. Si es necesario, el desarrollador de modelos de optimización puede reformular los datos para llenar otras estructuras de datos durante la optimización, pero esta manipulación no debe afectar a los datos de entrada o salida.

Datos de salida

Si su salida es un archivo de texto, la función objetivo y los valores de las variables de decisión se proporcionan en un formato no estructurado.

Si su formato de salida es JSON, ' .csv, o Excel, entonces debe definir lo que desea exportar de vuelta al cliente en el bloque de post-procesamiento. El postprocesamiento es todo el código que sigue a la sección subject to en el archivo .mod. Por lo tanto, para definir la salida JSON, ' .csv o Excel, debe declarar la tupla o los conjuntos de tuplas en el postprocesamiento.

Si no declara elementos de salida en el bloque de postprocesamiento del archivo .mod, no se generarán datos de salida.

En el siguiente ejemplo, el archivo de salida contendrá el valor de Result y NbTrucksOnRouteRes y la función objetivo porque estos elementos se definen en el postprocesamiento.

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};
Búsqueda y respuesta de IA generativa
Estas respuestas las genera un modelo de lenguaje grande en watsonx.ai que se basa en el contenido de la documentación del producto. Más información