Реализация дифференциальной эволюции Scipy (https://docs.scipy.org/doc/scipy-0.17.0/reference/generated/scipy.optimize.Differential_evolution.html) использует либо латинский гиперкуб, либо случайный метод для инициализации популяции. Выборка латинского гиперкуба пытается максимально охватить доступное пространство параметров. «random» инициализирует популяцию случайным образом. Мне интересно, можно ли указать начальные значения для каждого параметра вместо того, чтобы полагаться на эти алгоритмы по умолчанию.
Для сложных моделей (особенно тех, которые математически неразрешимы и, следовательно, должны быть смоделированы) я заметил, что 2 независимых прогона дифференциальной эволюции scipy, вероятно, дают разные результаты после X итераций алгоритма (я обычно устанавливаю X = 100, чтобы избежать запуска агоритм в течение нескольких дней). Я думаю, это потому, что (1) инициализация популяции не идентична между двумя независимыми прогонами (из-за стохастического характера методов инициализации популяции «случайный» и «гиперкуб») и (2) в прогнозировании модели присутствует шум. Таким образом, я думаю запустить ~ 10 независимых прогонов DE со 100 итерациями, выбрать наиболее подходящий набор параметров для 10 прогонов и использовать этот набор в качестве начальных значений для финального прогона с большим количеством итераций (скажем, 200). Проблема в том, что я не вижу способа вручную ввести эти начальные значения в реализации DE scipy. Буду очень признателен, если кто-нибудь из сообщества сможет мне помочь.