What do the fields in the output structure of fmincon mean?

조회 수: 1 (최근 30일)
Viswanath Hariharan
Viswanath Hariharan 2018년 6월 27일
댓글: Walter Roberson 2018년 7월 1일
When we solve an optimization problem and obtain the output structure, it has fields such as funcCount, constrviolation, stepsize, firstorderopt etc.
According to the documentation, funcCount means function evaluations.
1. What is the difference between iterations and funcCount?
According to the documentation, constrviolations means maximum of constraint functions.
2. What does it mean to say maximum of constraint functions? In my problem, output.constrviolations = 0.1956. What does this mean?
3. How do I use these values to analyze quality of solution?

채택된 답변

Alan Weiss
Alan Weiss 2018년 6월 27일
  1. Iterations and Function Counts
  2. Nonlinear constraint violations are the maximum of your nonlinear inequality constraint functions c(x), your nonlinear equality constraint functions |ceq(x)|, and your linear constraints A*x-b and |Aeq*x - beq|. The meaning of your positive value is that some of your constraints are not satisfied at the returned solution x.
  3. That is up to you. You know that the constraints are not satisfied. Does that matter to you? If this problem is the same as that posted in another thread, then your output function stopped the optimization before fmincon reached what it considers to be a good solution.
Alan Weiss
MATLAB mathematical toolbox documentation
  댓글 수: 2
Viswanath Hariharan
Viswanath Hariharan 2018년 7월 1일
Just for knowledge sake, what is the mathematics behind calculation of constrviolation? I don't have any ceq(x) in my formulation. I do have Aeq and beq so I can understand if Aeq*x-beq might result in a positive number but I cannot understand how c(x) might result in a positive number or even be a 'maxima' at any point.
The condition states that c(x) <= 0 so wont it always ensure a value less than 0 and hence wont the error produced by the equality constraints be the maximums always?
Walter Roberson
Walter Roberson 2018년 7월 1일
"The condition states that c(x) <= 0 so wont it always ensure a value less than 0"
No, to account for floating point round off, it accepts c(x) <= tolerance

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

추가 답변 (0개)

카테고리

Help CenterFile Exchange에서 Solver Outputs and Iterative Display에 대해 자세히 알아보기

제품


릴리스

R2017b

Community Treasure Hunt

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

Start Hunting!

Translated by