작업 상점 문제와 비슷한 것을 모델링하려고합니다. 작업을 수행하는 데 다양한 수의 작업을 사용하는 여러 가지 방법으로 수행 할 수있는 여러 작업이 있습니다.MiniZinc에 누락 된 값이있는 선택적 매개 변수
그 정보를 표현하기 위해이 데이터 구조를 설정 한 : jobOptions[j, o, index]
이있는 경우
enum Job;
enum Option;
int: maxTasks;
set of int: TaskIndex = 1..maxTasks;
enum Task;
array[Job, Option, TaskIndex] of opt Task: jobOptions;
, 그것은 작업 j
의 옵션 o
의 index
번째 작업입니다. 누락 된 경우 해당 작업에 대한 해당 옵션은 최대 작업 수를 사용하지 않으며 빈 슬롯 중 하나입니다.
이 배열을 어떻게 초기화 할 수 있는지보고 싶지 않습니다. 그것은 2 차원 배열 인 경우는 3 차원이기 때문에, 나는 배열을 array3d의 세 가지 버전이 있기 때문에, 그러나
jobOptions = array3d(Job, Option, TaskIndex, [
% Job 1
T1, T2, % Option 1
T3, <>, % Option 2
% Job 2
T2, T4, % Option 1
<>, <>, % No second option
|];
이 실패 같은 것을하고 싶은,
jobOptions = [|
T1, T2 |
T3, <>
|];
을 할 수 (par) int
, var int
및 var opt int.
<>
은 var opt int
이므로 (par) opt int
인 네 번째 버전이 필요합니다.
array[Job] of array[int] of array[int]: jobOptions
처럼 뭔가를 시도,하지만 만약 가능하다면, 내가 올바른 구문을 알아낼 수 없습니다.
선택 요소가 누락 된 3d 매개 변수 배열을 초기화하는 방법이 있습니까? 또는이 데이터를 표시하는 더 좋은 방법이 있습니까?