exponenta event banner

surrogateopt

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

Описание

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

surrogateopt попытки решить проблемы формы

minxf (x ) , так что {lb≤x≤ubA·x≤bAeq·x=beqc (x)  ≤0xi целое число, i∈intcon.

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

пример

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

Примечание

В разделе Передача дополнительных параметров (Passing Extra Parameters) объясняется, как передать дополнительные параметры целевой функции при необходимости.

пример

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

пример

x = surrogateopt(objconstr,lb,ub,intcon,A,b,Aeq,beq) требует, чтобы решение x удовлетворить неравенство A*x <= b и равенства Aeq*x = beq. Если неравенства не существует, установите A = [] и b = []. Аналогично, если равенства отсутствуют, установите Aeq = [] и beq = [].

пример

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(___) также возвращает структуру, содержащую все вычисленные точки и значения целевой функции в этих точках.

Примеры

свернуть все

Поиск минимум 6-горбовой верблюжьей обратной функции в регионе -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)

Figure Optimization Plot Function contains an axes. The axes with title Best Function Value: -1.03163 contains an object of type line. This object represents Best function value.

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)

Figure Optimization Plot Function contains an axes. The axes with title Best Function Value: 0.119659 contains 2 objects of type line. These objects represent Best function value (infeasible), Best function value.

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

    0.6541    0.4279

fval = 0.1197
exitflag = 0

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

disp(objconstr(x).Ineq)
   7.0843e-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)

Figure Optimization Plot Function contains an axes. The axes with title Best Function Value: -1.91774 contains an object of type line. This object represents Best function value.

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

   -5.0000    0.0001

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

Для систематического поиска региона используйте регулярную сетку исходных точек. Задайте 120 как максимальное количество оценок функций. Используйте '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)

Figure Optimization Plot Function contains an axes. The axes with title Best: -1.03163 Incumbent: -0.124304 Current: -0.124304 contains 6 objects of type line. These objects represent Best, Incumbent, Initial Samples, Adaptive Samples, Random Samples, Surrogate Reset.

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

   -0.0904    0.7127

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

objconstr = @multirosenbrock;
nvar = 6;
lb = -2*ones(nvar,1);
ub = -lb;
intcon = [];
A = ones(1,nvar);
b = 3;
Aeq = [];
beq = [];
options = optimoptions('surrogateopt','MaxFunctionEvaluations',200);
[sol,fval,exitflag,output] = ...
    surrogateopt(objconstr,lb,ub,intcon,A,b,Aeq,beq,options)

Figure Optimization Plot Function contains an axes. The axes with title Best Function Value: 1.81762 contains an object of type line. This object represents Best function value.

surrogateopt stopped because it exceeded the function evaluation limit set by 
'options.MaxFunctionEvaluations'.
sol = 1×6

    0.5738    0.3289   -0.2733    0.0741    0.9238    0.8441

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

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

Figure Optimization Plot Function contains an axes. The axes with title Best Function Value: -1.03163 contains an object of type line. This object represents Best function value.

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' функция графика. Чтобы понять '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)

Figure Optimization Plot Function contains an axes. The axes with title Best: -1.03163 Incumbent: 0.750489 Current: 12.2879 contains 6 objects of type line. These objects represent Best, Incumbent, Random Samples, Adaptive Samples, Surrogate Reset.

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: 37.1408
          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);

Figure Optimization Plot Function contains an axes. The axes with title Best Function Value: -0.124304 contains an object of type line. This object represents Best function value.

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);

Figure Optimization Plot Function contains an axes. The axes with title Best Function Value: -0.99861 contains an object of type line. This object represents Best function value.

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

Сравнивая графики этих 40 оценок функций с графиками в окне Поиск глобального минимума (Search for Global Minimum), можно увидеть, что перезапуск суррогатной оптимизации не совпадает с непрерывным запуском решателя.

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

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: 28.7221
          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: 159.2411
          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 обычно является вектором строки. Однако, когда Vectorized опция - true, x является матрицей, содержащей options.BatchUpdateInterval строки; каждая строка представляет одну точку для вычисления. objconstr возвращает одно из следующих значений:

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

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

Когда Vectorized опция - true и BatchUpdateInterval больше единицы, objconstr работает в каждой строке x и возвращает одно из следующих значений:

  • Действительный вектор fval = objconstr(x). fval - вектор столбца с options.BatchUpdateInterval записи (или меньше для последней оценки функции, когда BatchUpdateInterval не разделяет равномерно MaxFunctionEvaluations).

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

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

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

