запущенный

Запуститесь несколько - запускают решатель

Синтаксис

x = run(gs,problem)
x = run(ms,problem,k)
x = run(ms,problem,startpts)
[x,fval] = run(___)
[x,fval,exitflag,output] = run(___)
[x,fval,exitflag,output,solutions] = run(___)

Описание

пример

x = run(gs,problem) выполнения GlobalSearch, чтобы найти решение или несколько локальных решений problem.

пример

x = run(ms,problem,k) выполнения MultiStart на стартовых точках k, чтобы найти решение или несколько локальных решений problem.

пример

x = run(ms,problem,startpts) выполнения MultiStart на problem от стартовых точек описаны в startpts.

пример

[x,fval] = run(___) возвращает значение целевой функции в x, лучшая найденная точка, с помощью любого из аргументов в предыдущих синтаксисах. Для lsqcurvefit и lsqnonlin локальные решатели, fval содержит норму в квадрате невязки.

пример

[x,fval,exitflag,output] = run(___) также возвращает выходной флаг, описывающий условие возврата и выходную структуру, описывающую итерации выполнения.

пример

[x,fval,exitflag,output,solutions] = run(___) также возвращает вектор решений, содержащих отличные локальные минимумы, найденные во время выполнения.

Примеры

свернуть все

Создайте задачу оптимизации, которая имеет несколько локальных минимумов, и попытайтесь найти глобальный минимум с помощью GlobalSearch. Цель является проблемой с позвоночником верблюда с шестью горбами (см. Выполнение Решатель).

rng default % For reproducibility
gs = GlobalSearch;
sixmin = @(x)(4*x(1)^2 - 2.1*x(1)^4 + x(1)^6/3 ...
    + x(1)*x(2) - 4*x(2)^2 + 4*x(2)^4);
problem = createOptimProblem('fmincon','x0',[-1,2],...
    'objective',sixmin,'lb',[-3,-3],'ub',[3,3]);
x = run(gs,problem)
GlobalSearch stopped because it analyzed all the trial points.

All 8 local solver runs converged with a positive local solver exit flag.
x = 1×2

   -0.0898    0.7127

Можно запросить значение целевой функции в x, когда вы вызываете run при помощи следующего синтаксиса:

[x,fval] = run(gs,problem)

Однако, если вы забыли запрашивать fval, можно все еще вычислить значение целевой функции в x.

fval = sixmin(x)
fval = -1.0316

Используйте объект MultiStart по умолчанию решить проблему с позвоночником верблюда с шестью горбами (см. Выполнение Решатель).

rng default % For reproducibility
ms = MultiStart;
sixmin = @(x)(4*x(1)^2 - 2.1*x(1)^4 + x(1)^6/3 ...
    + x(1)*x(2) - 4*x(2)^2 + 4*x(2)^4);
problem = createOptimProblem('fmincon','x0',[-1,2],...
    'objective',sixmin,'lb',[-3,-3],'ub',[3,3]);
[x,fval,exitflag,outpt,solutions] = run(ms,problem,30);
MultiStart completed the runs from all start points.

All 30 local solver runs converged with a positive local solver exit flag.

Исследуйте лучшее значение функции и местоположение, где лучшее значение функции достигнуто.

fprintf('The best function value is %f.\n',fval)
The best function value is -1.031628.
fprintf('The location where this value is attained is [%f,%f].',x)
The location where this value is attained is [-0.089842,0.712656].

Создайте набор начальных 2D точек для MultiStart в области значений [-3,3] для каждого компонента.

v = -3:0.5:3;
[X,Y] = meshgrid(v);
ptmatrix = [X(:),Y(:)];
tpoints = CustomStartPointSet(ptmatrix);

Найдите точку, которая минимизирует проблему с позвоночником верблюда с шестью горбами (см. Выполнение Решатель) путем запуска MultiStart в точках в tpoints.

rng default % For reproducibility
ms = MultiStart;
sixmin = @(x)(4*x(1)^2 - 2.1*x(1)^4 + x(1)^6/3 ...
    + x(1)*x(2) - 4*x(2)^2 + 4*x(2)^4);
problem = createOptimProblem('fmincon','x0',[-1,2],...
    'objective',sixmin,'lb',[-3,-3],'ub',[3,3]);
x = run(ms,problem,tpoints)
MultiStart completed the runs from all start points.

All 169 local solver runs converged with a positive local solver exit flag.
x = 1×2

    0.0898   -0.7127

Создайте задачу оптимизации, которая имеет несколько локальных минимумов, и попытайтесь найти глобальный минимум с помощью GlobalSearch. Цель является проблемой с позвоночником верблюда с шестью горбами (см. Выполнение Решатель).

