Как создать GlobalSearch
или MultiStart
объект со свойствами nondefault, используйте пары "имя-значение". Например, чтобы создать GlobalSearch
объект, который имеет итеративное отображение и запускается только из допустимых точек относительно границ и неравенств, введите
gs = GlobalSearch('Display','iter', ... 'StartPointsToRun','bounds-ineqs');
Как задать свойство существующего GlobalSearch
или MultiStart
объект, используйте запись через точку. Для примера, если ms
является MultiStart
объект, и вы хотите задать Display
свойство к 'iter'
, введите
ms.Display = 'iter';
Чтобы задать несколько свойств существующего объекта одновременно, используйте конструктор (GlobalSearch
или MultiStart
) с парами "имя-значение". Для примера установите Display
свойство к 'iter'
и MaxTime
свойство к 100
, введите
ms = MultiStart(ms,'Display','iter','MaxTime',100);
Дополнительные сведения о настройке свойств см. в разделе Изменение глобальных опций.
Можно создать MultiStart
объект из GlobalSearch
объект и наоборот.
Синтаксис для создания нового объекта из существующего объекта:
ms = MultiStart(gs); or gs = GlobalSearch(ms);
Новый объект содержит свойства, которые применяются к старому объекту. В этом разделе описываются эти общие свойства:
Значения для Display
свойство:
'final'
(по умолчанию) - Итоговые результаты в командной строке после последнего запуска решателя.
'off'
- Нет выхода в командную строку.
'iter'
- Результирующие результаты в командную строку после каждого запуска локального решателя.
The FunctionTolerance
свойство описывает, как близко два значения целевой функции должны быть для решателей, чтобы считать их идентичными для создания вектора локальных решений. Задайте FunctionTolerance
на 0
для получения результатов каждого запуска локального решателя. Задайте FunctionTolerance
к большему значению, чтобы иметь меньше результатов.
Решатели считают два решения идентичными, если они находятся в XTolerance
расстояние друг от друга и иметь значения целевых функций в FunctionTolerance
друг о друге. Если оба условия не выполняются, решатели сообщают о решениях как об отличных. Допуски относительны, а не абсолютны. Для получения дополнительной информации смотрите Когда fmincon запускается для GlobalSearch
, и Создать объект GlobalOptimSolution для MultiStart
.
The MaxTime
свойство описывает допуск на количество секунд с момента начала запуска решателя. Решатели останавливаются, когда видят MaxTime
секунды прошли с начала запуска. Время означает настенные часы в отличие от процессорных циклов. Значение по умолчанию является Inf
.
The OutputFcn
свойство указывает глобальному решателю запускать одну или несколько выходных функций после завершения каждого запуска локального решателя. Выходные функции также запускаются, когда глобальный решатель запускается и заканчивается. Включите указатель в выходную функцию, записанную в соответствующем синтаксисе, или включите массив ячеек из таких указателей. По умолчанию это пустая запись ([]
).
Синтаксис выходной функции:
stop = outFcn(optimValues,state)
stop
является логическим. Когда true
алгоритм останавливается. Когда false
, алгоритм продолжается.
Примечание
Локальный решатель может иметь выходную функцию. Глобальный решатель не обязательно останавливается, когда выходная функция локального решателя заставляет локальный решатель останавливаться. Если вы хотите, чтобы глобальный решатель остановился в этом случае, остановите выходную функцию глобального решателя, когда optimValues.localsolution.exitflag=-1
.
optimValues
- структура, описанная в optimValues Structure.
state
- текущее состояние глобального алгоритма:
'init'
- Глобальный решатель не вызвал локальный решатель. Поля в optimValues
структура пуста, кроме localrunindex
, что 0
, и funccount
, который содержит количество объективных и ограничительных вычислений функции.
'iter'
- Глобальный решатель вызывает выходные функции после каждого запуска локального решателя.
'done'
- Глобальный решатель закончил вызов локальных решателей. Поля в optimValues
обычно имеют те же значения, что и таковые от последнего вызова выходной функции с state
= 'iter'
. Однако значение optimValues.funccount
для GlobalSearch
может быть больше, чем значение в последнем вызове функции с 'iter'
, потому что GlobalSearch
алгоритм мог выполнить некоторые вычисления функции, которые не были частью локального решателя. Для получения дополнительной информации см. «Алгоритм глобального поиска».
Для примера, использующего выходную функцию, см. GlobalSearch Output Function.
Примечание
Выходные и графические функции не запускаются при MultiStart
имеет UseParallel
значение опции установлено в true
и есть открытый parpool
.
Структура optimValues. The optimValues
структура содержит следующие поля:
bestx
- Текущая лучшая точка
bestfval
- Значение целевой функции в bestx
funccount
- Общее количество вычислений функции
localrunindex
- Индекс выполнения локального решателя
localsolution
- структура, содержащая часть выхода вызова локального решателя: X
, Fval
и Exitflag
The PlotFcn
свойство указывает глобальному решателю запускать одну или несколько функции построения графика после завершения каждого запуска локального решателя. Включите указатель в функцию построения графика, записанную в соответствующем синтаксисе, или включите массив ячеек из таких указателей. По умолчанию это пустая запись ([]
).
Синтаксис функции построения графика совпадает с синтаксисом выходной функции. Для получения дополнительной информации смотрите OutputFcn.
Существует две предопределенные функции построения графика для глобальных решателей:
@gsplotbestf
строит графики наилучшего значения целевой функции.
@gsplotfunccount
строит графики количества вычислений функции.
Для получения примера, использующей функцию построения графика, смотрите Функцию построения графика MultiStart.
Если вы задаете больше чем одну функцию построения графика, все графики появляются как подграфики в одном окне. Щелкните правой кнопкой мыши любой подграфик для получения большей версии в отдельном окне рисунка.
Примечание
Выходные и графические функции не запускаются при MultiStart
имеет UseParallel
значение опции установлено в true
и есть открытый parpool
.
The StartPointsToRun
свойство предписывает решателю исключить из выполнения определенные стартовые точки:
all
- Примите все стартовые точки.
bounds
- Отклонить начальные точки, которые не удовлетворяют границам.
bounds-ineqs
- Отклоните стартовые точки, которые не удовлетворяют границам или ограничениям неравенства.
The XTolerance
свойство описывает, как близко две точки должны быть для решателей, чтобы считать их идентичными для создания вектора локальных решений. Задайте XTolerance
на 0
для получения результатов каждого запуска локального решателя. Задайте XTolerance
к большему значению, чтобы иметь меньше результатов. Решатели вычисляют расстояние между парой точек с norm
, евклидово расстояние.
Решатели считают два решения идентичными, если они находятся в XTolerance
расстояние друг от друга и иметь значения целевых функций в FunctionTolerance
друг от друга. Если оба условия не выполняются, решатели сообщают о решениях как об отличных. Допуски относительны, а не абсолютны. Для получения дополнительной информации смотрите Когда fmincon запускается для GlobalSearch
, и Создать объект GlobalOptimSolution для MultiStart
.
Количество потенциальных начальных точек для исследования в дополнение к x0
от problem
структура. GlobalSearch
запускает только те потенциальные стартовые точки, которые проходят несколько тестов. Для получения дополнительной информации см. «Алгоритм глобального поиска».
По умолчанию: 1000
Количество начальных точек на этапе 1. Для получения дополнительной информации смотрите Получение начальной точки этапа 1, Запуск.
По умолчанию: 200
Положительный целочисленный допуск, появляющийся в нескольких точках алгоритма.
Если наблюдаемая штрафная функция MaxWaitCycle
последовательные пробные точки - это, по крайней мере, порог штрафа, затем повышайте порог штрафа (см. PenseThresholdFactor).
Если MaxWaitCycle
последовательные пробные точки находятся в умывальной раковине, затем обновляется радиус умывальной раковины (см. BasinRadiusFactor).
По умолчанию: 20
Радиус умывальной раковины уменьшается после MaxWaitCycle
последовательные начальные точки находятся в умывальных раковинах. Радиус умывальной раковины уменьшается в 1 - BasinRadiusFactor
раз.
По умолчанию: 0.2
Умножитель для определения, находится ли пробная точка в существующей области притяжения. Для получения дополнительной информации смотрите Исследуйте пробную точку этапа 2, чтобы увидеть, работает ли fmincon. По умолчанию: 0.75
Определяет увеличение порога штрафов. Для получения дополнительной информации смотрите Реакцию на Большие Значения Счетчика.
По умолчанию: 0.2
The UseParallel
свойство определяет, распределяет ли решатель стартовые точки по нескольким процессорам:
false
(по умолчанию) - Не запускать параллельно.
true
- Прокрутка параллельно.
Чтобы решатель выполнялся параллельно, вы должны настроить параллельное окружение с parpool
. Для получения дополнительной информации смотрите Как использовать параллельную обработку в Global Optimization Toolbox.