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