// TODO: Testing
        public override void ValidateIndividual(IndividualBase individual)
        {
            TaskSchedulingSolution schedulingSolution = (individual as TaskSchedulingSolution);

            List <List <TaskIndexingNode> > TasksGroupedByProcessor = GroupTasksByProcessor(schedulingSolution);

            for (int processorIdx = 0; processorIdx < ProcessorCount; ++processorIdx)
            {
                List <TaskIndexingNode> TasksInProcessor = TasksGroupedByProcessor[processorIdx];
                for (int probableDependantIdx = 0; probableDependantIdx < TasksInProcessor.Count; ++probableDependantIdx)
                {
                    int probableDependantTask = TasksInProcessor[probableDependantIdx].Task;
                    for (int probableDependencyIdx = probableDependantIdx + 1; probableDependencyIdx < TasksInProcessor.Count; ++probableDependencyIdx)
                    {
                        int probableDependencyTask = TasksInProcessor[probableDependencyIdx].Task;
                        if (CommGraph.DependsOn(probableDependantTask, probableDependencyTask))
                        {
                            schedulingSolution.SwapGenesAt(TasksInProcessor[probableDependantIdx].Index, TasksInProcessor[probableDependencyIdx].Index);
                            TasksInProcessor.Swap(probableDependantIdx, probableDependencyIdx);
                            int Temp = TasksInProcessor[probableDependantIdx].Index;
                            TasksInProcessor[probableDependantIdx].Index  = TasksInProcessor[probableDependencyIdx].Index;
                            TasksInProcessor[probableDependencyIdx].Index = Temp;
                            probableDependantIdx = -1;
                            break;
                        }
                    }
                }
            }
        }
        public override void MutateIndividual(IndividualBase individual)
        {
            TaskSchedulingSolution schedulingSolution = (individual as TaskSchedulingSolution);
            int indexA = Aleatoriety.GetRandomInt(TaskCount);
            int indexB;

            do
            {
                indexB = Aleatoriety.GetRandomInt(TaskCount);
            } while (indexB == indexA);
            schedulingSolution.SwapGenesAt(indexA, indexB);
            schedulingSolution.SwapProcessorAt(indexA);
        }