배포하려면 OPL Decision Optimization 모델에 대해 다음 입력 및 출력 데이터 형식을 사용해야 합니다.
OPL 데이터 형식
tupleset
을 선언해야 합니다. 다음 예는 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 {
[...]
}
입력 데이터
외부 데이터 소스에서 입력 데이터를 채울 수 있습니다. OPL 모델에 대한 입력 데이터는 다음 형식 중 하나로 제공될 수 있습니다.
.csv
파일.dat
파일- JSON 문서
- Microsoft Excel 통합 문서(
.xlsx
' 및 '.xls
' ) 파일은 더 이상 사용되지 않습니다.Microsoft Excel 파일에 연결하려면 데이터 커넥터를 사용합니다. 데이터 커넥터는 Excel 파일을 '
.csv
파일로 변환합니다. 자세한 내용은 참조 데이터를 참조하세요.
- .dat 파일
- 모든 OPL 데이터 구조가 지원됩니다. 예를 들면 다음과 같습니다.
{Parameters = <100, 5000>; Hubs = { <"G">, <"H"> }; Spokes = { <"A", 360, 1080>, <"B", 400, 1150> };
- JSON 문서 또는 Microsoft Excel 통합 문서
- OPL 모델에서는
tuples
및tuple sets
만 입력으로 사용할 수 있습니다.튜플 필드에 지원되는 유형은
int
,float
또는string
입니다.입력 값을 OPL 모델에 맵핑하려면 다음 규칙을 따라야 합니다.- OPL 요소의 이름은 JSON 특성 또는 Excel 워크시트의 이름과 동일해야 합니다.
- 튜플 세트는 JSON 특성 배열 또는 워크시트로 채울 수 있습니다.
- 튜플 요소는 JSON 속성 개체 또는 단일 행 Excel 시트로 채울 수 있습니다.
보다 쉽게 입력 데이터를 생성하고 결과를 구문 분석할 수 있도록 JSON 형식을 OPL 모델 통합에 사용할 수 있습니다.{ "Parameters": { "maxTrucks": 100, "maxVolume": 5000 }, "Hubs": [ { "name": "G" }, { "name": "H" } ], "Spokes": [ { "name": "A", "minDepTime": 360, "maxArrTime": 1080 }, { "name": "B", "minDepTime": 400, "maxArrTime": 1150 }, . . . }
.dat를 사용하는 대신 Excel 파일을 사용할 수 있습니다. 이 옵션은 IBM ILOG CPLEX Optimization Studio에서 Excel 파일을 외부 소스로 지정해야 하는
.dat
파일과는 다른 옵션입니다. Decision Optimization에서 Excel 파일은 모델에 포함되어야 하며.dat
파일에서 호출할 수 없습니다.
튜플 및 튜플 집합만 OPL 입력으로 사용하도록 제한한 것은 데이터 소스와의 통합을 용이하게 하기 위한 것입니다. 예를 들어, 최소한의 노력으로 SQL 데이터 원본에 액세스하고 데이터를 스트리밍할 수 있으며, NoSQL 데이터 원본에 액세스하고 데이터를 자동으로 테이블로 변환할 수 있습니다. 필요한 경우 최적화 모델 개발자가 최적화 중에 다른 데이터 구조를 채우도록 데이터를 다시 공식화할 수 있지만 이 조작이 입력 또는 출력 데이터에 영향을 미치지 않아야 합니다.
출력 데이터
출력이 텍스트 파일인 경우 목적 함수 및 의사 결정 변수의 값은 비정형 형식으로 제공됩니다.
출력 형식이 JSON, ' .csv
' 또는 Excel인 경우 후처리 블록에서 클라이언트로 다시 내보낼 내용을 정의해야 합니다. 후처리는 subject to
파일에서 .mod
섹션 다음에 나오는 모든 코드를 말합니다. 따라서 JSON, ' .csv
또는 Excel 출력을 정의하려면 후처리에서 튜플 또는 튜플 집합을 선언해야 합니다.
If you 선언하지 마십시오 output elements in the post-processing block of the .mod
file, 출력 데이터가 생성되지 않습니다.
다음 예제에서는 이러한 요소가 포스트 프로세싱에서 정의되었으므로 출력 파일에 Result
및 NbTrucksOnRouteRes
값과 목적 함수가 포함됩니다.
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};