rng default % For reproducibility
gs = GlobalSearch;
sixmin = @(x)(4*x(1)^2 - 2.1*x(1)^4 + x(1)^6/3 ...
    + x(1)*x(2) - 4*x(2)^2 + 4*x(2)^4);
problem = createOptimProblem('fmincon','x0',[-1,2],...
    'objective',sixmin,'lb',[-3,-3],'ub',[3,3]);
[x,fval,exitflag,output,solutions] = run(gs,problem);
GlobalSearch stopped because it analyzed all the trial points.

All 8 local solver runs converged with a positive local solver exit flag.

Чтобы понять, что GlobalSearch сделал, чтобы решить эту проблему, исследуйте структуру output и объект solutions.

disp(output)
                funcCount: 2261
         localSolverTotal: 8
       localSolverSuccess: 8
    localSolverIncomplete: 0
    localSolverNoSolution: 0
                  message: 'GlobalSearch stopped because it analyzed all the trial points....'
  • GlobalSearch оценил времена целевой функции 2261.

  • GlobalSearch запустил fmincon, начинающий с восьми различных точек.

  • Все выполнения fmincon сходились успешно к локальному решению.

disp(solutions)
  1x4 GlobalOptimSolution array with properties:

    X
    Fval
    Exitflag
    Output
    X0
arrayfun(@(x)x.Output.funcCount,solutions)
ans = 1×4

    31    34    40     3

Восемь локальных выполнений решателя нашли четыре решения. Вывод funcCount показывает, что fmincon взял не больше, чем 40 функциональных оценок, чтобы достигнуть каждого из этих четырех решений. Вывод не показывает, сколько функциональных оценок четыре из выполнений fmincon взяли. Большинство 2 261 функциональной оценки, кажется, для GlobalSearch, чтобы оценить испытательные точки, не для fmincon, чтобы запустить запуск с тех точек.

Входные параметры

свернуть все

Решатель GlobalSearch, заданный как объект GlobalSearch. Создайте gs с помощью команды GlobalSearch.

Решатель MultiStart, заданный как объект MultiStart. Создайте ms с помощью команды MultiStart.

Задача оптимизации, заданная как структура задачи. Создайте problem с помощью createOptimProblem. Для получения дальнейшей информации смотрите, Создают Структуру задачи.

Пример: problem = createOptimProblem('fmincon','objective',fun,'x0',x0,'lb',lb)

Типы данных: struct

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

Пример: 50

Типы данных: double

Стартовые точки для MultiStart, заданного как объект CustomStartPointSet, как объект RandomStartPointSet, или как массив ячеек таких объектов.

Пример: {custompts,randompts}

Выходные аргументы

свернуть все

Лучшая найденная точка, возвратилась как действительный массив. Лучшая точка является той с самым низким значением целевой функции.

Самое низкое значение целевой функции, с которым сталкиваются, возвратилось как действительный скаляр. Для lsqcurvefit и lsqnonlin, целевая функция является суммой квадратов, также известной как норму в квадрате невязки.

Выйдите из сводных данных условия, возвращенных как целое число.

2По крайней мере один локальный минимум найден. Сходились некоторые выполнения локального решателя.
1По крайней мере один локальный минимум найден. Все выполнения локального решателя сходились.
0Никакой локальный минимум не найден. Локальный решатель, названный, по крайней мере, однажды и по крайней мере один локальный решатель, превысили допуски MaxFunctionEvaluations или MaxIterations.
-1Одно или несколько локальных выполнений решателя зашли в локальный решатель вывод или функция построения графика.
-2Никакой выполнимый локальный минимум не найден.
-5Предел MaxTime превышен.
-8Никакое решение не найдено. Все выполнения имели локальный выходной флаг -2 решателя или меньший, не весь равный -2.
-10С отказами сталкиваются в обеспеченных пользователями функциях.

Детали процесса решения, возвращенные как структура со следующими полями.

Поле Значение
funcCountКоличество функциональных оценок.
localSolverIncompleteКоличество локального решателя запускается с выходным флагом 0.
localSolverNoSolutionКоличество локального решателя запускается с отрицательным выходным флагом.
localSolverSuccessКоличество локального решателя запускается с положительным выходным флагом.
localSolverTotalОбщее количество локальных выполнений решателя.
messageВыходное сообщение.

Отличные локальные решения, возвращенные как вектор объектов GlobalOptimSolution.

Представленный в R2010a

Для просмотра документации необходимо авторизоваться на сайте