private void ConfigureSequencersFromDistribution()
        {
            for (int t = 0; t < _workers.Count; t++)
            {
                var config = new TaskSequencer.Configuration( _workers[t], _distributedTasks[t]);
                _sequencers[t].Configure(config);
            }

            Optimize();
        }
        public void SetSequences(List<TaskSequence> sequences)
        {
            int workerIndex = 0;
            //Console.WriteLine(sequences.Count); // Redundant output, see constructor
            foreach (TaskSequence sequence in sequences)
            {
                if (sequence != null)
                {
                    foreach (Task task in sequence.Tasks)
                    {
                        _taskDistributedWorker[task.Id] = workerIndex;
                    }
                }
                workerIndex++;
            }

            UpdateDistributedTasksFromDistribution();

            for (int t = 0; t < _workers.Count; t++)
            {
                TaskSequencer.Configuration config;

                if (_distributedTasks[t].Count > 0 & sequences[t] != null)
                {
                    var tasks = CloneTaskList(sequences[t].Tasks);

                    config = new TaskSequencer.Configuration(_workers[t], tasks, (sequences[t]).Fitness, true);
                }
                else
                {
                    config = new TaskSequencer.Configuration(_workers[t], new List<Task>());
                }

                _sequencers[t].Configure(config);
            }

            Optimize();
        }