У меня проблема с решением проблемы оптимизации в Matlab. У меня есть объективная функция, которую мне нужно свести к минимуму.Ошибка оптимизации lsqnonlin в Matlab
я запускаю этот код в Matlab, используя lsqnonlin функцию:
[objective] = @(E) objective(E);
options = optimoptions(@lsqnonlin,'Algorithm','trust-region-reflective','MaxFunEvals',2000);
lowb = [0.00001 0.00001 0.00001]; % lower bounds
uppb = [30 30 30]; % upper bounds
E0 = [0.00001 0.00001 0.00001]; %initial guess
problem = createOptimProblem('lsqnonlin', 'objective', objective, 'x0', E0, 'lb', lowb, 'ub', uppb, 'options', options);
ms = MultiStart;
matlabpool open
ms.UseParallel = 'always';
startpoints = RandomStartPointSet('NumStartPoints',100);
[E, fval, exitflag, output, solutions] = run(ms, problem, startpoints);
matlabpool close
Я получаю эту ошибку в конце концов, и я не могу продолжать: Алгоритм Левенберга-Марквардт не обрабатывает связанные ограничения и алгоритм рефлексии в области доверия требует по крайней мере столько же уравнений, сколько переменные; прерывание.
Не могли бы вы рассказать мне, что происходит не так? Это мои первые попытки в инструментах оптимизации в Matlab, поэтому я не знаю много чего.
использовать начальные точки в 'RandomStartPointSet' и не использовать ограничения' upper/lower', я думаю, что это источник ошибки, которую вы получаете –