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



Используя запись через точку. свойства 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 независимо или в значении целевой функции или в местоположении.