Translation not up to date
Korzystając z modelu Decision Optimization , można używać następujących identyfikatorów danych wejściowych i wyjściowych oraz kombinacji rozszerzeń.
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 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 |
- 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
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
ituple sets
.Obsługiwane typy dla pól krokowych to:
int
,float
lubstring
.
- 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
{
"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};