Типы данных: 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

Линейные ограничения неравенства, заданные как вещественная матрица. A является Mоколо-nvars матрица, где M - число неравенств.

A кодирует M линейные неравенства

A*x <= b,

где x - вектор столбца nvars переменные x(:), и b - вектор столбца с M элементы.

Например, для указания

x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,

дать следующие ограничения:

A = [1,2;3,4;5,6];
b = [10;20;30];

Пример: Чтобы указать, что управляющие переменные суммируются до 1 или менее, задайте ограничения A = ones(1,N) и b = 1.

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

Линейные ограничения неравенства, заданные как действительный вектор. b является M-элементный вектор, связанный с A матрица. Если вы проходите b как вектор строки, решатели внутренне преобразуют b к вектору столбца b(:).

b кодирует M линейные неравенства

A*x <= b,

где x - вектор столбца N переменные x(:), и A является матрицей размера Mоколо-N.

Например, для указания

x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,

дать следующие ограничения:

A = [1,2;3,4;5,6];
b = [10;20;30];

Пример: Чтобы указать, что управляющие переменные суммируются до 1 или менее, задайте ограничения A = ones(1,N) и b = 1.

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

Линейные ограничения равенства, заданные как вещественная матрица. Aeq является Meоколо-nvars матрица, где Me - количество уравнений.

Aeq кодирует Me линейные равенства

Aeq*x = beq,

где x - вектор столбца N переменные x(:), и beq - вектор столбца с Me элементы.

Например, для указания

x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20,

дать следующие ограничения:

Aeq = [1,2,3;2,4,1];
beq = [10;20];

Пример: Чтобы указать, что управляющие переменные суммируются до 1, задайте ограничения Aeq = ones(1,N) и beq = 1.

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

Линейные ограничения равенства, заданные как действительный вектор. beq является Me-элементный вектор, связанный с Aeq матрица. Если вы проходите beq как вектор строки, решатели внутренне преобразуют beq к вектору столбца beq(:).

beq кодирует Me линейные равенства

Aeq*x = beq,

где x - вектор столбца N переменные x(:), и Aeq является матрицей размера Meqоколо-N.

Например, для указания

x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20,

дать следующие ограничения:

Aeq = [1,2,3;2,4,1];
beq = [10;20];

Пример: Чтобы указать, что управляющие переменные суммируются до 1, задайте ограничения Aeq = ones(1,N) и beq = 1.

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

Опции, указанные как выходные данные optimoptions.

Дополнительные сведения см. в разделе Параметры суррогатной оптимизации.

ВыборОписаниеЦенности
BatchUpdateInterval
  • Количество оценок функций перед обновлением суррогата.

  • Количество точек для передачи в векторизированной оценке. Когда UseVectorized является true, surrogateopt передает матрицу размера BatchUpdateIntervalоколо-nvar, где nvar - количество переменных проблемы. Каждая строка матрицы представляет одну точку оценки. Функции вывода и функции печати обновляются после полной оценки каждого пакета.

Положительное целое число. По умолчанию: 1.

CheckpointFile

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

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

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

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

Уровень отображения, возвращенный в командной строке.

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

  • 'off' или эквивалент 'none' - Нет дисплея.

  • 'iter' - итеративный дисплей; см. раздел Отображение командной строки.

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

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

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

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

См. раздел Управление алгоритмами. По умолчанию: [].

MaxFunctionEvaluations

Максимальное количество оценок целевой функции, критерий остановки.

Положительное целое число. По умолчанию: max(200,50*nvar), где nvar - количество переменных проблемы.
MaxTimeМаксимальное время работы в секундах. Фактическое время работы может превышать MaxTime из-за времени, необходимого для оценки целевой функции, или из-за задержек параллельной обработки.Положительный скаляр. По умолчанию: Inf.
MinSampleDistanceМинимальное расстояние между пробными точками, генерируемыми адаптивным семплером. См. раздел Алгоритм суррогатной оптимизации.Положительный скаляр. По умолчанию: 1e-3.
MinSurrogatePoints

Минимальное количество точек случайной выборки для создания в начале этапа создания суррогата. См. раздел Алгоритм суррогатной оптимизации.

