После того, как вы запустите глобальный решатель, вы можете хотеть изменить некоторые глобальные или локальные опции. Чтобы определить, какие опции измениться, руководящий принцип:
Чтобы влиять на локальный решатель, установите локальные опции решателя.
Чтобы влиять на стартовые точки или набор решения, измените problem
структура или набор глобальные свойства объектов решателя.
Например, чтобы получить:
Больше локальных минимумов — глобальные свойства объектов решателя Набора.
Быстрее локальные итерации решателя — Набор локальные опции решателя.
Различные допуски к рассмотрению идентичных локальных решений (чтобы получить больше или меньше локальных решений) — глобальные свойства объектов решателя Набора.
Различная информация, отображенная в командной строке — Решает, хотите ли вы итеративное отображение от локального решателя (установите локальные опции решателя), или глобальная информация (глобальные свойства объектов решателя набора).
Различные границы, чтобы исследовать различные области — Набор границы в problem
структура.
Чтобы запустить ваш локальный решатель в точках, только удовлетворяющих ограничениям неравенства, установите StartPointsToRun
свойство в глобальном решателе возражает против 'bounds-ineqs'
. Эта установка может ускорить ваше решение, поскольку локальные решатели не должны пытаться найти точки, удовлетворяющие этим ограничениям. Однако установка может привести ко многим меньше локальных запусков решателя, поскольку глобальный решатель может отклонить много стартовых точек. Для примера смотрите, Оптимизируют Только Используя Выполнимые Стартовые точки.
Использовать fmincon
interior-point
алгоритм, набор локальный решатель Algorithm
опция к 'interior-point'
. Для примера, показывающего, как сделать это, смотрите Примеры Обновляющихся проблемных Опций.
Для вашего локального решателя, чтобы иметь различные границы, установите границы в problem
структура. Исследуйте различные области путем установки границ.
Чтобы видеть каждое решение, которое имеет положительный локальный выходной флаг, устанавливает XTolerance
свойство в глобальном решателе возражает против 0
. Для примера, показывающего, как сделать это, см. Изменяющиеся Глобальные Опции.
Существует несколько способов изменить значения в локальных опциях:
Обновите значения с помощью записи через точку и optimoptions
. Синтаксис
problem.options = optimoptions(problem.options,'Parameter',value,...);
Можно также заменить локальные опции полностью:
problem.options = optimoptions(@solvername,'Parameter',value,...);
Используйте запись через точку на одной локальной опции. Синтаксис
problem.options.Parameter = newvalue;
Воссоздайте целую структуру задачи. Для получения дополнительной информации смотрите, Создают Структуру задачи.
Создайте структуру задачи:
problem = createOptimProblem('fmincon','x0',[-1 2], ... 'objective',@rosenboth);
Установите проблему использовать sqp
алгоритм в fmincon
:
problem.options.Algorithm = 'sqp';
Обновите проблему использовать градиент в целевой функции, иметь FunctionTolerance
значение 1e-8
, и XTolerance
значение 1e-7
:
problem.options = optimoptions(problem.options,'GradObj','on', ... 'FunctionTolerance',1e-8,'XTolerance',1e-7);
Существует несколько способов изменить характеристики GlobalSearch
или MultiStart
объект:
Используйте запись через точку. Например, предположите, что у вас есть MultiStart
по умолчанию объект:
ms = MultiStart ms = MultiStart with properties: UseParallel: 0 Display: 'final' FunctionTolerance: 1.0000e-06 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-06
Изменить ms
иметь его XTolerance
значение, равное 1e-3
, обновите XTolerance
поле :
ms.XTolerance = 1e-3 ms = MultiStart with properties: UseParallel: 0 Display: 'final' FunctionTolerance: 1.0000e-06 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-03
Восстановите объект, начинающий с текущих настроек. Например, чтобы установить FunctionTolerance
поле в ms
к 1e-3
, сохранение значения не по умолчанию для XTolerance
:
ms = MultiStart(ms,'FunctionTolerance',1e-3) ms = MultiStart with properties: UseParallel: 0 Display: 'final' FunctionTolerance: 1.0000e-03 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-03
Преобразуйте GlobalSearch
возразите против MultiStart
объект, или наоборот. Например, с ms
объект от предыдущего примера, создайте GlobalSearch
объект с теми же значениями XTolerance
и FunctionTolerance
:
gs = GlobalSearch(ms) gs = GlobalSearch with properties: NumTrialPoints: 1000 BasinRadiusFactor: 0.2000 DistanceThresholdFactor: 0.7500 MaxWaitCycle: 20 NumStageOnePoints: 200 PenaltyThresholdFactor: 0.2000 Display: 'final' FunctionTolerance: 1.0000e-03 MaxTime: Inf OutputFcn: [] PlotFcn: [] StartPointsToRun: 'all' XTolerance: 1.0000e-03