Существует четыре способа, которыми вы говорите 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);
По умолчанию 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
можно следующим образом:
Поместите начальные точки в матрицу. Каждая строка матрицы представляет одну начальную точку. 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 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);