Когда BatchUpdateInterval > 1, минимальное количество точек случайной выборки, используемых для создания суррогата, больше MinSurrogatePoints и BatchUpdateInterval.

Целое число не менее nvar + 1. По умолчанию: max(20,2*nvar), где nvar - количество переменных проблемы.
ObjectiveLimitДопуск по значению целевой функции. Если вычисленное значение целевой функции меньше ObjectiveLimitалгоритм останавливается.Двойное скалярное значение. По умолчанию: -Inf.
OutputFcnФункция вывода для отчета о ходе выполнения решателя или для остановки решателя. См. раздел Функция вывода.Имя функции, дескриптор функции или массив ячеек имен функций или дескрипторов. По умолчанию: [].
PlotFcn

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

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

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

    • На графике невидимые точки отображаются как красные, а возможные точки - как синие.

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

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

  • 'optimplotx' - Постройте график наилучшего решения в виде гистограммы.

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

UseParallel

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

Вы не можете указать оба UseParallel = true и UseVectorized = true. Если оба параметра имеют значение true, решатель игнорирует UseVectorized и пытается вычисляться параллельно, используя параллельный пул, если это возможно.

Булево. По умолчанию: false. Сведения об алгоритме см. в разделе Алгоритм параллельного суррогатеопта.
UseVectorized

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

Вы не можете указать оба UseParallel = true и UseVectorized = true. Если оба параметра имеют значение true, решатель игнорирует UseVectorized и пытается вычисляться параллельно, используя параллельный пул, если это возможно.

Булево. По умолчанию: false. Пример см. в разделе Векторизированная суррогатная оптимизация для пользовательского параллельного моделирования.

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

Структура проблемы, указанная как структура со следующими полями:

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

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

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

  • solver'surrogateopt'

  • Aineq - Матрица для линейных ограничений неравенства (необязательно)

  • bineq - Вектор для линейных ограничений неравенства (необязательно)

  • Aeq - Матрица для линейных ограничений равенства (необязательно)

  • beq - Вектор для линейных ограничений равенства (необязательно)

  • options - Параметры, созданные с помощью optimoptions

  • rngstate - Поле для сброса состояния генератора случайных чисел (необязательно)

  • intcon - Поле, указывающее целое число x компоненты (необязательно)

Примечание

Они problem поля обязательны: objective, lb, ub, solver, и options.

Типы данных: 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 (из ограниченного набора), которые можно изменить по сравнению с исходными опциями. Можно изменить следующие параметры:

  • BatchUpdateInterval

  • CheckpointFile

  • Display

  • MaxFunctionEvaluations

  • MaxTime

  • MinSurrogatePoints

  • ObjectiveLimit

  • OutputFcn

  • PlotFcn

  • UseParallel

  • UseVectorized

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

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

свернуть все

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

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

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

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

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

Флаг выходаОписание

10

Проблема имеет уникальное выполнимое решение из-за одного из следующих:

  • Все верхние границы ub равны нижним границам lb.

  • Линейные ограничения равенства Aeq*x = beq и границы имеют уникальную точку решения.

surrogateopt возвращает значение возможной точки и функции без выполнения оптимизации.

3Найдена осуществимая точка. Решатель остановлен, так как обнаружено слишком мало новых возможных точек для продолжения.

1

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

0

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

-1

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

-2

Выполнимый момент не найден из-за одного из следующих:

  • Нижняя граница lb(i) превышает соответствующую верхнюю границу ub(i). Или один или несколько ceil(lb(i)) превышает соответствующий floor(ub(i)) для i в intcon. В этом случае surrogateopt прибыль x = [] и fval = [].

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

  • Линейные и, если имеются, целочисленные ограничения невозможны вместе с границами. В этом случае surrogateopt прибыль x = [] и fval = [].

  • Границы, целочисленные и линейные ограничения выполнимы, но не найдено выполнимого решения с нелинейными ограничениями. В этом случае x является точкой наименьшей максимальной несходимости нелинейных ограничений, и fval = objconstr(x).Fval.

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

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

  • elapsedtime - Время, затраченное на запуск решателя в секундах, измеренное tic/toc.

  • message - Причина, по которой алгоритм остановлен.

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

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

  • 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 новые случайные пробные точки для оценки.

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

Альтернативная функциональность

Приложение

Задача «Оптимизировать интерактивный редактор» обеспечивает визуальный интерфейс для surrogateopt.

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

Представлен в R2018b