Существует четыре способа, которыми вы говорите 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 CustomStartPointSetCustomStartPointSet имеет два свойства: 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);