surrogateopt

Суррогатная оптимизация для глобальной минимизации длительных целевых функций

Описание

surrogateopt функция является глобальным решателем для длительных целевых функций.

surrogateopt попытки решить задачи формы

minxf(x) таким образом , что {lbxubc(x)0xi целое число, iintcon.

Решатель ищет глобальный минимум целевой функции с действительным знаком в нескольких размерностях согласно границам, дополнительным целочисленным ограничениям и дополнительным нелинейным ограничениям неравенства. surrogateopt подходит лучше всего для целевых функций, которые занимают много времени, чтобы оценить. Целевая функция может быть несглаженной. Решатель требует конечных границ на всех переменных. Решатель может опционально обеспечить файл контрольной точки, чтобы включить восстановление после катастрофических отказов или частичное выполнение или продолжение оптимизации после удовлетворения останавливающемуся условию.

пример

x = surrogateopt(objconstr,lb,ub) поиски глобального минимума objconstr(x) в области lb <= x <= ub. Если objconstr(x) возвращает структуру, затем surrogateopt поиски минимума objconstr(x).FvalСогласно objconstr(x).Ineq <= 0.

Примечание

Передача Дополнительных Параметров (Optimization Toolbox) объясняет, как передать дополнительные параметры целевой функции при необходимости.

пример

x = surrogateopt(objconstr,lb,ub,intcon) требует, чтобы переменные перечислили в intcon примите целочисленные значения.

пример

x = surrogateopt(___,options) изменяет поисковую процедуру с помощью опций в options. Задайте options после любой комбинации входных аргументов в предыдущих синтаксисах.

пример

x = surrogateopt(problem) поиски минимума для problem, структура описана в problem.

пример

x = surrogateopt(checkpointFile) продолжает запускать оптимизацию от состояния в сохраненном файле контрольной точки. Смотрите работу с Файлами контрольной точки.

пример

x = surrogateopt(checkpointFile,opts) продолжает запускать оптимизацию от состояния в сохраненном файле контрольной точки и заменяет опции в checkpointFile с теми в opts. Смотрите файл контрольной точки.

пример

[x,fval] = surrogateopt(___) также возвращает лучшее (наименьшее) значение целевой функции, найденной решателем, с помощью любой из комбинаций входных аргументов в предыдущих синтаксисах.

пример

[x,fval,exitflag,output] = surrogateopt(___) также возвращает exitflag, целое число, описывающее причину решатель, остановленный, и output, структура, описывающая процедуру оптимизации.

пример

[x,fval,exitflag,output,trials] = surrogateopt(___) также возвращает структуру, содержащую все оцененные точки и значения целевой функции в тех точках.

Примеры

свернуть все

Ищите минимум верблюда с шестью горбами, назад функционируют в области -2.1 <= x(i) <= 2.1. Эта функция имеет два глобальных минимума со значением целевой функции -1.0316284... и четыре локальных минимума с более высокими значениями целевой функции.

rng default % For reproducibility
objconstr = @(x)(4*x(:,1).^2 - 2.1*x(:,1).^4 + x(:,1).^6/3 ...
    + x(:,1).*x(:,2) - 4*x(:,2).^2 + 4*x(:,2).^4);
lb = [-2.1,-2.1];
ub = -lb;
x = surrogateopt(objconstr,lb,ub)

Surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
x = 1×2

    0.0895   -0.7130

Найдите минимум функции Розенброка

100(x(2)-x(1)2)2+(1-x(1))2

подвергните нелинейному ограничению, что решение находится в диске радиуса 1/3 вокруг точки [1/3,1/3]:

(x(1)-1/3)2+(x(2)-1/3)2(1/3)2.

Для этого запишите функцию objconstr(x) это возвращает значение функции Розенброка в поле Fval структуры, и возвращает нелинейное ограничительное значение в форме c(x)0 в поле Ineq структуры.

type objconstr
function f = objconstr(x)
f.Fval = 100*(x(2) - x(1)^2)^2 + (1 - x(1))^2;
f.Ineq = (x(1)-1/3)^2 + (x(2)-1/3)^2 - (1/3)^2;

Вызовите surrogateopt использование нижних границ 0 и верхних границ 2/3 на каждом компоненте.

lb = [0,0];
ub = [2/3,2/3];
[x,fval,exitflag] = surrogateopt(@objconstr,lb,ub)

Surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
x = 1×2

    0.6541    0.4277

fval = 0.1197
exitflag = 0

Проверяйте значение нелинейного ограничения в решении.

disp(objconstr(x).Ineq)
   6.7195e-04

Ограничительное значение функции является близким нулем, указывая, что ограничение активно в решении.

Найдите минимум ps_example функция для двумерной переменной x чей первый компонент ограничивается целочисленными значениями, и все компоненты между –5 и 5.

intcon = 1;
rng default % For reproducibility
objconstr = @ps_example;
lb = [-5,-5];
ub = [5,5];
x = surrogateopt(objconstr,lb,ub,intcon)

Surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
x = 1×2

   -5.0000   -0.0005

Минимизируйте верблюда с шестью горбами, назад функционируют в области -2.1 <= x(i) <= 2.1. Эта функция имеет два глобальных минимума со значением целевой функции -1.0316284... и четыре локальных минимума с более высокими значениями целевой функции.

Чтобы систематически искать область, используйте обычную сетку начальных точек. Установите 120 как максимальное количество вычислений функции. Используйте 'surrogateoptplot' функция plot. Изучать 'surrogateoptplot' постройте, смотрите, Интерпретируют surrogateoptplot.

rng default % For reproducibility
objconstr = @(x)(4*x(:,1).^2 - 2.1*x(:,1).^4 + x(:,1).^6/3 ...
    + x(:,1).*x(:,2) - 4*x(:,2).^2 + 4*x(:,2).^4);
lb = [-2.1,-2.1];
ub = -lb;
[Xpts,Ypts] = meshgrid(-3:3);
startpts = [Xpts(:),Ypts(:)];
options = optimoptions('surrogateopt','PlotFcn','surrogateoptplot',...
    'InitialPoints',startpts,'MaxFunctionEvaluations',120);
x = surrogateopt(objconstr,lb,ub,options)

Surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
x = 1×2

   -0.0904    0.7127

Создайте структуру задачи, представляющую верблюда с шестью горбами, назад функционируют в области -2.1 <= x(i) <= 2.1. Установите 120 как максимальное количество вычислений функции.

rng default % For reproducibility
objconstr = @(x)(4*x(:,1).^2 - 2.1*x(:,1).^4 + x(:,1).^6/3 ...
    + x(:,1).*x(:,2) - 4*x(:,2).^2 + 4*x(:,2).^4);
options = optimoptions('surrogateopt','MaxFunctionEvaluations',120);
problem = struct('objective',objconstr,...
    'lb',[-2.1,-2.1],...
    'ub',[2.1,2.1],...
    'options',options,...
    'solver','surrogateopt');
x = surrogateopt(problem)

Surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
x = 1×2

    0.0895   -0.7130

Минимизируйте верблюда с шестью горбами, назад функционируют и возвращают и точку минимизации и значение целевой функции. Установите опции подавлять все другое отображение.

rng default % For reproducibility
objconstr = @(x)(4*x(:,1).^2 - 2.1*x(:,1).^4 + x(:,1).^6/3 ...
    + x(:,1).*x(:,2) - 4*x(:,2).^2 + 4*x(:,2).^4);
lb = [-2.1,-2.1];
ub = -lb;
options = optimoptions('surrogateopt','Display','off','PlotFcn',[]);
[x,fval] = surrogateopt(objconstr,lb,ub,options)
x = 1×2

    0.0895   -0.7130

fval = -1.0316

Контролируйте суррогатный процесс оптимизации путем запроса того surrogateopt возвратите больше выходные параметры. Используйте 'surrogateoptplot' функция plot. Изучать 'surrogateoptplot' постройте, смотрите, Интерпретируют surrogateoptplot.

rng default % For reproducibility
objconstr = @(x)(4*x(:,1).^2 - 2.1*x(:,1).^4 + x(:,1).^6/3 ...
    + x(:,1).*x(:,2) - 4*x(:,2).^2 + 4*x(:,2).^4);
lb = [-2.1,-2.1];
ub = -lb;
options = optimoptions('surrogateopt','PlotFcn','surrogateoptplot');
[x,fval,exitflag,output] = surrogateopt(objconstr,lb,ub,options)

Surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
x = 1×2

    0.0895   -0.7130

fval = -1.0316
exitflag = 0
output = struct with fields:
        elapsedtime: 32.8066
          funccount: 200
    constrviolation: 0
               ineq: [1x0 double]
           rngstate: [1x1 struct]
            message: 'Surrogateopt stopped because it exceeded the function evaluation limit set by ...'

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

rng default % For reproducibility
objconstr = @(x)(4*x(:,1).^2 - 2.1*x(:,1).^4 + x(:,1).^6/3 ...
    + x(:,1).*x(:,2) - 4*x(:,2).^2 + 4*x(:,2).^4);
lb = [-2.1,-2.1];
ub = -lb;
options = optimoptions('surrogateopt','MaxFunctionEvaluations',20);
[x,fval,exitflag,output,trials] = surrogateopt(objconstr,lb,ub,options);

Surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.

Оптимизируйте еще для 20 вычислений функции, начинающих с ранее оцененных точек.

options.InitialPoints = trials;
[x,fval,exitflag,output,trials] = surrogateopt(objconstr,lb,ub,options);

Surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.

Путем сравнения графиков этих 40 вычислений функции тем в поисках Глобального Минимума вы видите, что перезапуск суррогатной оптимизации не является тем же самым как выполнением решателя постоянно.

Чтобы позволить перезапустить суррогатную оптимизацию из-за катастрофического отказа или любой другой причины, определите имя файла контрольной точки.

opts = optimoptions('surrogateopt','CheckpointFile','checkfile.mat');

Создайте задачу оптимизации и установите небольшое количество вычислений функции.

rng default % For reproducibility
objconstr = @(x)(4*x(:,1).^2 - 2.1*x(:,1).^4 + x(:,1).^6/3 ...
    + x(:,1).*x(:,2) - 4*x(:,2).^2 + 4*x(:,2).^4);
lb = [-2.1,-2.1];
ub = -lb;
opts.MaxFunctionEvaluations = 30;
[x,fval,exitflag,output] = surrogateopt(objconstr,lb,ub,opts)

Surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
x = 1×2

    0.0067   -0.7343

fval = -0.9986
exitflag = 0
output = struct with fields:
        elapsedtime: 11.7528
          funccount: 30
    constrviolation: 0
               ineq: [1×0 double]
           rngstate: [1×1 struct]
            message: 'Surrogateopt stopped because it exceeded the function evaluation limit set by ↵'options.MaxFunctionEvaluations'.'

Установите опции использовать 100 вычислений функции (что означает еще 70, чем уже сделанный), и перезапустите оптимизацию.

opts.MaxFunctionEvaluations = 100;
[x2,fval2,exitflag2,output2] = surrogateopt('checkfile.mat',opts)

Surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
x2 = 1×2

    0.0895   -0.7130

fval2 = -1.0316
exitflag2 = 0
output2 = struct with fields:
        elapsedtime: 64.8767
          funccount: 100
    constrviolation: 0
               ineq: [1×0 double]
           rngstate: [1×1 struct]
            message: 'Surrogateopt stopped because it exceeded the function evaluation limit set by ↵'options.MaxFunctionEvaluations'.'

Входные параметры

свернуть все

Целевая функция и нелинейное ограничение в виде указателя на функцию или имени функции. objconstr принимает отдельный аргумент x, где x вектор-строка. objconstr возвращает одно из следующего:

  • Действительный скалярный fval = objconstr(x).

  • Структура. Если структура содержит поле Fval, затем surrogateopt попытки минимизировать objconstr(x).Fval. Если структура содержит поле Ineq, затем surrogateopt попытки сделать все компоненты того поля неположительными: objconstr(x).Ineq <= 0 для всех записей. objconstr(x) должен включать любого Fval или Ineq поля или оба. surrogateopt игнорирует другие поля.

Для примеров с помощью нелинейного ограничения смотрите, Решают задачу с Нелинейными Ограничениями, Суррогатную Оптимизацию с Нелинейным Ограничением, и Решают задачу Выполнимости. Для получения информации о преобразовании между surrogateopt синтаксис структуры и другие решатели, смотрите packfcn и Преобразуйте Нелинейные Ограничения Между Формой surrogateopt и Другими Формами Решателя.

Типы данных: function_handle | char | string

Нижние границы в виде конечного вектора действительных чисел. lb представляет нижние границы, поэлементные в lb  x  ub. Длины lb и ub должно быть равно количеству переменных что objconstr принимает.

Внимание

Несмотря на то, что lb является дополнительным для большинства решателей, lb необходимый вход для surrogateopt.

Примечание

surrogateopt позволяет равные записи в lb и ub. Для каждого i в intcon, у вас должен быть ceil(lb(i)) <= floor(ub(i)). Смотрите детали суррогата построения.

Пример: lb = [0;-20;4] средние значения x(1) ≥ 0, x(2) ≥ -20, x(3) ≥ 4.

Типы данных: double

Верхние границы в виде конечного вектора действительных чисел. ub представляет верхние границы, поэлементные в lb  x  ub. Длины lb и ub должно быть равно количеству переменных что objconstr принимает.

Внимание

Несмотря на то, что ub является дополнительным для большинства решателей, ub необходимый вход для surrogateopt.

Примечание

surrogateopt позволяет равные записи в lb и ub. Для каждого i в intcon, у вас должен быть ceil(lb(i)) <= floor(ub(i)). Смотрите детали суррогата построения.

Пример: ub = [10;-20;4] средние значения x(1) ≤ 10, x(2) ≤ -20, x(3) ≤ 4.

Типы данных: double

Целочисленные переменные в виде вектора положительных целых чисел со значениями от 1 к количеству переменных задачи. Каждое значение в intcon представляет x компонент, который с целочисленным знаком.

Пример: указывать что ровные записи в x с целочисленным знаком, набор intcon к 2:2:nvars.

Типы данных: double

Опции в виде выхода optimoptions.

Для получения дополнительной информации см. Суррогатные Опции Оптимизации.

ОпцияОписаниеЗначения
CheckpointFile

Имя файла для выгрузки и перезапуска оптимизации. Файл имеет .mat тип данных. Смотрите работу с Файлами контрольной точки.

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

Имя файла или путь к файлу, данный как строка или символьный массив. Если вы задаете имя файла без пути, surrogateopt сохраняет файл контрольной точки в текущей папке.

ConstraintToleranceДопуск на нелинейных ограничениях, измеренных как максимум всех нелинейных ограничительных значений функции, где положительные значения указывают на нарушение. Этот допуск является абсолютом (не относительный) допуск; смотрите Допуски и Критерий остановки (Optimization Toolbox).Положительная скалярная величина. Значением по умолчанию является 1e-3.
Display

Level of display возвращен в командной строке.

  • 'final' (значение по умолчанию) — Выходное сообщение в конце итераций.

  • 'off' или эквивалентный 'none' — Никакое отображение.

  • 'iter' Итеративное отображение; смотрите Отображение Командной строки.

InitialPointsНачальные точки для решателя.

Матрица начальных точек, где каждая строка является одной точкой. Или, структура с полем X, чье значение является матрицей начальных точек и этими дополнительными полями:

  • Fval, вектор, содержащий значения целевой функции при начальных точках

  • Ineq, матрица, содержащая нелинейные значения ограничения неравенства

Смотрите Управление Алгоритмом. Значением по умолчанию является [].

MaxFunctionEvaluationsМаксимальное количество оценок целевой функции, останавливающегося критерия.Положительное целое число. Значением по умолчанию является max(200,50*nvar), где nvar количество переменных задачи.
MaxTimeМаксимальное время выполнения в секундах. Фактическое время выполнения может превысить MaxTime из-за времени, требуемого выполнять целевую функцию или из-за задержек параллельной обработки.Положительная скалярная величина. Значением по умолчанию является Inf.
MinSampleDistanceМинимальное расстояние между испытательными точками сгенерировано адаптивным сэмплером. См. Суррогатный Алгоритм Оптимизации.Положительная скалярная величина. Значением по умолчанию является 1e-3.
MinSurrogatePointsМинимальное количество случайной выборки указывает, чтобы создать в начале суррогатной фазы создания. См. Суррогатный Алгоритм Оптимизации.Целое число, по крайней мере, nvar + 1. Значением по умолчанию является max(20,2*nvar), где nvar количество переменных задачи.
ObjectiveLimitДопуск на значении целевой функции. Если расчетное значение целевой функции меньше ObjectiveLimit, остановки алгоритма.Двойное скалярное значение. Значением по умолчанию является -Inf.
OutputFcnВыходная функция, чтобы сообщить относительно решателя прогрессирует или остановить решатель. Смотрите Выходную функцию.Имя функции, указатель на функцию или массив ячеек имен функций или указателей. Значением по умолчанию является [].
PlotFcn

Функция построения графика, чтобы отобразить решатель прогрессирует или остановить решатель. Смотрите Функцию построения графика.

Имя функции, указатель на функцию или массив ячеек имен функций или указателей. Встроенные функции построения графика:

  • 'optimplotfvalconstr' (значение по умолчанию) — График лучшее выполнимое значение целевой функции, найденное как линейный график. Если нет никакой целевой функции, постройте максимальное нелинейное нарушение ограничений как линейный график.

    • График показывает неосуществимые точки красными и допустимыми точками как синие.

    • Если нет никакой целевой функции, заголовок графика показывает количество возможных решений.

  • 'optimplotfval' — Постройте лучшее значение целевой функции, найденное как линейный график.

  • 'optimplotx' — Постройте лучшее решение, найденное как столбчатая диаграмма.

  • 'surrogateoptplot' — Постройте значение целевой функции в каждой итерации, показав, какая фаза алгоритма производит значение и оптимальное значение, найденное и в этой фазе и в целом. Смотрите Интерпретируют surrogateoptplot.

UseParallelБулево значение, указывающее, вычислить ли значения целевой функции параллельно.Булевская переменная. Значением по умолчанию является false. Для алгоритмических деталей смотрите Параллель surrogateopt Алгоритм.

Пример: options = optimoptions('surrogateopt','Display','iter','UseParallel',true)

Структура задачи в виде структуры с этими полями:

  • objective — Целевая функция, которая может включать нелинейные ограничения в виде имени функции или указателя на функцию

  • lb — Нижние границы для x

  • ub — Верхние границы для x

  • solver'surrogateopt'

  • options — Опции создаются с optimoptions

  • rngstate — Дополнительное поле, чтобы сбросить состояние генератора случайных чисел

  • intcon — Дополнительное поле, задающее x с целочисленным знаком компоненты

Примечание

Все поля в problem требуются кроме rngstate и intcon.

Типы данных: struct

Путь к файлу контрольной точки в виде строки или вектора символов. Файл контрольной точки имеет .mat расширение. Если вы задаете имя файла без пути, surrogateopt использует файл контрольной точки в текущей папке.

Файл контрольной точки хранит состояние оптимизации для возобновления оптимизации. surrogateopt обновляет файл контрольной точки в каждом вычислении функции, таким образом, можно возобновить оптимизацию даже когда surrogateopt остановы преждевременно. Для примера смотрите Оптимизацию Суррогата Перезапуска от Файла контрольной точки.

surrogateopt создает файл контрольной точки, когда он имеет допустимый CheckpointFile опция.

Можно изменить некоторые опции при возобновлении от файла контрольной точки. Смотрите opts.

Данные в файле контрольной точки находятся в .mat формат. Чтобы избежать ошибок или других неожиданных результатов, не изменяйте данные прежде, чем вызвать surrogateopt.

Предупреждение

Не возобновляйте surrogateopt от файла контрольной точки, созданного с различной версией MATLAB®. surrogateopt может выдать ошибку или дать противоречивые результаты.

Пример: 'checkfile.mat'

Пример: "C:\Program Files\MATLAB\docs\checkpointNov2019.mat"

Типы данных: char | string

Опции для возобновления оптимизации от файла контрольной точки в виде optimoptions опции (от ограниченного набора), что можно измениться из исходных опций. Опции, которые можно изменить:

  • CheckpointFile

  • Display

  • MaxFunctionEvaluations

  • MaxTime

  • MinSurrogatePoints

  • ObjectiveLimit

  • OutputFcn

  • PlotFcn

  • UseParallel

Пример: opts = optimoptions(options,'MaxFunctionEvaluations',400);

Выходные аргументы

свернуть все

Решение, возвращенное как вектор действительных чисел. x имеет ту же длину как lb и ub.

Значение целевой функции в решении, возвращенном как вещественное число.

  • Когда objconstr возвращает скаляр, fval скалярный objconstr(x).

  • Когда objconstr возвращает структуру, fval значение objconstr(x).Fval, значение целевой функции в x (если это значение существует).

Обоснуйте surrogateopt остановленный, возвращенный как одно из целочисленных значений, описанных в этой таблице.

Exitflag Описание

10

Все верхние границы ub равны нижним границам lb. surrogateopt возвращает допустимую точку, не выполняя оптимизации.

1

Значение целевой функции меньше options.ObjectiveLimit. Этот выходной флаг более приоритетен по сравнению с выходным флагом 10 когда оба применяются.

0

Количество вычислений функции превышает options.MaxFunctionEvaluations или прошедшее время превышает options.MaxTime. Если проблема имеет нелинейные неравенства, решение выполнимо.

-1

Оптимизация отключена выходной функцией или функцией построения графика.

-2

Никакая допустимая точка не найдена из-за одного из следующего:

  • Нижняя граница lb(i) превышает соответствующую верхнюю границу ub(i). В этом случае, surrogateopt возвращает x = [] и fval = [].

  • lb = ub и точка lb неосуществимо. В этом случае, x = lb, и fval = objconstr(x).Fval.

  • lb <= ub и никакое возможное решение не найдено. В этом случае, x точка наименьшего количества недопустимости и fval = objconstr(x).Fval.

Информация о процессе оптимизации, возвращенном как структура с этими полями:

  • funccount — Общее количество вычислений функции.

  • elapsedtime — Время потратило выполнение решателя в секундах, как измерено tictoc.

  • message — Рассуждайте почему остановленный алгоритм.

  • constrviolation — Максимальное нарушение ограничений, если таковые имеются. constrviolation = max(output.ineq).

  • ineq — Значение ограничения неравенства в решении x. Если objconstr возвращает структуру, затем ineq = objconstr(x).Ineq. В противном случае, ineq isempty.

  • rngstate — Состояние генератора случайных чисел MATLAB незадолго до алгоритма запускается. Используйте это поле, чтобы воспроизвести ваши результаты. Смотрите Воспроизводят Результаты, который обсуждает использование rngstate для ga.

Оцененные точки, возвратились как структура с этими полями:

  • X — Матрица с nvars столбцы, где nvars длина lb или ub. Каждая строка X представляет одну точку, оцененную surrogateopt.

  • Fval — Вектор-столбец, где каждая запись является значением целевой функции соответствующей строки X.

  • Ineq — Матрица с каждой строкой, представляющей ограничительные значения функции соответствующей строки X.

trials структура имеет ту же форму как options.InitialPoints структура. Так, можно продолжить оптимизацию путем передачи trials структура как InitialPoints опция.

Алгоритмы

surrogateopt неоднократно выполняет эти шаги:

  1. Создайте набор испытательных точек путем выборки MinSurrogatePoints случайные точки в границах, и выполняют целевую функцию в испытательных точках.

  2. Создайте суррогатную модель целевой функции путем интерполяции радиальной основной функции через все случайные испытательные точки.

  3. Создайте оценочную функцию, которая дает некоторый вес суррогату и некоторый вес к расстоянию от испытательных точек. Найдите маленькое значение оценочной функции путем случайной выборки оценочной функции в области вокруг действующей точки (лучшая точка, найденная начиная с последнего суррогатного сброса). Используйте эту точку, названную адаптивной точкой, как точка нового рассмотрения дела.

  4. Оцените цель в адаптивной точке и обновите суррогат на основе этой точки и ее значения. Считайте "успех", если значение целевой функции достаточно ниже, чем предыдущее лучшее (самое низкое) значение, наблюдаемое, и считайте "отказ" в противном случае.

  5. Обновите дисперсию демонстрационного распределения вверх, если три успеха происходят перед max(nvar,5) отказы, где nvar количество размерностей. Обновите дисперсию вниз если max(nvar,5) отказы происходят перед тремя успехами.

  6. Продолжите от шага 3, пока все испытательные точки не будут в MinSampleDistance из оцененных точек. В то время сбросьте суррогат путем отбрасывания всех адаптивных точек от суррогата, сбросьте шкалу и вернитесь к шагу 1, чтобы создать MinSurrogatePoints новое случайное испытание указывает для оценки.

Для получения дополнительной информации см. Суррогатный Алгоритм Оптимизации.

Расширенные возможности

Введенный в R2018b