MATLAB.Exponenta
MATLAB и Simulink на русском
Технологии разработки и отладки
		сложных технических систем

Optimization Toolbox 2.2 Руководство пользователя

А.Г.Трифонов. Параметры опций оптимизации

Данная таблица описывает поля структуры параметров оптимизации, опции. Приведенные значения могут быть установлены с помощью команды optimset. Колонки с метками L, M, B указывают на то какие параметры относятся к алгоритму со средней, какие к алгоритму с большой размерностью или к обоим типам алгоритмов.

L - только к алгоритмам с большой размерностью.

M - только к алгоритмам со средней размерностью.

B - оба алгоритма с большой и средней размерностью.

Примечание. Относительно информации о значениях параметров и принимаемых по умолчанию значений смотри ссылочную страницу optimset в Optimization Toolbox, ссылочную страницу optimset в MATLAB, а так же ссылочные страницы для отдельных функций.

Таблица 4-3. Параметры опций оптимизации.

Имя параметра

Описание

L,

M,

B

Используется в функциях

DerivativeCheck

Сравнение введенных пользователем значением производных (градиенты или Якобианы) с конечно-разностными аналогами производных

M

fgoalattain, fmincon, fminimax, fminunc,fseminf, fsolve, lsqcurvefit, lsqnonlin.

Diagnostics

Печать диагностической информации о минимизируемой или решаемой или функции.

B

Все кроме fminbnd, fminsearch, fzero и lsqnonneg

DiffMaxChange

Максимальное изменение переменных конечноразностных градиентов.

M

fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin.

DiffMinChange

Минимальное изменение переменных конечноразностных градиентов.

M

fgoalattain, fmincon, fminimax, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin.

Display

Уровень отображения. 'off' - отображение не выводится; 'iter' отображение выводится на каждой итерации; 'final' отображение только выходной информации, 'notify отображение выводится только в случае, если функция не сходится.

B

Все. Относительно используемых значений смотри ссылочные страницы отдельных функций

GoalsExactAchieve

Определяет число целей goals, которые достигнуты "точно" (не относится к тому, что переопределено или недостигнуто)

M

fgoalattain.

GradConstr

Градиент для определенных пользователем нелинейных ограничений.

M

fgoalattain, fmincon, fminimax

GradObj

Градиент для определенных пользователем целевых функций (функции).

B

fgoalattain, fmincon, fminimax, fminunc, fseminf.

Hessian

В случае установки 'on' в fmincon используется заданная пользователем матрица Гессе или информация о матрице Гессе (при использовании HessMult) для целевой функции. В случае установки 'off' функция использует аппроксимацию матрице Гессе с помощью конечных разностей.

L

fmincon, fminunc

HessMult

Определенная пользователем функция для умножения на матрицу Гессе

L

fmincon, fminunc, quadprog.

HessPattern

Разреженный шаблон матрице Гессе для конечных разностей. Размер матрицы n х n, n есть число элементов в точке x0, стартовой точке

L

fmincon, fminunc.

HessUpdate

Усовершенствованная квази-Ньютоновская схема

M

fminunc.

Jacobian

При установке 'on', используется заданный пользователем Якобиан, или информацию об Якобиане (при использовании JacobMult) для целевой функции. При установке 'off', функция аппроксимирует Якобиан с помощью конечных разностей.

B

fsolve, lsqcurvefit, lsqnonlin.

JacobMult

Определенная пользователем функция для умножения на Якобиан

L

fsolve, lsqcurvefit, lsqlin, lsqnonlin.

JacobPattern

Разреженный шаблон Якобиана для конечных разностей. Размер матрицы m х n, где m число значений в первом аргументе в возвращаемой по спецификации пользователя функции fun, а n есть число элементов в точке x0, стартовой точке.

L

fsolve, lsqcurvefit, lsqnonlin

LargeScale

Если возможно, то используется алгоритм большой размерности

B

fmincon, fminunc, fsolve, linprog, lsqcurvefit, lsqlin, lsqnonlin, quadprog.

LevenbergMarquardt

Выбор алгоритма Левенберга-Макуарда вместо Гаусса-Ньютона.

M

fsolve, lsqcurvefit, lsqnonlin

LineSearchType

Выбор алгоритма линейного поиска

M

fminunc, fsolve, lsqcurvefit, lsqnonlin

MaxFunEvals

