Измените опции

Как определить который опции измениться

После того, как вы запустите глобальный решатель, вы можете хотеть изменить некоторые глобальные или локальные опции. Чтобы определить, какие опции измениться, руководящий принцип:

  • Чтобы влиять на локальный решатель, установите локальные опции решателя.

  • Чтобы влиять на стартовые точки или набор решения, измените 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;
  • Воссоздайте целую структуру задачи. Для получения дополнительной информации смотрите, Создают Структуру задачи.

Примеры обновляющихся проблемных опций

  1. Создайте структуру задачи:

    problem = createOptimProblem('fmincon','x0',[-1 2], ...
        'objective',@rosenboth);
  2. Установите проблему использовать sqp алгоритм в fmincon:

    problem.options.Algorithm = 'sqp';
  3. Обновите проблему использовать градиент в целевой функции, иметь 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

Похожие темы