0 / 0
Go back to the English version of the documentation
Formaty plików danych wejściowych i wyjściowych modelu
Last updated: 20 wrz 2023
Formaty plików danych wejściowych i wyjściowych modelu Decision Optimization

Korzystając z modelu Decision Optimization , można używać następujących identyfikatorów danych wejściowych i wyjściowych oraz kombinacji rozszerzeń.

W tej tabeli przedstawiono obsługiwane kombinacje typów plików dla opcji Decision Optimization w programie Watson Machine Learning:
Typ modelu Typ pliku wejściowego Typ pliku wyjściowego Komentarze
cplex
.lp
.mps
.sav
.feasibility
.prm
.jar dla modeli Java™
.xml
.json

Nazwa pliku wyjściowego musi być nazwą solution

Format danych wyjściowych można określić za pomocą interfejsu API.

Pliki typu .lp, .mpsi .sav mogą być kompresowane przy użyciu produktu gzip lub bzip2, a następnie ładowane jako, na przykład, .lp.gz lub .sav.bz2.

Schematy dla formatów CPLEX dla rozwiązań, konfliktów i plików wykonalności są dostępne do pobrania w archiwum produktu cplex_xsds.zip z poziomu produktu Decision Optimization github.

cpo .cpo
.jar dla modeli Java
.xml
.json

Nazwa pliku wyjściowego musi być nazwą solution

Format danych wyjściowych można określić za pomocą parametru rozwiązywania.

Informacje o rodzimym formacie plików dla modeli CPO można znaleźć w temacie Składnia formatu pliku optymalizatora CP.

opl
.mod
.dat
.oplproject
.xls
.json
.csv
.jar dla modeli Java
.xml
.json
.txt
.csv
.xls
Format danych wyjściowych jest zgodny z typem danych wejściowych, ale można go określić za pomocą parametru rozwiązywania, jeśli jest to konieczne. Aby skorzystać z konektorów danych, należy użyć formatu .csv .

Można wdrażać tylko te modele, które są definiowane za pomocą zestawów krotek; inne struktury OPL nie są obsługiwane.

Informacje na temat odczytu i zapisu danych wejściowych i wyjściowych w OPL można znaleźć w sekcji Modele OPL.

docplex
.py
*.* (input data)
Każdy typ pliku wyjściowego, który jest określony w modelu. Każdy format może być używany w kodzie Python , ale w celu korzystania z konektorów danych należy użyć formatu .csv .

Aby odczytywać i zapisywać dane wejściowe i wyjściowe w języku Python, należy użyć komend get_input_stream("filename") i get_output_stream("filename"). Patrz Przykład sumy funkcji API DOcplex

Ograniczenia dotyczące identyfikatorów danych
Nazwa pliku ma następujące ograniczenia:
  • Jest ograniczona do 255 znaków
  • Może zawierać tylko znaki ASCII
  • Nie może zawierać znaków /\?%*:|"<>, znaku spacji ani znaku o kodzie zero.
  • Nie może zawierać znaku _ jako pierwszego znaku.

Formaty danych OPL

Model OPL deklaruje krotki, zmienne decyzyjne, funkcje obiektywne i ograniczenia problemu optymalizacji przy użyciu słów kluczowych tuple, dvar, minimize (lub maximize) i subject to. W poniższym przykładzie przedstawiono wyciąg z modelu 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 {
	[...]
} 

Dane wejściowe OPL

Dane wejściowe mogą być zapełniane z zewnętrznego źródła danych. Dane wejściowe dla modeli OPL mogą być dostarczane w jednym z następujących formatów:

  • .dat plik
  • Dokument JSON
  • Skoroszyt programu Microsoft Excel (.xls dla Excel 2003 lub .xlsx dla Excel 2007), pliki .csv
Plik .dat
Obsługiwane są wszystkie struktury danych OPL. Na przykład
{Parameters = <100, 5000>;

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

Spokes = { <"A", 360, 1080>, <"B", 400, 1150> };
Dokument JSON lub skoroszyt programu Microsoft Excel
Jako danych wejściowych w modelu OPL można używać tylko komponentów tuples i tuple sets .

Obsługiwane typy dla pól krokowych to: int, float lub string.

Aby odwzorować wartości wejściowe na model OPL, należy postępować zgodnie z następującymi regułami:
  • Element OPL musi mieć taką samą nazwę, jak właściwość JSON lub arkusz Excel.
  • Zestaw krotki może zostać zapełniony przez tablicę właściwości JSON lub arkusz.
  • Element krotki może zostać zapełniony przez obiekt właściwości JSON lub za pomocą pojedynczego arkusza wiersza Excel.

Ograniczeniem w danych wejściowych jest ułatwienie integracji ze źródłami danych. Na przykład można uzyskać dostęp do źródeł danych SQL i uzyskać dostęp do danych przesyłanych strumieniowo z minimalnym nakładem pracy; dostęp do źródeł danych NoSQL można uzyskać, a dane mogą być automatycznie transformowane do tabel. W razie potrzeby programista modelu optymalizacji może ponownie sformułować dane, aby zapełnić inne struktury danych podczas optymalizacji, ale ta manipulacja nie może mieć wpływu na dane wejściowe lub wyjściowe.

Przykład JSON

Format JSON może być używany na potrzeby integracji modelu OPL, dzięki czemu łatwiej jest generować dane wejściowe i analizować wyniki.
{
  "Parameters": {
    "maxTrucks": 100,
    "maxVolume": 5000
  },
  "Hubs": [
    {  "name": "G"  },
    {  "name": "H"  }
  ],
  "Spokes": [
    { "name": "A",
      "minDepTime": 360,
      "maxArrTime": 1080 },
    { "name": "B",
      "minDepTime": 400,
      "maxArrTime": 1150  },
   . . .
}

Plik programu Excel

Zamiast używać pliku .dat, można użyć pliku programu Excel. Ta opcja różni się od opcji IBM ILOG CPLEX Optimization Studio , w której plik programu Excel musi być określony jako źródło zewnętrzne w pliku .dat . W opcji Decision Optimization plik programu Excel musi być dołączony do modelu i nie może być wywoływany z pliku .dat .

Dane wyjściowe OPL

Jeśli dane wyjściowe są plikami tekstowymi, wówczas funkcja celu i wartości zmiennych decyzyjnych są udostępniane w formacie nieustrukturyzowanym.

Jeśli formatem danych wyjściowych jest format JSON, .csv lub Excel, należy zdefiniować, co ma zostać wyeksportowane z powrotem do klienta w bloku przetwarzania końcowego. Przetwarzanie końcowe to cały kod, który jest zgodny z sekcją subject to w pliku .mod . Dlatego w celu zdefiniowania danych wyjściowych w formacie JSON, .csv lub Excel należy zadeklarować zestawy krotki lub krotki w procesie przetwarzania końcowego.

Jeśli element wyjściowy nie deklaruje elementów wyjściowych w bloku przetwarzania końcowego pliku .mod , nie są generowane żadne dane wyjściowe.

W poniższym przykładzie plik wyjściowy będzie zawierał wartość Result i NbTrucksOnRouteRes oraz funkcję obiektywną, ponieważ elementy te są zdefiniowane w procesie przetwarzania końcowego.

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};
Generative AI search and answer
These answers are generated by a large language model in watsonx.ai based on content from the product documentation. Learn more