0 / 0
영어 버전 문서로 돌아가기
Decision Optimization OPL 모델
마지막 업데이트 날짜: 2024년 12월 05일
Decision Optimization OPL 모델 입력 및 출력 데이터 파일 형식

배포하려면 OPL Decision Optimization 모델에 대해 다음 입력 및 출력 데이터 형식을 사용해야 합니다.

OPL 데이터 형식

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 모델에서는 tuplestuple 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, 출력 데이터가 생성되지 않습니다.

다음 예제에서는 이러한 요소가 포스트 프로세싱에서 정의되었으므로 출력 파일에 ResultNbTrucksOnRouteRes 값과 목적 함수가 포함됩니다.

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};
일반적인 AI 검색 및 응답
이러한 응답은 제품 문서의 컨텐츠를 기반으로 하는 watsonx.ai 의 대형 언어 모델에 의해 생성됩니다. 자세히 알아보기