Максимальное число допустимых оценок функции.

B

fgoalattain, fminbnd, fmincon, fminimax, fminsearch, fminunc, fseminf, fsolve, lsqcurvefit, lsqnonlin

MaxIter

Максимальное число допустимых итераций.

B

Все за исключением fzero и lsqnonneg

MaxPCGIter

Максимальное число допустимых PCG итераций.

L

fmincon, fminunc, fsolve, lsqcurvefit, lsqlin, lsqnonlin, quadprog.

MeritFunction

Используется целевая функция полезности достижения/минимакса (многоцелевая), а для fmincon (одно целевая).

M

fgoalattain, fminimax

MinAbsMax

Число функций F(x), подлежащих минимизации в наихудшем случае для абсолютных значений.

M

fminimax.

PrecondBandWidth

Верхняя полоса предварительной обработки для PCG.

L

fmincon, fminunc, fsolve, lsqcurvefit, lsqlin, lsqnonlin, quadprog.

TolCon

Конечное допустимое отклонение по нарушению условий ограничения

B

fgoalattain, fmincon, fminimax, fseminf

TolFun

Конечное допустимое отклонение по значению функции.

B

fgoalattain, fmincon, fminimax,

fminsearch, fminunc, fseminf, fsolve, linprog (только для крупно-масштабного), lsqcurvefit, lsqlin (только для крупно-масштабного), lsqnonlin, quadprog (только для крупно-масштабного).

TolPCG

Конечное допустимое число итераций PCG.

L

fmincon, fminunc, fsolve, lsqcurvefit, lsqlin, lsqnonlin, quadprog.

TolX

Конечное допустимое отклонение по х.

B

Все функции за исключением средне-масштабных алгоритмов для linprog, lsqlin и quadprog.

TypicalX

Типичные значения х. Длина вектора равна числу элементов в x0, стартовой точке

L

fmincon, fminunc, fsolve, lsqcurvefit, lsqlin, lsqnonlin, quadprog

Функции вывода

Поле Outputfcn структуры опций определяет некую функцию из М-файла, к которой на каждой итерации происходит обращение из программы оптимизации. Как правило, функцию вывода используюn для вычерчивания реперных точек на каждой итерации или для некого отображения данных из расчетного алгоритма. Для установки функции вывода необходимо осуществит следующие процедуры:

  1. Написать функцию вывода в виде М- файла или подпрограммы.

  2. При помощи команды optimset устанавливается значение параметра Outputfcn в виде некого указателя функций, то есть, перед именем функции должен стоять знак @. Например, если функция вывода outfun.m, то соответствующая команда будет

    options = optimset('OutputFcn', @outfun);

    которая устанавливает параметр OutputFcn как указатель функции outfun.

  3. Вызвать функцию оптимизации с соответствующими опциями в качестве входных аргументов.

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

Структура функции вывода

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

stop = outfun(x, optimValues, state, varargin)

где

  • х есть выбранная точка, которая рассчитывается на каждой итерации согласно принятого в данной задаче алгоритма.

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

  • state - есть текущее состояние алгоритма. Список возможных значений приведен в разделе Состояния алгоритма.

  • varargin - включает в себя входных аргументы от других зависимых задач, которые могут быть переданы в функцию outfun. Более детальное описание данных аргументов приведено в разделе Другие входные аргументы.

  • stop - есть некий флаг, принимающий значения Верно или Ложь в зависимости от того, следует ли выходить из данной программы оптимизации или нет. Более детальное описание данного аргумент приведено в разделе Флаг Стоп.]

Функция оптимизации на каждой итерации передает соответствующие значения входных аргументов в программу outfun.

Поля для optimValues.

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

Соответствующие выходные аргументы

Некоторые из заданных в optimValues полей соответствуют выходным аргументам функции оптимизации. После выполнения последней итерации для заданного алгоритма оптимизации, в значения каждого такого поля заносятся соответствующие выходные аргументы. Например, параметр optimValues.fval соответствует выходному аргументу fval. Таким образом, при обращении к функции fmincon и при наличии выходной функции и возвращаемого параметра fval, окончательное значение параметра optimValues.fval будет равно fval. В колонке Описание приведенной ниже таблицы приводится описание полей, которые имеют соответветствующие выходные аргументы.

Отображение командной строки

