fmincon
имеет пять опций алгоритма:
'interior-point'
(по умолчанию)
'trust-region-reflective'
'sqp'
'sqp-legacy'
'active-set'
Использовать optimoptions
для установки Algorithm
опция в командной строке.
Рекомендации |
---|
|
'interior-point'
обрабатывает большие, разреженные задачи, а также небольшие плотные задачи. Алгоритм удовлетворяет границам на всех итерациях и может восстановиться после NaN
или Inf
результаты. Это масштабный алгоритм; см. «Алгоритмы большого и среднего масштаба». Алгоритм может использовать специальные методы для масштабных задач. Для получения дополнительной информации смотрите Алгоритм внутренней точки в fmincon
options
.
'sqp'
удовлетворяет границам во всех итерациях. Алгоритм может восстановиться после NaN
или Inf
результаты. Это не масштабный алгоритм; см. «Алгоритмы большого и среднего масштаба».
'sqp-legacy'
аналогичен 'sqp'
, но обычно медленнее и использует больше памяти.
'active-set'
может сделать большие шаги, что добавляет скорость. Алгоритм эффективен при некоторых задачах с ограничениями nonsmooth. Это не масштабный алгоритм; см. «Алгоритмы большого и среднего масштаба».
'trust-region-reflective'
требует, чтобы вы предоставили градиент, и допускает только ограничения или линейные ограничения равенства, но не оба. В рамках этих ограничений алгоритм эффективно обрабатывает как большие разреженные задачи, так и маленькие плотные задачи. Это масштабный алгоритм; см. «Алгоритмы большого и среднего масштаба». Алгоритм может использовать специальные методы для сохранения использования памяти, такие как функция умножения Гессиана. Для получения дополнительной информации см. Trust- Области Отражающий Алгоритм вfmincon
options
.
Для описания алгоритмов смотрите Ограниченные нелинейные алгоритмы оптимизации.
fsolve
имеет три алгоритма:
'trust-region-dogleg'
(по умолчанию)
'trust-region'
'levenberg-marquardt'
Использовать optimoptions
для установки Algorithm
опция в командной строке.
Рекомендации |
---|
|
'trust-region-dogleg'
является единственным алгоритмом, который специально разработан для решения нелинейных уравнений. Остальные пытаются минимизировать сумму квадратов функции.
The 'trust-region'
алгоритм эффективен при разреженных задачах. Он может использовать специальные методы, такие как функция умножения якобиана для крупномасштабных задач.
Для описания алгоритмов смотрите Алгоритмы Решения Уравнения.
fminunc
имеет два алгоритма:
'quasi-newton'
(по умолчанию)
'trust-region'
Использовать optimoptions
для установки Algorithm
опция в командной строке.
Рекомендации |
---|
Для получения справки в случае сбоя минимизации см. Раздел «Когда решатель отказывает» или «Когда решатель мог добиться успеха». |
Для описания алгоритмов см. «Без ограничений Алгоритмы нелинейной Оптимизации».
lsqlin
имеет три алгоритма:
'interior-point'
, значение по умолчанию
'trust-region-reflective'
'active-set'
Использовать optimoptions
для установки Algorithm
опция в командной строке.
Рекомендации |
---|
Для получения справки в случае сбоя минимизации см. Раздел «Когда решатель отказывает» или «Когда решатель мог добиться успеха». |
Для описания алгоритмов см. Алгоритмы наименьших квадратов (Model Fitting).
lsqcurvefit
и lsqnonlin
имеют два алгоритма:
'trust-region-reflective'
(по умолчанию)
'levenberg-marquardt'
Использовать optimoptions
для установки Algorithm
опция в командной строке.
Рекомендации |
---|
Для получения справки в случае сбоя минимизации см. Раздел «Когда решатель отказывает» или «Когда решатель мог добиться успеха». |
Для описания алгоритмов см. Алгоритмы наименьших квадратов (Model Fitting).
linprog
имеет три алгоритма:
'dual-simplex'
, значение по умолчанию
'interior-point-legacy'
'interior-point'
Использовать optimoptions
для установки Algorithm
опция в командной строке.
Рекомендации |
---|
Используйте Для получения справки в случае сбоя минимизации см. Раздел «Когда решатель отказывает» или «Когда решатель мог добиться успеха». |
Часто, 'dual-simplex'
и 'interior-point'
алгоритмы быстрые, и используют наименьшую память.
The 'interior-point-legacy'
алгоритм похож на 'interior-point'
, но 'interior-point-legacy'
может быть медленнее, менее устойчивым или использовать больше памяти.
Для описания алгоритмов см. «Алгоритмы линейного программирования».
quadprog
имеет три алгоритма:
'interior-point-convex'
(по умолчанию)
'trust-region-reflective'
'active-set'
Использовать optimoptions
для установки Algorithm
опция в командной строке.
Рекомендации |
---|
Для получения справки в случае сбоя минимизации см. Раздел «Когда решатель отказывает» или «Когда решатель мог добиться успеха». |
Для описания алгоритмов см. «Алгоритмы квадратичного программирования».
Алгоритм оптимизации large scale, когда он использует линейную алгебру, которая не должна хранить или работать с полными матрицами. Это может быть сделано внутренне путем хранения разреженных матриц и при помощи линейной алгебры для разреженных матриц для расчетов, когда это возможно. Кроме того, внутренние алгоритмы либо сохраняют разреженность, такую как разреженное разложение Холецкого, либо не генерируют матрицы, такие как сопряженный метод градиента.
Напротив, методы medium-scale внутренне создают полные матрицы и используют плотную линейную алгебру. Если задача достаточно велика, полные матрицы занимают значительное количество памяти, и плотная линейная алгебра может потребовать длительного времени для выполнения.
Не позволяйте имя « крупная шкала» вводить вас в заблуждение; можно использовать масштабный алгоритм по небольшой задаче. Кроме того, вам не нужно задавать какие-либо разреженные матрицы, чтобы использовать крупномасштабный алгоритм. Выберите алгоритм среднего масштаба для доступа к дополнительной функциональности, такой как дополнительные типы ограничений или, возможно, для повышения эффективности.
Алгоритмы внутренней точки в fmincon
, quadprog
, lsqlin
, и linprog
имеют много хороших характеристик, таких как низкое использование памяти и способность быстро решать большие проблемы. Однако их решения могут быть немного менее точными, чем решения из других алгоритмов. Причина этой потенциальной неточности в том, что (внутренне вычисленная) барьерная функция удерживает итерации от границ ограничений неравенства.
Для большинства практических целей эта неточность обычно довольно мала.
Чтобы уменьшить неточность, попробуйте:
Перезапустите решатель с меньшими StepTolerance
, OptimalityTolerance
, и, возможно ConstraintTolerance
допуски (но сохраните допуски разумными.) См. «Допуски и критерий остановки»).
Запустите другой алгоритм, начиная с решения interior-point. Это может быть неудачно, потому что некоторые алгоритмы могут использовать чрезмерную память или время, и все linprog
и некоторые quadprog
алгоритмы не принимают начальную точку.
Для примера попробуйте минимизировать x функции, когда ограничено внизу 0. Использование fmincon
по умолчанию interior-point
алгоритм:
options = optimoptions(@fmincon,'Algorithm','interior-point','Display','off'); x = fmincon(@(x)x,1,[],[],[],[],0,[],[],options)
x = 2.0000e-08
Использование fmincon
sqp
алгоритм:
options.Algorithm = 'sqp';
x2 = fmincon(@(x)x,1,[],[],[],[],0,[],[],options)
x2 = 0
Точно так же решите ту же задачу, используя linprog
interior-point-legacy
алгоритм:
opts = optimoptions(@linprog,'Display','off','Algorithm','interior-point-legacy'); x = linprog(1,[],[],[],[],0,[],1,opts)
x = 2.0833e-13
Использование linprog
dual-simplex
алгоритм:
opts.Algorithm = 'dual-simplex';
x2 = linprog(1,[],[],[],[],0,[],1,opts)
x2 = 0
В этих случаях алгоритмы interior-point менее точны, но ответы довольно близки к правильному ответу.