exponenta event banner

Гибридная схема в генетическом алгоритме

В этом примере показано, как использовать гибридную схему для оптимизации функции с использованием генетического алгоритма и другого метода оптимизации. ga может быстро достичь окрестности локального минимума, но для достижения сходимости может потребоваться множество оценок функций. Для ускорения процесса решения сначала выполните команду ga для небольшого числа поколений, чтобы приблизиться к оптимальной точке. Затем используйте решение из ga в качестве начальной точки для другого решателя оптимизации для выполнения более быстрого и эффективного локального поиска.

Функция Розенброка

В этом примере в качестве функции фитнеса используется функция Розенброка (также известная как вторая функция Дежонга):

f (x) = 100 (x (2) -x (1) 2) 2 + (1-x (1)) 2.

Функция Розенброка печально известна в оптимизации из-за медленной сходимости большинство методов проявляют при попытке минимизировать эту функцию. Функция Розенброка имеет уникальный минимум в точке x * = (1,1), где она имеет значение функции f (x *) = 0.

Код функции Розенброка находится в dejong2fcn файл.

type dejong2fcn.m
function scores = dejong2fcn(pop)
%DEJONG2FCN Compute DeJongs second function.
%This function is also known as Rosenbrock's function

%   Copyright 2003-2004 The MathWorks, Inc.

scores = zeros(size(pop,1),1);
for i = 1:size(pop,1)
    p = pop(i,:);
    scores(i) = 100 * (p(1)^2 - p(2)) ^2 + (1 - p(1))^2;
end

Постройте график функции Розенброка в диапазоне -2 < = x (1) < = 2; -2 < = x (2) < = 2.

plotobjective(@dejong2fcn,[-2 2;-2 2]);

Figure contains an axes. The axes contains 2 objects of type surface, contour.

Решение генетического алгоритма

Во-первых, использовать ga один, чтобы найти минимум функции Розенброка.

FitnessFcn = @dejong2fcn;
numberOfVariables = 2;

Включите функции графика для мониторинга процесса оптимизации.

options = optimoptions(@ga,'PlotFcn',{@gaplotbestf,@gaplotstopping});

Задайте поток случайных чисел для воспроизводимости и выполните команду ga с использованием опций.

rng default
[x,fval] = ga(FitnessFcn,numberOfVariables,[],[],[],[],[],[],[],options)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.

Figure Genetic Algorithm contains 2 axes. Axes 1 with title Best: 0.491302 Mean: 664119 contains 2 objects of type line. These objects represent Best fitness, Mean fitness. Axes 2 with title Stopping Criteria contains an object of type bar.

x = 1×2

    0.3454    0.1444

fval = 0.4913

Используя критерии остановки по умолчанию, ga не обеспечивает очень точного решения. Можно изменить критерии остановки, чтобы попытаться найти более точное решение, но ga требуется много оценок функций для приближения к глобальному оптимуму x * = (1,1).

Вместо этого выполните более эффективный локальный поиск, который начинается с ga останавливается с помощью опции гибридной функции в ga.

Добавление гибридной функции

Гибридная функция начинается с точки, где ga останавливается. Варианты гибридных функций: fminsearch, patternsearch, или fminunc. Поскольку этот пример оптимизации является гладким и неограниченным, используйте fminunc в качестве гибридной функции. Обеспечить fminunc с опциями графика в качестве дополнительного аргумента при определении гибридной функции.

fminuncOptions = optimoptions(@fminunc,'PlotFcn',{'optimplotfval','optimplotx'});
options = optimoptions(options,'HybridFcn',{@fminunc, fminuncOptions});

Управляемый ga снова с fminunc в качестве гибридной функции.

[x,fval,exitflag,output] = ga(FitnessFcn,numberOfVariables,[],[],[],[],[],[],[],options)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.

Figure Optimization Plot Function contains 2 axes. Axes 1 with title Current Function Value: 1.72147e-11 contains an object of type line. Axes 2 with title Current Point contains an object of type bar.

Local minimum found.

Optimization completed because the size of the gradient is less than
the value of the optimality tolerance.

Figure Genetic Algorithm contains 2 axes. Axes 1 with title Best: 0.664192 Mean: 4.61776e+06 contains 2 objects of type line. These objects represent Best fitness, Mean fitness. Axes 2 with title Stopping Criteria contains an object of type bar.

x = 1×2

    1.0000    1.0000

fval = 1.7215e-11
exitflag = 1
output = struct with fields:
      problemtype: 'unconstrained'
         rngstate: [1x1 struct]
      generations: 51
        funccount: 2534
          message: 'Optimization terminated: average change in the fitness value less than options.FunctionTolerance....'
    maxconstraint: []
       hybridflag: 1

ga график показывает лучшие и средние значения населения в каждом поколении. Заголовок графика определяет наилучшее значение, найденное ga когда она остановится. Гибридная функция fminunc начинается с лучшей точки, найденной ga. fminunc график показывает решение x и fval, что является результатом использования ga и fminunc вместе. В этом случае использование гибридной функции повышает точность и эффективность решения. output.hybridflag поле показывает, что fminunc останавливается с флагом выхода 1, указывающим, что x является истинным локальным минимумом.

Связанные темы