Значения некоторых полей параметра optimValues отображаются в командной строке в случае обращения к функции оптимизации с уставленным в ней опционным параметром отображения Display как 'iter', в соответствии с содержанием раздела Вывод итерационного отображения. Например, параметр optimValues.fval выводится в колонку f(x). Далее в таблице в колонке Отображение командной строки приводятся значения полей, которые могут отображены в командной строке.

В таблице метки L, M, B имеют следующие значения:

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

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

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

Таблица 4-3. Параметры опций оптимизации.

Поле оптимальных значений (optimValues.field) Описание Вохвращается из функции Отображение командной строки
cgiterations Число итераций сопряженных градиентов на каждой итерации. Окончательное значение равно результату действия функции оптимизации output.cgiterations fmincon (L), lsqcurvefit (L), lsqnonlin (L). CG - итерации. См. раздел Вывод итерационного отображения
constrviolation Нарушение максимального ограничения fgoalattain (М), fmincom (М), fminimax (М), fseminf(М). Максимальное ограничение. См. раздел Вывод итерационного отображения
degenerate Определение наличия вырождения. Некая точка считается вырожденной, если в данной точке частная производная по одной из переменных равна нулю fmincon (L), lsqcurvefit (L), lsqnonlin (L). Нет
directionalderivative Производная понаправлению в направлении поиска fgoalattain (М), fmincom (М), fminimax (М), fminunc(М), fseminf(М), lsqcurvefit (В), lsqnonlin (В). Производная по направлению. См. раздел Вывод итерационного отображения
firstorderopt Оптимальность первого порядка (зависит от вида алгоритма). Окончательное значение равно значению output.firstorderopt при выводе функции оптимизации. fgoalattain (М), fmincom (В), fminimax (М), fminunc(М), fseminf(М), lsqcurvefit (М), lsqnonlin (M).  
funcount Общее число расчетов функции. Окончательное значение равно значению output.funcCount  при выводе функции оптимизации. fgoalattain (М),  fminbnd (B), fmincon (B), fminimax (M), fminsearch (B), fminunc (B),
fzero (B),
fseminf (M), lsqcurvefit (B), lsqnonlin (B) .
Funcount. См. раздел Вывод итерационного отображения
fval Значение функции в текущей точке. Окончательное значение равно выходному значению функции оптимизации fval. fgoalattain (М),  fminbnd (B), fmincon (B), fminimax (M), fminsearch (B), fminunc (B),
fzero (B),
fseminf (M), lsqcurvefit (B), lsqnonlin (B).
f(x) См. раздел Вывод итерационного отображения.
gradient Текущее значение градиента целевой функции - или его аналитическое значение, если оно задано, или его конечно разностная аппроксимация. Окончательное значение равно выходному значению функции оптимизации grad. fgoalattain (М),  fmincon (B), fminimax (M), fminunc (B),
fseminf (M), lsqcurvefit (B), lsqnonlin (B).
Нет
iteration Число итераций - начальное значение рано 0. Окончательное значение равно выходному значению функции оптимизации output.iterations. fgoalattain (М),  fminbnd (B), fmincon (B), fminimax (M), fminsearch (B), fminunc (B),
fzero (B),
fseminf (M), lsqcurvefit (B), lsqnonlin (B).
Iteration См. раздел Вывод итерационного отображения.
lambda Значение множителей Лагранжа в точке решения х.  lambda  является структурой, где каждое поле отведено для различных типов ограничений. Относительно имен полей структур следует обращаться к описанию отдельных функций. Окончательное значение равно выходному значению функции оптимизации lambda. fgoalattain (М), fmincon (М ),  fminimax  (M),  fseminf  (M),  lsqcurvefit  (М), lsqnonlin  (М). Нет
positivedefinite 0 если в алгоритме будет определено отрицательное значение кривизны при расчете шага Ньютона, 1 - в противном случае fmincon (L), lsqcurvefit (L), lsqnonlin (L). Нет
procedure Процедурное послание fgoalattain (М),  fminbnd (B), fmincon (B), fminimax (M), fminsearch (B), fseminf (M), fzero (B).. Процедура См. раздел Вывод итерационного отображения.
ratio Отношение изменения в данной целевой функции к изменению в данной квадратичной аппроксимации fmincon (L), lsqcurvefit (L), lsqnonlin (L). Нет
residual Квадрат нормы невязки 2. lsqcurvefit (В), lsqnonlin (В). Невязка См. раздел Вывод итерационного отображения.
searchdirection Направление поиска fgoalattain (М),  fmincon (М),  fminimax (M), fminunc (М),
fseminf (M), lsqcurvefit (М), lsqnonlin (М).
Нет
stepsize Текуший размер шага. Окончательное значение равно выходному значению функции оптимизации options.stepsize. fgoalattain (М),  fmincon (В), fminimax (M), fminunc (В),
fseminf (M), lsqcurvefit (В), lsqnonlin (В) .
Размер шага. См. раздел Вывод итерационного отображения.
trustregionradius Радиус доверительной области fmincon (L), lsqcurvefit, lsqnonlin (L) Радиус доверительной области. См. раздел Вывод итерационного отображения.

