Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(79)

Issue 62059: This is a rewrite of large-scale nonlinear equation solvers in scipy.optimize.

Can't Edit
Can't Publish+Mail
Start Review
Created:
14 years, 11 months ago by pav
Modified:
9 years, 4 months ago
Reviewers:
Visibility:
Public.

Description

This is a rewrite of large-scale nonlinear equation solvers in scipy.optimize. Git branch is here: http://github.com/pv/scipy-work/commits/ticket/791-optimize-nonlin-rewrite You may want to try out the examples in the docstring of nonlin.py The following new features are added - Proper termination conditions - Generic framework for tolerance-controlled inexact Newton methods - Backtracking and line searches - Limited-memory Broyden methods, including SVD rank reduction in addition to more basic options - Newton-Krylov solver, using any of the solvers from scipy.sparse.linalg The new code API is mostly backward-compatible to the old one. Some methods that were not very useful are deprecated. All of the code is rewritten and refactored, aiming for easier maintenance. The API may need some tuning still; should the method_name wrappers be discarded, and the nonlin_solve(..., jacobian='foo') be the preferred interface? Note that this patchset includes some work in other parts of Scipy; these are in review separately (so don't comment on those in this ticket): - LGMRES sparse solver http://codereview.appspot.com/53096/show http://github.com/pv/scipy-work/commits/lgmres - Line search refactoring http://codereview.appspot.com/52096 http://github.com/pv/scipy-work/commits/linesearch-refactor

Patch Set 1 #

Total comments: 12
Unified diffs Side-by-side diffs Delta from patch set Stats (+2884 lines, -824 lines) Patch
M doc/Makefile View 2 chunks +4 lines, -0 lines 0 comments Download
M doc/source/conf.py View 1 chunk +6 lines, -1 line 0 comments Download
M doc/source/optimize.rst View 2 chunks +29 lines, -12 lines 0 comments Download
A doc/source/optimize.nonlin.rst View 1 chunk +1 line, -0 lines 0 comments Download
M scipy/optimize/__init__.py View 1 chunk +1 line, -2 lines 0 comments Download
M scipy/optimize/linesearch.py View 1 chunk +550 lines, -34 lines 0 comments Download
M scipy/optimize/nonlin.py View 1 chunk +1423 lines, -391 lines 12 comments Download
M scipy/optimize/optimize.py View 4 chunks +9 lines, -324 lines 0 comments Download
A scipy/optimize/tests/test_linesearch.py View 1 chunk +234 lines, -0 lines 0 comments Download
M scipy/optimize/tests/test_minpack.py View 1 chunk +1 line, -1 line 0 comments Download
M scipy/optimize/tests/test_nonlin.py View 1 chunk +306 lines, -55 lines 0 comments Download
M scipy/optimize/tests/test_optimize.py View 8 chunks +71 lines, -0 lines 0 comments Download
M scipy/sparse/linalg/isolve/__init__.py View 1 chunk +1 line, -0 lines 0 comments Download
M scipy/sparse/linalg/isolve/iterative.py View 3 chunks +6 lines, -3 lines 0 comments Download
A scipy/sparse/linalg/isolve/lgmres.py View 1 chunk +240 lines, -0 lines 0 comments Download
M scipy/sparse/linalg/isolve/tests/test_iterative.py View 2 chunks +2 lines, -1 line 0 comments Download

Messages

Total messages: 2
pav
Added small notes to myself. http://codereview.appspot.com/62059/diff/1/8 File scipy/optimize/nonlin.py (right): http://codereview.appspot.com/62059/diff/1/8#newcode351 Line 351: Maybe the memoization ...
14 years, 11 months ago (2009-05-11 21:19:01 UTC) #1
pav
14 years, 11 months ago (2009-05-11 21:35:20 UTC) #2
And notes about missing tests.

http://codereview.appspot.com/62059/diff/1/8
File scipy/optimize/nonlin.py (right):

http://codereview.appspot.com/62059/diff/1/8#newcode219
Line 219: """
Maybe need at least one test without the line search?

Also, the termination criteria, `callback`and `iter` and `maxiter` have no
tests.

http://codereview.appspot.com/62059/diff/1/8#newcode765
Line 765: def svd_reduce(self, max_rank, to_retain=None):
These various reduction methods have no tests. Ditto for max_rank.

http://codereview.appspot.com/62059/diff/1/8#newcode1170
Line 1170: class LinearMixing(GenericBroyden):
No real tests for this...

http://codereview.appspot.com/62059/diff/1/8#newcode1210
Line 1210: class ExcitingMixing(GenericBroyden):
No real tests for this either

http://codereview.appspot.com/62059/diff/1/8#newcode1296
Line 1296: outer_k : int, optional
Maybe outer_k shouldn't be a kwarg for KrylovJacobian; use inner_* like the rest
of us...
Sign in to reply to this message.

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld f62528b