Генетический Алгоритм, Как правильно написать фитнес функцию?
У вас все параметры описаны так, что приидиальном варианте значение каждого из них будет равно 1.
Например:
Конфликтные пары для учителей = [0..1] (КоличествоПарКоторыеОниПреподают - КоличествоКонфликтныхПар )/КоличествоПарКоторыеОниПреподают

КоличествоКонфликтныхПар = 0, значение параметра =1.

В итоге вам нужно исками максимум а не минимум от вашей функции. 
Может переделать описание параметров наоборот, чтобы целевое значение стремились к 0?
Например:
Конфликтные пары для учителей = [0..1] КоличествоКонфликтныхПар/КоличествоПарКоторыеОниПреподают
Я дико извиняюсь все это оказывается работало, просто я был тупой и не заметил .... что  в параметры Лишние уроки входили и окна тоже, из за чего мой ГА приходил максимально возможному решению. Так же я использовал "функцию активации", знаю неверный термин но все же

private const int _eps = 1000;

private static double Activation(double value)
{
    return Math.Floor(value*_eps)/_eps;
}