exponenta event banner

Изменить параметры

Определение параметров для изменения

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

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

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

Примеры обновления параметров проблемы

  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
  • Преобразовать 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

Связанные темы