surrogateopt

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

Описание

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

surrogateopt пытается решить задачи вида

minxf(x) таким , что {фунтxubA·xbAeq·x=beqc(x)0xi целое число, iintcon.

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

пример

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

Примечание

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

пример

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

Примеры

свернуть все

Найдите минимум из функций возврата верблюда с шестью горбами в области -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' график, см. «Интерпретация 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' график, см. «Интерпретация 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 и Преобразование нелинейных ограничений между формой 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

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

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

A*x <= b,

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

Для примера, чтобы задать

<reservedrangesplaceholder1> 1 + 2 <reservedrangesplaceholder0> 2  10
3 <reservedrangesplaceholder1> 1 + 4 <reservedrangesplaceholder0> 2  20
5 <reservedrangesplaceholder1> 1 + 6 <reservedrangesplaceholder0> 2  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-by- N.

Для примера, чтобы задать

<reservedrangesplaceholder1> 1 + 2 <reservedrangesplaceholder0> 2  10
3 <reservedrangesplaceholder1> 1 + 4 <reservedrangesplaceholder0> 2  20
5 <reservedrangesplaceholder1> 1 + 6 <reservedrangesplaceholder0> 2  30,

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

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

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

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

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

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

Aeq*x = beq,

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

Для примера, чтобы задать

<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 3 <reservedrangesplaceholder0> 3 = 10
2 <reservedrangesplaceholder2> 1 + 4 <reservedrangesplaceholder1> 2 + <reservedrangesplaceholder0> 3 = 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-by- N.

Для примера, чтобы задать

<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 3 <reservedrangesplaceholder0> 3 = 10
2 <reservedrangesplaceholder2> 1 + 4 <reservedrangesplaceholder1> 2 + <reservedrangesplaceholder0> 3 = 20,

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

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

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

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

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

Для получения дополнительной информации см. Surrogate Optimization Опций.

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

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

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

CheckpointFile

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

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

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

ConstraintToleranceДопуск на нелинейные ограничения, измеренный как максимум всех значений нелинейных ограничивающих функций, где положительные значения указывают на нарушение. Этот допуск является абсолютным (не относительным) допуском; см. «Допуски и критерий остановки».Положительная скалярная величина. По умолчанию это 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

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

Когда 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. Для подробностей алгоритма см. Parallel surrogateopt Algorithm.
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 stop, возвращается как одно из целочисленных значений, описанных в этой таблице.

Выходной флагОписание

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.

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

Алгоритмы

surrogateopt неоднократно выполняет следующие шаги:

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

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

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

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

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

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

Для получения дополнительной информации см. Surrogate Optimization Algorithm.

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

Приложение

Задача Optimize Live Editor обеспечивает визуальный интерфейс для surrogateopt.

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

Введенный в R2018b