Вы получаете несколько решений в объекте путем вызова run с синтаксисом
[x,fval,eflag,output,manymins] = run(...);
manymins вектор из объектов решения; смотрите GlobalOptimSolution. manymins вектор в порядке значения целевой функции от самого низкого (лучше всего) к (худшему) самому высокому. Каждый объект решения содержит следующие свойства (поля):
X — локальный минимум
Fval — значение целевой функции при X
Exitflag — выходной флаг для локального решателя (описанный на локальной странице ссылки на функцию решателя: fmincon
exitflag, fminunc
exitflag, lsqcurvefit
exitflag , или lsqnonlin
exitflag
Output — структура output для локального решателя (описанный на локальной странице ссылки на функцию решателя: fmincon
output, fminunc
output, lsqcurvefit
output , или lsqnonlin
output
X0 — массив ячеек стартовых точек, которые привели к решению, указывает X
Существует несколько способов исследовать вектор из объектов решения:
В MATLAB® Браузер рабочей области. Дважды кликните объект решения, и затем дважды кликните получившееся отображение в редакторе Переменных.



Используя запись через точку. GlobalOptimSolution свойства использованы для своей выгоды. Используйте соответствующую капитализацию, чтобы получить доступ к свойствам.
Например, чтобы найти вектор из значений функции, введите:
fcnvals = [manymins.Fval] fcnvals = -1.0316 -0.2155 0
Получить массив ячеек всех стартовых точек, которые привели к самому низкому значению функции (первый элемент manymins), введите:
smallX0 = manymins(1).X0
Постройте некоторые значения полей. Например, чтобы видеть область значений получившегося Fval, Введите:
histogram([manymins.Fval],10)
Это приводит к гистограмме вычисленных значений функции. (Рисунок показывает гистограмму из различного примера, чем предыдущие немного фигур.)

Вы можете узнать после получения нескольких локальных решений, что ваши допуски не были соответствующими. У вас может быть намного больше локальных решений, чем вы хотите, распределенный слишком тесно вместе. Или у вас может быть меньше решений, чем вы хотите с GlobalSearch или MultiStart сбор в группу вместе слишком многих решений.
Чтобы справиться с этой ситуацией, запустите решатель снова с различными допусками. XTolerance и FunctionTolerance допуски определяют, как решатели группируют свои выходные параметры в GlobalOptimSolution вектор. Эти допуски являются свойствами GlobalSearch или MultiStart объект.
Например, предположите, что вы хотите использовать active-set алгоритм в fmincon решать задачу в Примере Запущенных с MultiStart. Далее предположите, что вы хотите иметь допуски 0.01 для обоих XTolerance и FunctionTolerance. run локальные решения групп метода, значения целевой функции которых в FunctionTolerance друг из друга, и которые также меньше XTolerance друг кроме друга. Получить решение:
% % Set the random stream to get exactly the same output
% rng(14,'twister')
ms = MultiStart('FunctionTolerance',0.01,'XTolerance',0.01);
opts = optimoptions(@fmincon,'Algorithm','active-set');
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],...
'options',opts);
[xminm,fminm,flagm,outptm,someminsm] = run(ms,problem,50);
MultiStart completed the runs from all start points.
All 50 local solver runs converged with a
positive local solver exit flag.
someminsm
someminsm =
1x5 GlobalOptimSolution
Properties:
X
Fval
Exitflag
Output
X0В этом случае, MultiStart сгенерированный пять отличных решений. Здесь “отличный” означает, что решения - больше чем 0,01 независимо или в значении целевой функции или в местоположении.