How to understand the terms in out.log?

OpenSim Moco is a software toolkit to solve optimal control problems with musculoskeletal models defined in OpenSim using the direct collocation method.
POST REPLY
User avatar
Simon Jeng
Posts: 87
Joined: Fri Sep 07, 2018 8:26 pm

How to understand the terms in out.log?

Post by Simon Jeng » Mon Apr 12, 2021 11:14 pm

Hi all,

Every time we run MocoStudy, a out.log file would be generated to record the simulation process. I am not quite familiar with optimal control theory so I cannot understand some terms in this file. The following are the terms and my questions:

  • acceptable_compl_inf_tol = 1e-05 (what is compl and inf?)
  • acceptable_dual_inf_tol = 1e-05 (what is dual?)
  • acceptable_tol = 1e-05 (what is the difference between acceptable_tol and the first two?)
  • tol = 1e-05 (what is the meaning of this tol?)
  • This is Ipopt version 3.12.8, running with linear solver mumps. (I have called initCasADiSolver(), what is the relationship between CasADiSolver and Ipopt solver?)
  • inf_pr, inf_du, lg(mu), ||d||, lg(rg), alpha_du, alpha_pr, ls (what is the meaning of these terms?)
  • MocoCasADiSolver did NOT succeed:Restoration_Failed (What is restoration? What causes this failure?)



It is very appreciate if anyone can answer so many questions for me :D .

Best wishes
Simon

User avatar
Brian Umberger
Posts: 48
Joined: Tue Aug 28, 2007 2:03 pm

Re: How to understand the terms in out.log?

Post by Brian Umberger » Tue Apr 13, 2021 3:45 pm

Hi Simon,

This may not answer all of your questions, but the COIN-OR Foundation website has lots of relevant information about IPOPT.

Here is the full list of IPOPT options:
https://www.coin-or.org/Bonmin/option_p ... ipopt.html

On that page if you click on the "Convergence" options link you will find some of the answers to your questions. For example, from that page:

acceptable_tol: 'Acceptable' convergence tolerance (relative).
Determines which (scaled) overall optimality error is considered to be 'acceptable.' There are two levels of termination criteria. If the usual 'desired' tolerances (see tol, dual_inf_tol etc) are satisfied at an iteration, the algorithm immediately terminates with a success message. On the other hand, if the algorithm encounters 'acceptable_iter' many iterations in a row that are considered 'acceptable,' it will terminate before the desired convergence tolerance is met. This is useful in cases where the algorithm might not be able to achieve the 'desired' level of accuracy. The valid range for this real option is 0 < acceptable_tol < +inf and its default value is 1e-6.

They also have a set of papers about IPOPT specifically, optimization in general, and applications using IPOPT:
https://projects.coin-or.org/Ipopt/wiki/IpoptPapers

I hope this helps.

Brian

User avatar
Simon Jeng
Posts: 87
Joined: Fri Sep 07, 2018 8:26 pm

Re: How to understand the terms in out.log?

Post by Simon Jeng » Wed Apr 14, 2021 1:19 am

Thanks for your recommendation, Brian :D

Best,
Simon

POST REPLY