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

Этот пример показывает, как использовать гибридную схему для оптимизации функции с помощью генетического алгоритма и другого метода оптимизации. 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 с опциями plot в качестве дополнительного аргумента при задании гибридной функции.

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

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

Похожие темы