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

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

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

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

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

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

  • Передайте массив ячеек объектов CustomStartPointSet и RandomStartPointSet. Передайте массив ячеек, если у вас есть некоторые отдельные моменты, вы хотите запустить, но также и хотеть, чтобы 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;

По умолчанию объект 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);

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

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

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

tpoints.StartPointsDimension
ans =
     5

tpoints.NumStartPoints
ans =
    40

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

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

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

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

Запустите MultiStart с массивом ячеек allpts:

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

Похожие темы