Опции изменения

Как определить, какие опции нужно изменить

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

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

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

Примеры обновления опций задачи

  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

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте