# How to see the current value of the variable in "fminsearch" optimization?

2 views (last 30 days)
Ahmed Rehan on 23 Jul 2020
Commented: Ahmed Rehan on 24 Jul 2020
Hi,
I am running fminsearch command to find a minimum of a function. It is taking very long. However, I want to see the current value of the variable being serached. For example,"X=fminsearch(@fcn,init0,options)" showld display X in each interation. I looked into documentaiton of "optimset" but I couldn't find something helpful.
Ahmed.

Alan Weiss on 23 Jul 2020
You can do this using an Output Function. That example shows how to return the history of points, which is I think what you want.
Alan Weiss
MATLAB mathematical toolbox documentation

#### 1 Comment

Ahmed Rehan on 24 Jul 2020
Thank you so much. This does the job. Based on this solution, I also tried disp() command in my function code, which also did the work.

Vladimir Sovkov on 23 Jul 2020
optimset('Display','iter');
From Matlab documentation:
'Display' Level of display
'notify' (default) | 'final' | 'off' | 'none' | 'iter'
Level of display, specified as the comma-separated pair consisting of 'Display' and one of these values:
• 'notify' — Display output only if the function does not converge.
• 'final' — Display just the final output.
• 'off' or 'none' — Display no output.
• 'iter' — Display output at each iteration (not available for lsqnonneg).
Display is available for all optimization solvers.
Example: options = optimset('Display','iter')
Data Types: char | string

Ahmed Rehan on 23 Jul 2020
Thank you for the answer, but this command only displays the iteration number, not the current value of variable tht is being searched. I want the current value of X in f(X) in the iteration.
Iteration Func-count min f(x) Procedure
0 1 708.748
1 3 675.4 initial simplex
2 5 645.167 expand
3 7 638.839 expand
4 9 591.374 expand
5 10 591.374 reflect
6 12 554.554 expand
Vladimir Sovkov on 23 Jul 2020
I do not think it is possible with fminsearch due to a (generally) multidimensional nature of the variable, which is hard to display in a compact form.
The things are easier with the 1D variable: this case you can use an alternative function such as fminbnd, which is able to output the X values at every next itereation via the same approach; besides, it must be faster in the 1D case.