force fsolve termination if not progressing

조회 수: 1 (최근 30일)
Leo Simon
Leo Simon 2014년 7월 21일
댓글: Leo Simon 2014년 7월 22일
Hi.
I'm running repeated fsolves. With bad starting points, the engine goes nowhere. I can see this looking at the output when Display is set to iter: norm of step keeps shrinking and f fails to improve. Is there a way to pass the information that Display('iter') uses to the "myfun" workspace (i.e., the function that I'm trying to solve), thus allowing me to measure if I'm making no progress and then terminate? I could of course hack into fsolve but but obviously would prefer not to if I don't have to.

채택된 답변

Alan Weiss
Alan Weiss 2014년 7월 21일
Use an output function to terminate the iterations early, if you like.
Alan Weiss
MATLAB mathematical toolbox documentation
  댓글 수: 2
Leo Simon
Leo Simon 2014년 7월 21일
Wonderful, exactly what I've wanted for years... thanks very much, Alan
Leo Simon
Leo Simon 2014년 7월 22일
It would be really nice if one could condition on exitflag in state 'done'. For example, I would like to plot the history of various fields of optimValue, but only if exitflag is <= 0. (After all, no need to try to debug if exitflag=1). But by default, at least, the output function doesn't seem to know what exitflag is in state 'done', (which seems very odd). So my question is, is there a way to pass exitflag to my output function?
Thanks! Leo

댓글을 달려면 로그인하십시오.

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Surrogate Optimization에 대해 자세히 알아보기

Community Treasure Hunt

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

Start Hunting!

Translated by