Вырождение.Значение поля вырождения, которое служит мерой степени вырожденности для текущего состояния процесса оптимизации в некой точке х и определяется следующим образом. Во-первых, определим вектор r, имеющий такую же размерность, как и х, при этом r(i) есть минимальное расстояние от точки x(i) до i-ой составляющей верхней и нижней границ, соответственно, lb и ub. То есть

r = min(abs(ub-x, x-lb))

Тогда степени вырождения будет представлять собой минимальную компоненту вектора r + abs(grad), где grad есть градиент данной целевой функции. Степень вырождения равна 0, если имеется некий индекс i, для которого справедливы оба нижеследующих выражения:

grad(i) = 0

x(i) равно i-ой компоненте или верхней, или нижней границы.

Состояния алгоритма

Ниже в таблице приведен список возможных значений состояния:

Состояние

Описание

'init'

Алгоритм находится в состоянии инициализации перед первой итерацией

'interrupt'

Алгоритм находится в области некоего вычислительно достаточно продолжительного процесса. В этом состоянии обращение к функции вывода может вызвать прерывание текущей итерации оптимизации. В это время, значения величин x и optimValues имеют те же значения, что и при последнем обращении к функции вывода при состоянии 'iter'.

'iter'

Алгоритм находится в конечной стадии некой итерации

'done'

Алгоритм находится в конечной стадии после выполнения последней итерации

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

switch state

case 'iter'

% вызывает корректировки отбражения на графике или во внешнем виде, в зависимости от необходимости

case 'interrupt'

% вероятно, в данном случае нет никакого действия. Проверьте условия, что бы убедиться в

% необходимости выхода из оптимизации

case 'init'

% обратитесь к графическому отображению или к какому-нибудь другому изменению внешнего состояния

case 'done'

% Обнулите графики,

%внешние состояния или конечный график

otherwise

end

Другие входные аргументы

Аргумент varargin содержит лополнительные, зависимые от типа задачи, аргументы, и которые необходимы пользователю для работы с функциями оптимизации. В этот набор данных также входят такие величины как целвая функция, fun, а так же функции ограничений nonlcon и seminfcon, если таковые, конечно, являются необходимыми. Например, при вызове функции fmincon и при задании в командной строке следующего синтаксиса

x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2,...)

функция fmincon передает аргументы P1, P2 и так далее в функцию outfun в качестве величин varargin(1), varargin(2) и так далее. Так же возможно указать эти аргументы и явным образом в первой строке выходной функции при помощи следующего синтаксиса

stop = outfun(x, optimValues, state, P1, P2, ...)

Флаг остановки

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

Остановка операции оптимизации на основе данных в параметре optimValues.

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

function stop = outfun(x, optimValues)

stop = false;

% Проверка действительно ли, производная по направлению меньше, чем 0,01.

if optimValues.directionalderivative < .01

stop = true;

end

Остановка оптимизации по вводу из GUI

Если необходимо построить GUI (графический интерфейс пользователя) для выполнения операции оптимизации, то, возможно, организовать остановку из функции вывода при нажатии пользователем кнопки Stop на панели GUI. Следующие коды демонстрируют как это можно осуществить. Предположим, что кнопка Stop обращается к подпрограмме сохранения значения <истинно> в поле optimstop для вызываемой с помощью hObject структуры указателей.

function stop = outfun(x)

stop = false;

% Проверка действительно ли, что пользователь затребовал остановку оптимизации

stop = getappdata(hObject,'optimstop');


Поиск по сайту:

Система Orphus

Яндекс.Метрика