После запуска глобального решателя может потребоваться изменить некоторые глобальные или локальные параметры. Чтобы определить, какие варианты изменить, руководящим принципом является:
Чтобы повлиять на локальный решатель, задайте опции локального решателя.
Чтобы повлиять на начальные точки или набор решений, измените problem или задайте свойства глобального объекта решателя.
Например, для получения:
Дополнительные локальные минимумы - задание свойств глобального объекта решателя.
Более быстрые итерации локального решателя - задание опций локального решателя.
Различные допуски для учета идентичных локальных решений (для получения большего или меньшего количества локальных решений) - задание свойств глобального объекта решателя.
Другая информация, отображаемая в командной строке (Different information displayed in the command line) - определяет необходимость итеративного отображения из локального решателя (set local solver options) или глобальной информации (set global solver object properties).
Различные границы для изучения различных областей - установка границ в 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Преобразовать a 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