Очень длинный комментарий:
Генетические алгоритмы могут быть вложенными.Поместите свой искатель генетического решения в фитнес-функцию.Отдайте его родительскому генетическому алгоритму.Попросите их найти результаты путем «оптимизации входного вектора» из внешнего GA и «оптимизации цели» из внутреннего GA.
Вы даже можете добавить третий слой GA, чтобы протестировать параметры построения GA среднего слоя, потому что мы можемНе знаю, какое пространство поиска нам нужно.Если бы мы знали это, то нам не нужно было бы оптимизировать этот вектор.
Таким образом, вы даже можете уменьшить размер проблемы на GA.
vector:x,y,z
GA1: optimizes x and GA2 parameters
GA2: optimizes y and GA3 parameters
GA3: optimizes z
fitness(x,y,z)
all pass their best fitness to parent
Я не уверен, что это такбудет быстрее / медленнее, чем
GA: optimize x,y,z
fitness(x,y,z)
, потому что я не знаю, может ли мутация GA3 спасти весь оптимизатор от локальных минимумов.Также другая версия:
GA1: optimize GA2
GA2: optimize x,y,z
fitness(x,y,z)
Я не знаю его производительность.Может быть, GA сможет решить, сколько вложенных GA тоже должно быть там
GA0: optimize N, x0,x1,..xM-N
GA1: optimize XM-N+1
GA2: optimize XM-N+2
...
GAM: optimize XM
fitness(X0,X1,..XM)
, но я думаю, слишком большое количество объектов, построенных / разрушенных на всех уровнях, снизит производительность (связанный с пропускной способностью памяти) и читаемость (адбэк обратного вызова).