Example #1
0
        private void Init()
        {
            horizon                = factoryData.Horizon;
            solver                 = new Solver("Factory Scheduling");
            tasks                  = factoryData.getFlatTaskList();
            taskTypes              = factoryData.getTaskTypes();
            taskStructures         = new TaskAlternative[tasks.Length];
            location2Task          = new TaskAlternative[factoryData.NbWorkLocations][];
            tool2Task              = new List <IntervalVar> [factoryData.NbTools];
            toolIntervalVar2TaskId = new List <int> [factoryData.NbTools];
            tool2TransitionTimes   = new List <IntVar> [factoryData.NbTools];

            taskType2Tool = new List <Tool> [taskTypes.Length];
            selectedTool  = new List <IntVar>();
            for (int tt = 0; tt < taskTypes.Length; tt++)
            {
                taskType2Tool[tt] = new List <Tool>();
            }

            foreach (Tool tool in factoryData.Tools)
            {
                foreach (int taskType in tool.TaskTypes)
                {
                    taskType2Tool[taskType].Add(tool);
                }
            }
            for (int d = 0; d < factoryData.NbWorkLocations; d++)
            {
                location2Task[d] = new TaskAlternative[factoryData.Locations[d].NbTasks];
            }
            for (int t = 0; t < factoryData.NbTools; t++)
            {
                tool2Task[t] = new List <IntervalVar>();
                toolIntervalVar2TaskId[t] = new List <int>();
                tool2TransitionTimes[t]   = new List <IntVar>();
            }

            allToolSequences = new SequenceVar[factoryData.NbTools - 1];

            startingTimes = new IntVar[factoryData.NbTools - 1][];
            endTimes      = new IntVar[factoryData.NbTools - 1][];
        }