Сравнение алгоритмов роевого интеллекта с нарушениями ограничений
Я хочу сравнить алгоритмы разведки роя в задаче оптимизации. Насколько я понимаю, типичный подход состоит в том, чтобы выполнить несколько прогонов каждого алгоритма (скажем, 30 независимых прогонов с различными начальными числами генератора случайных чисел) и вычислить среднюю производительность каждого из лучших алгоритмов прогона для каждого алгоритма. Затем можно провести статистический тест, чтобы сравнить средние значения двух переменных (скажем, m1 и m2, среднюю производительность наилучшего бега для алгоритмов 1 и 2).
Теперь представьте, что в нашей задаче оптимизации мы рассматриваем только одну целевую функцию. Что если эта функция ограничена и для одного запуска (или, возможно, более) одного алгоритма лучшее решение, которое она может найти, нарушает ограничения функции. Если в данном прогоне алгоритм не может вычислить решение, которое находится в пределах ограничений задачи, как мне поступить, чтобы сравнить производительность этого алгоритма с другим? Первоначально я рассматривал назначение NaN или значения, такого как MAX_DOUBLE, для всех решений, которые нарушают ограничения задачи, но если я это сделаю, то не смогу рассчитать среднюю производительность алгоритма или выполнить статистические тесты.
Что мне делать в таком сценарии? Люди склонны просто выполнять больше прогонов, пока не получат 30 лучших решений, которые не нарушают ограничения проблемы? Как я могу сравнить производительность двух моих алгоритмов экспериментально?