Levenberg-Marqaurdt for non-linear optimisation.
Project description
This package provides two trust region algorithms (TRA) for finding the minimum of some function, Levenberg-Marquardt and Powell's dogleg.
Levenberg-Marquardt
Example
An example is included within the package, simply call:
import TRA as TRA
def forward_model(x):
y = np.array(x[0] ** 2 + x[1] ** 2)
y = y.reshape((1, 1))
return y
def compute_gradient(x):
g = np.array(([2 * x[0]], [2 * x[1]]))
g = g.reshape((2, 1))
return g
def compute_hessian(x):
h = np.array(([2, 0], [0, 2]))
h = h.reshape((2, 2))
return h
initial_prediction = np.array([5, 2.7])
LM_algorithm = TRA.Levenberg_Marquart(initial_prediction, compute_hessian, compute_gradient,
forward_model, d_param=1e-50,
lower_constraint=-np.inf,
upper_constraint=np.inf,
num_iterations=5)
minimum = LM_algorithm.optimisation_main()
This is a simple example, but shows how to use the Levenberg_Marquart class.
Function calls and arguments
There are a number of default values within the Levenberg_Marqaurdt class, including constraints on the solution, the number of iterations amd the damping parameter corresponding to the trust region. Three functions are required when instantiating a class object, one for computing the gradient, one for the Hessian and one for the mapping of the input to ouput (forward model).
:
def forward_model(x)
:
return f(x)
def compute_gradient(x):
:
return grad
def compute_hessian(x):
:
return hessian
initial_prediction = x0
LM_object = TRA.Levenberg_Marquart(initial_prediction, compute_hessian, compute_gradient,
forward_model, d_param=1e-50,
lower_constraint=-np.inf,
upper_constraint=np.inf,
num_iterations=5)
Theory
For the theory behind the code see [1] and [2].
References
[1] Jorge Nocedal and Stephen J. Wright (2006). Numerical Optimization.
[2] Andrew R. Conn, Nicholas I. M. Gould, and P.L. Toint (2000). Trust Region Methods.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file TRA-2.12.tar.gz.
File metadata
- Download URL: TRA-2.12.tar.gz
- Upload date:
- Size: 4.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1a04533f854fd4901288086e0cae8f9a01d561bbb4a6214e65725a18e974b29
|
|
| MD5 |
8547a9683e856a100f5725d37a0e9066
|
|
| BLAKE2b-256 |
398b5f4f190f7563ebe22b9cdaa64392ebee423fcfeb443408eadfcf62dff1f5
|
File details
Details for the file TRA-2.12-py3-none-any.whl.
File metadata
- Download URL: TRA-2.12-py3-none-any.whl
- Upload date:
- Size: 9.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.7.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c44f292e2b6c75bfed72ac460efafd83a88993038967b584ae02b181d0cf69d7
|
|
| MD5 |
a56cfa2b7271d2e4f43ac5a09652b785
|
|
| BLAKE2b-256 |
85710003e734a27cb5aafb8b09d92fb40deb2b05f3d03e41148735315eedd582
|