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

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

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

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

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

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

  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

Похожие темы