In reply to comments:
Yes, but GlobalSearch is evaluating your objective function on each iteration. All you can do is read these values out as you said in the plot function. But, from within the plot function you can change a flag, that when checked by the objective function, will cause your objective function to return a larger value than the previous iteration rather than doing the calculation.
If we had a small example, it would be easier to show how to do this. I think using a nested function as the plot function would likely be easiest. The nested function shares the workspace with the objective function so they can see and modify each other's variables. I thought there was an example on how to do this, but I can't find it now. Maybe Alan will chime in.
If you can provide a minimal working example, it would help.