I modified how we calculate and use the value...
I modified how we calculate and use the value...

I modified how we calculate and use the value h(x).  Basically, in
several places, such as the calculation of the gradient, the calculate
of the Hessian-vector product, and the generation of the new Lagrange
multiplier, we require a calculation of Linv(h(x)).  In a semidefinite
program, our current implemenation must solve the Sylvester equations
and we accomplish this through a Schur decomposition of h(x).
Unfortunately, this computation is very expensive as the size of h(x)
grows.  In order to help combat this cost, we now cache the value of
h(x).  By itself, this doesn't fix the problem.  However, in our default
implemenation of the vector spaces, we setup a process where we can
cache this decomposition when required.  By combining these two
features, we can reduce the number of Schur factorizations per
optimization iteration to 1.  Previously, there would be several.  Until
we eliminate the requirement of the Schur factorization, which may or
may not be possible, I believe that this is the best we can do.


OptimoJoe/Optizelle,OptimoJoe/Optizelle,OptimoJoe/Optizelle,OptimoJoe/Optizelle