The code may be inspected with GeneralUtilities`PrintDefintions
. The principal components of the method are the 1st, 2nd, and 4th functions here:
Names["*`*IPSolve*"]
(*
{"Optimization`NonlinearInteriorPointDump`IPSolve", \
"Optimization`NonlinearInteriorPointDump`IPSolveInternal", \
"Optimization`NonlinearInteriorPointDump`IPSolveMessage", \
"Optimization`NonlinearInteriorPointDump`IPSolveOneIter"}
*)
The method has built-in debug hooks implemented as bit-flags:
Names["O*`*DEBUG*"]
(*
{"Optimization`NonlinearInteriorPointDump`DEBUG", \
"Optimization`NonlinearInteriorPointDump`DEBUGcomplementary", \
"Optimization`NonlinearInteriorPointDump`DEBUGdirection", \
"Optimization`NonlinearInteriorPointDump`DEBUGfilter", \
"Optimization`NonlinearInteriorPointDump`DEBUGIterations", \
"Optimization`NonlinearInteriorPointDump`DEBUGLinearSolve", \
"Optimization`NonlinearInteriorPointDump`DEBUGMonitor", \
"Optimization`NonlinearInteriorPointDump`DEBUGNewton", \
"Optimization`NonlinearInteriorPointDump`DEBUGPenaltyIncrease", \
"Optimization`NonlinearInteriorPointDump`DEBUGpoints", \
"Optimization`NonlinearInteriorPointDump`DEBUGProblemdef", \
"Optimization`NonlinearInteriorPointDump`DEBUGrhs", \
"Optimization`NonlinearInteriorPointDump`DEBUGScaling", \
"Optimization`NonlinearInteriorPointDump`DEBUGstep", \
"Optimization`NonlinearInteriorPointDump`DEBUGsteplength"}
*)
They may be toggled on/off with comments as follows:
Block[{Optimization`NonlinearInteriorPointDump`DEBUG =
(*2^Optimization`NonlinearInteriorPointDump`DEBUGProblemdef+*)
2^Optimization`NonlinearInteriorPointDump`DEBUGIterations +
2^Optimization`NonlinearInteriorPointDump`DEBUGstep +
(*2^Optimization`NonlinearInteriorPointDump`DEBUGNewton+*)
2^Optimization`NonlinearInteriorPointDump`DEBUGMonitor},
FindMinimum[(x + 1)*(x - 1), x, Method -> "InteriorPoint"]
]
The code is complicated, but I suspect the method follows the standard IP algorithm. Between the code and the debug, it might take just a morning to figure the outline of how it works.
Method
setting is just being ignored in this case. $\endgroup$