Finding intermediate values during minimisation

4 次查看(过去 30 天)
Dear reader,
I have a minimisation problem at hand using lsqnonlin. According to the output, there are 8 iterations required to get to the final answer. Is it possible to find the values the lsqnonlin function calculates during those 8 iterations. The way I did it now is by including the line
intermediatec(:,iteration)=x0;
(where x0 is the calculated values). This however gives me much more than 8 times the intermediate x0 values.
Also, if anyone has an idea to speed up the code, that would be very helpfull too.
The full function looks like this:
global F
global intermediatec
global iteration
F = permute(squeeze(sum(IVW.*x0,2))-EVW(:,1),[2,1]) ;
F=F(:)';
iteration=iteration+1;
intermediatec(:,iteration)=x0;
kind regards,
Ariwan

采纳的回答

Harikrishnan Balachandran Nair
编辑:Harikrishnan Balachandran Nair 2021-10-19
Hi Ariwan,
I understand that you are trying to solve a problem using 'lsqnonlin' function, and you want to record the intermediate 'x' values found by the function.
The same can be achieved by specifying a function handle using the 'OutputFcn' option, inside the optimization options. The optimization function would call this specified function, at the end of each iteration. You can set the options using the 'optimoptions' function. The function can be formulated in such a way that, it records the intermediate output values , in the specified location, after each iteration. You can refer to the following Documentation links to get a better idea on it

更多回答(0 个)

类别

Help CenterFile Exchange 中查找有关 Get Started with Optimization Toolbox 的更多信息

产品


版本

R2020a

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by