Файл контрольных точек содержит данные о процессе оптимизации. Для получения файла контрольных точек используйте CheckpointFile вариант.
Одним из основных способов использования файла контрольных точек является возобновление оптимизации при преждевременной остановке. Причиной преждевременной остановки могут быть такие события, как сбой питания или сбой, или при нажатии кнопки Stop в окне функции графика.
Какова бы ни была причина преждевременной остановки, процедура перезапуска заключается просто в вызове surrogateopt с именем файла контрольной точки.
Например, предположим, что оптимизация выполняется с помощью 'check1' файл контрольных точек, а затем нажмите кнопку Stop вскоре после начала оптимизации.
options = optimoptions('surrogateopt','CheckpointFile','check1.mat'); lb = [-6,-8]; ub = -lb; fun = @(x)100*(x(2) - x(1)^2)^2 + (1 - x(1))^2; [x,fval,exitflag,output] = surrogateopt(fun,lb,ub,options)
Optimization stopped by a plot function or output function.
x =
0 0
fval =
1
exitflag =
-1
output =
struct with fields:
elapsedtime: 15.3330
funccount: 30
constrviolation: 0
ineq: [1×0 double]
rngstate: [1×1 struct]
message: 'Optimization stopped by a plot function or output function.'
Примечание
Контрольная точка занимает время. Эти накладные расходы особенно заметны для функций, для оценки которых в противном случае требуется мало времени.
Для возобновления оптимизации вызовите surrogateopt с 'check1.mat' аргумент.
[x,fval,exitflag,output] = surrogateopt('check1.mat')Surrogateopt stopped because it exceeded the function evaluation limit set by
'options.MaxFunctionEvaluations'.
x =
1.0186 1.0377
fval =
3.4902e-04
exitflag =
0
output =
struct with fields:
elapsedtime: 181.5824
funccount: 200
constrviolation: 0
ineq: [1×0 double]
rngstate: [1×1 struct]
message: 'Surrogateopt stopped because it exceeded the function evaluation limit set by ↵'options.MaxFunctionEvaluations'.'
Можно расширить оптимизацию независимо от того, будет ли она остановлена из-за непредвиденного события или нет, изменив критерии остановки в опциях. Можно также контролировать оптимизацию, отображая информацию на каждой итерации.
Примечание
surrogateopt позволяет изменять только ограниченный набор опций. Для обеспечения надежности обновите исходную структуру опций вместо создания новых опций.
Список параметров, которые можно изменить при перезапуске, см. в разделе opts.
Например, предположим, что требуется расширить предыдущую оптимизацию для выполнения в общей сложности 400 аналитических отчетов функций. Кроме того, необходимо контролировать оптимизацию с помощью 'surrogateoptplot' функция графика.
opts = optimoptions(options,'MaxFunctionEvaluations',400,... 'PlotFcn','surrogateoptplot'); [x,fval,exitflag,output] = surrogateopt('check1.mat',opts)
Surrogateopt stopped because it exceeded the function evaluation limit set by
'options.MaxFunctionEvaluations'.
x =
1.0186 1.0377
fval =
3.4902e-04
exitflag =
0
output =
struct with fields:
elapsedtime: 959.7619
funccount: 400
constrviolation: 0
ineq: [1×0 double]
rngstate: [1×1 struct]
message: 'Surrogateopt stopped because it exceeded the function evaluation limit set by ↵'options.MaxFunctionEvaluations'.'
Новая функция графика отображается с начала оптимизации, даже если функция графика была запущена только после того, как решатель остановился на вычислительном номере функции 200. 'surrogateoptplot' функция печати также показывает оценочные номера, в которых оптимизация остановлена и где она перезапущена из файла контрольных точек.
Чтобы перезапустить суррогатную оптимизацию из файла контрольных точек, только если файл существует, используйте следующую логику кода. Таким образом, можно писать сценарии для поддержания оптимизации даже после сбоя или другого неожиданного события.
% Assume that myfun, lb, and ub exist if isfile('saveddata.mat') [x,fval,exitflag,output] = surrogateopt('saveddata.mat'); else options = optimoptions("surrogateopt","CheckpointFile",'saveddata.mat'); [x,fval,exitflag,output] = surrogateopt(myfun,lb,ub,options); end