Ранее я работал с MOEA Framework , который знает концепцию ограничений.То есть решение проблемы может иметь хорошую пригодность, но неосуществимо.Например, при работе с задачей о ранце определенная комбинация предметов может привести к высокой прибыли, но их вес превышает вместимость ранца.Соответствующая фитнес-функция будет включать строки типа:
// Set the fitness (=> profit) of the solution (=> knapsack).
solution.setObjective(0, profit)
// Set the constrain (=> 0.0 if OK, , otherwise the distance to the boundary).
solution.setConstraint(0, (weight <= capacity) ? 0.0 : weight - capacity)
Другим примером в случае многоцелевой проблемы с рюкзаком будет ограничение на то, что в рюкзаке нельзя использовать предметы, которые уже используются в другом рюкзаке.
Имеет ли Jenetics нечто подобное?Или как я могу кодировать ограничения как часть фитнес-функции (или где-то еще)?