<div dir="ltr"><div>Dear all,</div><div><br></div><div>I have a Hessian of the Lagrangian that is spsd (symmetric positive semi-definite) but not spd (symmetric positive definite), i.e. all eigenvalues are non-negative but for certain there are eigenvalues that are zero. That Hessian is constructed as follows:</div><div><br></div><div>I have HL = P' * A * P, where A is block-diagonal. I know from theory (BFGS blocks) that the diagonal blocks of A are each spd, so to enforce this numerically under any circumstances, I still go through the blocks, enforce symmetry by A = 1/2*(A+A') and then do an eigendecomposition of each diagonal block and replace that block by the product Q*T*Q', where T is the diagonal of eigenvalues and Q is the eigenvector matrix, and where I replace any negative entry of T by 1e-10. Then I generate HL.</div><div><br></div><div>I am now wondering how Ipopt is going to handle that. I mean if one eigenvalue was negative then a shift was required. However, when eigenvalues are zero then the condition is infinite, i.e. by no stable decomposition Ipopt could detect whether my eigenvalue is still >=0 or maybe still -1e-15. I just observe that it takes very large regularisations, e.g. 10^2.</div><div><br></div><div>I know that when columns and rows of HL are zero that then the problem simplifies since the system can be reformulated and a part of HL can be determined that has only zero eigenvalues and another that has only eigenvalues greater a constant>0.</div><div><br></div><div>I am thankful if someone has an idea how to deal with this situation. The goal is to make Ipopt recognise that it does not need regularisations, whereas on the other hand it must be assured on the numerical side that under round-off this regularisation is really not required.</div><div><br></div><div>Kind regards,</div><div>Martin</div></div>