Установите стартовые точки для MultiStart

Четыре способа установить стартовые точки

Существует четыре способа, которыми вы говорите MultiStart какие стартовые точки использовать в локальном решателе:

  • Передайте положительный целочисленный k. MultiStart генерирует   k - 1 стартовые точки, как будто использование RandomStartPointSet возразите и problem структура. MultiStart также использует x0 стартовая точка от problem структура, в общей сложности для k стартовые точки.

  • Передайте RandomStartPointSet объект.

  • Передайте CustomStartPointSet объект.

  • Передайте массив ячеек RandomStartPointSet и CustomStartPointSet объекты. Передайте массив ячеек, если у вас есть некоторые отдельные моменты, вы хотите запустить, но также и хотеть MultiStart использовать другие случайные стартовые точки.

Примечание

Можно управлять ли MultiStart использование все стартовые точки, или только те точки, которые удовлетворяют границам или другим ограничениям неравенства. Для получения дополнительной информации смотрите Стартовые точки Фильтра (Необязательно).

Положительное целое число для стартовых точек

Синтаксис для выполнения MultiStart для k стартовые точки

[xmin,fmin,flag,outpt,allmins] = run(ms,problem,k);

Положительный целочисленный k задает количество стартовых точек MultiStart использование. MultiStart генерирует случайные стартовые точки с помощью размерности проблемы и границ от problem структура. MultiStart генерирует   k - 1 случайные стартовые точки, и также используют x0 стартовая точка от problem структура.

Объект RandomStartPointSet для стартовых точек

Создайте RandomStartPointSet объект можно следующим образом:

stpoints = RandomStartPointSet;

Запустите MultiStart запуск с RandomStartPointSet можно следующим образом:

[xmin,fmin,flag,outpt,allmins] = run(ms,problem,stpoints);

По умолчанию RandomStartPointSet объект генерирует 10 стартовых точек. Управляйте количеством стартовых точек с NumStartPoints свойство. Например, чтобы сгенерировать 40 стартовых точек:

stpoints = RandomStartPointSet('NumStartPoints',40);

Можно установить ArtificialBound для RandomStartPointSet. Этот ArtificialBound работает в сочетании с границами от структуры задачи:

  • Если компонент не имеет никаких границ, RandomStartPointSet использует нижнюю границу -ArtificialBound, и верхняя граница ArtificialBound.

  • Если компонент имеет нижнюю границу lb но никакая верхняя граница, RandomStartPointSet использует верхнюю границу   lb + 2*ArtificialBound.

  • Точно так же, если компонент имеет верхнюю границу ub но никакая нижняя граница, RandomStartPointSet использует нижнюю границу   ub - 2*ArtificialBound.

Например, чтобы сгенерировать 100 стартовые точки с ArtificialBound из 50:

stpoints = RandomStartPointSet('NumStartPoints',100, ...
    'ArtificialBound',50);

RandomStartPointSet объект генерирует стартовые точки с той же размерностью как x0 укажите в структуре задачи; смотрите list.

Объект CustomStartPointSet для стартовых точек

Чтобы использовать определенный набор начальных точек, группируйте их в CustomStartPointSet можно следующим образом:

  1. Поместите начальные точки в матрицу. Каждая строка матрицы представляет одну начальную точку. MultiStart запуски все строки матрицы согласно фильтрации с StartPointsToRun свойство. Для получения дополнительной информации см. Алгоритм MultiStart.

  2. Создайте CustomStartPointSet объект из матрицы:

    tpoints = CustomStartPointSet(ptmatrix);

Например, создайте набор 40 пятимерных точек с каждым компонентом точки, равной 10 плюс экспоненциально распределенная переменная со средним значением 25:

pts = -25*log(rand(40,5)) + 10;
tpoints = CustomStartPointSet(pts);

Запустите MultiStart запуск с CustomStartPointSet можно следующим образом:

[xmin,fmin,flag,outpt,allmins] = run(ms,problem,tpoints);

Получить исходную матрицу точек от CustomStartPointSet объект, используйте list:

pts = list(tpoints); % Assumes tpoints is a CustomStartPointSet

CustomStartPointSet имеет два свойства: StartPointsDimension и NumStartPoints. Можно использовать эти свойства запросить CustomStartPointSet объект. Например, tpoints объект в примере имеет следующие свойства:

tpoints.StartPointsDimension
ans =
     5

tpoints.NumStartPoints
ans =
    40

Массив ячеек объектов для стартовых точек

Чтобы использовать определенный набор начальных точек наряду с некоторыми случайным образом сгенерированными точками, передайте массив ячеек RandomStartPointSet или CustomStartPointSet объекты.

Например, чтобы использовать и 40 определенных пятимерных точек Объекта CustomStartPointSet для Стартовых точек и 40 дополнительных пятимерных точек от RandomStartPointSet:

pts = -25*log(rand(40,5)) + 10;
tpoints = CustomStartPointSet(pts);
rpts = RandomStartPointSet('NumStartPoints',40);
allpts = {tpoints,rpts};

Запустите MultiStart запуск с allpts cellArray:

% Assume ms and problem exist
[xmin,fmin,flag,outpt,allmins] = run(ms,problem,allpts);

Похожие темы