0 / 0
Torna alla versione inglese della documentazione
Formati dei dati di input e output per Decision Optimization Modelli OPL
Ultimo aggiornamento: 05 dic 2024
Decision Optimization Formati dei file di input e output del modello OPL

Per la distribuzione è necessario utilizzare i seguenti formati di dati di input e output per i modelli OPL Decision Optimization.

Formati di dati OPL

In un modello OPL è necessario dichiarare un tupleset, per ogni tabella utilizzata. L'esempio seguente mostra un estratto di un modello 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 {
	[...]
} 

Dati di input

I dati di input possono essere popolati da una fonte di dati esterna. I dati di input per i modelli OPL possono essere forniti in uno di questi formati:

  • .csv lima
  • .dat lima
  • Documento JSON
  • I file delle cartelle di lavoro di Microsoft Excel (.xlsx e " .xls) sono deprecati.

    Per collegarsi ai file di Microsoft Excel, utilizzare un connettore dati. Il connettore dati trasforma il file Excel in un file " .csv. Per ulteriori informazioni, vedere Dati di riferimento.

file .dat
Sono supportate tutte le strutture dati OPL. Ad esempio:
{Parameters = <100, 5000>;

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

Spokes = { <"A", 360, 1080>, <"B", 400, 1150> };
Documento JSON o cartella di lavoro Microsoft Excel
È possibile utilizzare solo tuples e tuple sets come input nel modello OPL.

I tipi supportati per i campi tupla sono int, float o string.

Per mappare i valori di input nel modello OPL, è necessario seguire queste regole:
  • L'elemento OPL deve avere lo stesso nome della proprietà JSON o del foglio di lavoro Excel.
  • Un insieme di tuple può essere popolato da un array di proprietà JSON o da un foglio di lavoro.
  • Un elemento tupla può essere popolato da un oggetto proprietà JSON o da un foglio Excel a riga singola.
Il formato JSON può essere utilizzato per l'integrazione del modello OPL, in modo da facilitare la generazione dei dati di input e l'analisi dei risultati.
{
  "Parameters": {
    "maxTrucks": 100,
    "maxVolume": 5000
  },
  "Hubs": [
    {  "name": "G"  },
    {  "name": "H"  }
  ],
  "Spokes": [
    { "name": "A",
      "minDepTime": 360,
      "maxArrTime": 1080 },
    { "name": "B",
      "minDepTime": 400,
      "maxArrTime": 1150  },
   . . .
}

È possibile utilizzare un file Excel invece di un file .dat. Questa opzione è diversa da IBM ILOG CPLEX Optimization Studio dove il file Excel deve essere specificato come origine esterna nel file .dat. In Decision Optimization il file Excel deve essere incluso nel modello e non può essere richiamato da un file .dat.

La limitazione all'uso di tuple e insiemi di tuple come input OPL serve a facilitare l'integrazione con le fonti di dati. Ad esempio, è possibile accedere alle sorgenti di dati SQL e creare un flusso di dati con un minimo sforzo; è possibile accedere alle sorgenti di dati NoSQL e trasformare automaticamente i dati in tabelle. Se necessario, lo sviluppatore del modello di ottimizzazione può riformulare i dati per popolare altre strutture di dati durante l'ottimizzazione, ma questa manipolazione non deve influire sui dati di input o di output.

Dati di output

Se l'output è un file di testo, la funzione obiettivo e i valori delle variabili decisionali sono forniti in un formato non strutturato.

Se il formato di output è JSON, '.csv o Excel, è necessario definire ciò che si desidera esportare al client nel blocco di post-elaborazione. La post-elaborazione è tutto il codice che segue la sezione subject to nel file .mod. Pertanto, per definire l'output JSON, '.csv o Excel, è necessario dichiarare tuple o insiemi di tuple nella post-elaborazione.

Se non si dichiarano elementi di output nel blocco di postelaborazione del file .mod, non vengono generati dati di output.

Nell'esempio seguente, il file di output conterrà il valore di Result e NbTrucksOnRouteRes e la funzione obiettivo perché questi elementi sono stati definiti nella post-elaborazione.

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};
Ricerca e risposta AI generativa
Queste risposte sono generate da un modello di lingua di grandi dimensioni in watsonx.ai basato sul contenuto della documentazione del prodotto. Ulteriori informazioni