Есть четыре способа рассказать 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 объект следующим образом:
stpoints = RandomStartPointSet;
Управляемый MultiStart начиная с RandomStartPointSet следующим образом:
[xmin,fmin,flag,outpt,allmins] = run(ms,problem,stpoints);
По умолчанию a 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);
A RandomStartPointSet объект создает начальные точки с тем же размером, что и x0 точка в структуре проблемы; посмотрите list.
Чтобы использовать определенный набор начальных точек, упаковывайте их в CustomStartPointSet следующим образом:
Поместите начальные точки в матрицу. Каждая строка матрицы представляет одну начальную точку. MultiStart запускает все строки матрицы, подлежащие фильтрации с помощью StartPointsToRun собственность. Дополнительные сведения см. в разделе Алгоритм MultiStart.
Создать 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 CustomStartPointSetA CustomStartPointSet имеет два свойства: StartPointsDimension и NumStartPoints. Эти свойства можно использовать для запроса CustomStartPointSet объект. Например, tpoints объект в примере имеет следующие свойства:
tpoints.StartPointsDimension
ans =
5
tpoints.NumStartPoints
ans =
40Чтобы использовать определенный набор начальных точек вместе с некоторыми случайно сгенерированными точками, передайте массив ячеек RandomStartPointSet или CustomStartPointSet объекты.
Например, чтобы использовать как 40 конкретных пятимерных точек объекта CustomStartStartSet для начальных точек, так и 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);