После того, как вы запустите глобальный решатель, вы можете хотеть изменить некоторые глобальные или локальные опции. Чтобы определить, какие опции измениться, руководящий принцип:
Чтобы влиять на локальный решатель, установите локальные опции решателя.
Чтобы влиять на стартовые точки или набор решения, измените структуру problem
или установите глобальные свойства объектов решателя.
Например, чтобы получить:
Больше локальных минимумов — глобальные свойства объектов решателя Набора.
Быстрее локальные итерации решателя — Набор локальные опции решателя.
Различные допуски к рассмотрению идентичных локальных решений (чтобы получить больше или меньше локальных решений) — глобальные свойства объектов решателя Набора.
Различная информация, отображенная в командной строке — Решает, хотите ли вы итеративное отображение от локального решателя (установите локальные опции решателя), или глобальная информация (глобальные свойства объектов решателя набора).
Различные границы, чтобы исследовать различные области — Набор границы в структуре problem
.
Чтобы запустить ваш локальный решатель в точках, только удовлетворяющих ограничения неравенства, установите свойство StartPointsToRun
в глобальном объекте решателя к 'bounds-ineqs'
. Эта установка может ускорить ваше решение, поскольку локальные решатели не должны пытаться найти точки, удовлетворяющие эти ограничения. Однако установка может привести ко многим меньше локальных выполнений решателя, поскольку глобальный решатель может отклонить много стартовых точек. Для примера смотрите, Оптимизируют Только Используя Выполнимые Стартовые точки.
Чтобы использовать алгоритм interior-point
fmincon
, установите локальный решатель опция 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