После запуска глобального решателя может потребоваться изменить некоторые глобальные или локальные опции. Для определения опций изменения руководствуется следующим принципом:
Чтобы повлиять на локальный решатель, установите локальные опции решателя.
Чтобы повлиять на стартовые точки или набор решений, измените problem structure, или задать свойства объекта глобального решателя.
Для примера получить:
Больше локальных минимумов - Установите свойства объекта глобального решателя.
Более быстрые итерации локального решателя - Установите локальные опции решателя.
Различные допуски для рассмотрения локальных решений идентичны (для получения большего или меньшего количества локальных решений) - Установите свойства объекта глобального решателя.
Другая информация, отображаемая в командной строке - Решите, хотите ли вы итерационное отображение от локального решателя (установите локальные опции решателя) или глобальной информации (установите глобальные свойства объекта решателя).
Различные границы, чтобы изучить различные области - Установите границы в 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