surrogateopt

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

Описание

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

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

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

Решатель ищет глобальный минимум целевой функции с действительным знаком в нескольких размерностях согласно границам, дополнительным линейным ограничениям, дополнительным целочисленным ограничениям и дополнительным нелинейным ограничениям неравенства. surrogateopt подходит лучше всего для целевых функций, которые занимают много времени, чтобы оценить. Целевая функция может быть несглаженной. Решатель требует конечных границ на всех переменных. Решатель может опционально обеспечить файл контрольной точки, чтобы включить восстановление после катастрофических отказов или частичное выполнение или продолжение оптимизации после удовлетворения останавливающемуся условию. Целевая функция 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 object. The axes object 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 object. The axes object 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 object. The axes object 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' функция 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)

Figure Optimization Plot Function contains an axes object. The axes object 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 object. The axes object with title Best Function Value: 2.06444 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.1404    0.0203    0.3112    0.1215    0.1271    0.0329

fval = 2.0644
exitflag = 0
output = struct with fields:
        elapsedtime: 13.1669
          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 object. The axes object 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' функция 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)

Figure Optimization Plot Function contains an axes object. The axes object 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: 19.5162
          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 object. The axes object 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 object. The axes object 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 вычислений функции тем в поисках Глобального Минимума вы видите, что перезапуск суррогатной оптимизации различный как выполнение решателя постоянно.

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

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 опцией является trueX матрица, содержащая 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- nvars матрица, где M количество неравенств.

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

A*x <= b,

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

Например, чтобы задать

x 1 + 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.

Например, чтобы задать

x 1 + 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 элементы.

Например, чтобы задать

x 1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x 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- N.

Например, чтобы задать

x 1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x 3 = 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

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' — Постройте значение целевой функции в каждой итерации, показав, какая фаза алгоритма производит значение и оптимальное значение, найденное и в этой фазе и в целом. Смотрите Интерпретируют surrogateoptplot.

UseParallel

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

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

Boolean. Значением по умолчанию является false. Для алгоритмических деталей смотрите Параллель surrogateopt Алгоритм.
UseVectorized

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

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

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

Exitflag Описание

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

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

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

Приложение

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

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

Введенный в R2018b