Fixed a couple of runtime warnings from python that came up in the unconstrained case.
Fixed a bug in the damped update for the case of a feasible intermediate point.
Replace 'savetext' and 'loadtext' based output with python shelve module (binary, very fast)
Further, input and output now only occur on one processor to save some overhead.
Simplified data saving procedure: now all relevent data is stored on a single Python shelf.
Also updated quasi-Newton class to conform to new data storage scheme. We now use MPI operations to collect and store the distributed blocks of the matrix.
Make sure to open the shelf for reading and writing.
Remove one of the options to simplify the Python shelve file name.
Rename 'hotstart' as 'warmstart' since the latter is more accurate.
Use correct flag for opening a new Python shelf.
Fixed shelving to ensure that persistent data is written right away.
Clean up comments, remove old np.savetxt() and np.loadtxt() commands permanently.
Initial commit of a simplified NLP model class to remove some excess overhead.
Added in matrix-free and slack NLP formulations with numpy index arrays removed.
Now, matvecs are completed using constraint ordering as a guide.
Data storage is now accomplished with the self._cache dictionary.
Check for a consistent x value has been changed from hashing to numpy.linalg.norm check, which is >30% faster for array lengths O(1000).
Switched from range() loops to xrange() loops in quasi-Newton approximations.
Numerous small typo fixes in new NLP model class.
Refactored automatic structure detection.
New class tested with AUGLAG solver, and is functional.
Assume that the quasi-Newton Jacobian now has no sparse component to see how that affects run time.
Changed interface in the wrong place: now we get the correct slack variable treatment.
Migrated dictionary storage back to the main SlackNLP class.
Constraint ordering seems to make little difference in performance on large problems, relative to other changes.