archimedes.optimize.LMStatus¶

class archimedes.optimize.LMStatus(*values)¶

Status codes for Levenberg-Marquardt optimization results.

These codes follow the MINPACK convention and provide detailed information about the termination condition of the optimization algorithm. Understanding these codes is essential for interpreting optimization results and diagnosing potential issues.

Variables:
  • FTOL_REACHED (int = 1) – Both actual and predicted relative reductions in the objective function are at most ftol. This indicates convergence based on minimal improvement in the objective function.

  • XTOL_REACHED (int = 2) – Relative error between two consecutive parameter iterates is at most xtol. This indicates convergence based on minimal change in the parameters.

  • BOTH_TOL_REACHED (int = 3) – Both ftol and xtol conditions are satisfied simultaneously. This represents the strongest convergence criterion.

  • GTOL_REACHED (int = 4) – The cosine of the angle between the gradient and any column of the Jacobian is at most gtol in absolute value. For constrained problems, this applies to the projected gradient. This indicates convergence to a critical point.

  • MAX_FEVAL (int = 5) – Maximum number of function evaluations (max_nfev) has been reached without achieving convergence. This typically indicates that either more iterations are needed, the tolerances are too tight, or the problem is ill-conditioned.

Notes

Success vs. Failure:

Status codes 1-4 indicate successful convergence, while code 5 indicates failure to converge within the iteration limit. Use the success property to check for overall success.

Interpretation Guide:
  • FTOL_REACHED: Good for most applications, indicates objective function has stopped improving significantly

  • XTOL_REACHED: May indicate convergence to a local minimum or numerical precision limits

  • BOTH_TOL_REACHED: Strongest convergence guarantee

  • GTOL_REACHED: Gradient-based convergence, good indicator of optimality conditions

  • MAX_FEVAL: Check if more iterations are needed or if the problem requires reformulation

Methods

conjugate

Returns self, the complex conjugate of any int.

bit_length()

Number of bits necessary to represent self in binary.

bit_count()

Number of ones in the binary representation of the absolute value of self.

to_bytes([length, byteorder, signed])

Return an array of bytes representing an integer.

from_bytes(bytes[, byteorder, signed])

Return the integer represented by the given array of bytes.

as_integer_ratio()

Return a pair of integers, whose ratio is equal to the original int.

is_integer()

Returns True.

Attributes

real

the real part of a complex number

imag

the imaginary part of a complex number

numerator

the numerator of a rational number in lowest terms

denominator

the denominator of a rational number in lowest terms

message

Get descriptive message for this status code.

success

Check if this status indicates successful convergence.

FTOL_REACHED

XTOL_REACHED

BOTH_TOL_REACHED

GTOL_REACHED

MAX_FEVAL

__init__(*args, **kwds)¶
as_integer_ratio()¶

Return a pair of integers, whose ratio is equal to the original int.

The ratio is in lowest terms and has a positive denominator.

>>> (10).as_integer_ratio()
(10, 1)
>>> (-10).as_integer_ratio()
(-10, 1)
>>> (0).as_integer_ratio()
(0, 1)
bit_count()¶

Number of ones in the binary representation of the absolute value of self.

Also known as the population count.

>>> bin(13)
'0b1101'
>>> (13).bit_count()
3
bit_length()¶

Number of bits necessary to represent self in binary.

>>> bin(37)
'0b100101'
>>> (37).bit_length()
6
conjugate()¶

Returns self, the complex conjugate of any int.

classmethod from_bytes(bytes, byteorder='big', *, signed=False)¶

Return the integer represented by the given array of bytes.

bytes

Holds the array of bytes to convert. The argument must either support the buffer protocol or be an iterable object producing bytes. Bytes and bytearray are examples of built-in objects that support the buffer protocol.

byteorder

The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value. Default is to use ‘big’.

signed

Indicates whether two’s complement is used to represent the integer.

is_integer()¶

Returns True. Exists for duck type compatibility with float.is_integer.

to_bytes(length=1, byteorder='big', *, signed=False)¶

Return an array of bytes representing an integer.

length

Length of bytes object to use. An OverflowError is raised if the integer is not representable with the given number of bytes. Default is length 1.

byteorder

The byte order used to represent the integer. If byteorder is ‘big’, the most significant byte is at the beginning of the byte array. If byteorder is ‘little’, the most significant byte is at the end of the byte array. To request the native byte order of the host system, use `sys.byteorder’ as the byte order value. Default is to use ‘big’.

signed

Determines whether two’s complement is used to represent the integer. If signed is False and a negative integer is given, an OverflowError is raised.

denominator¶

the denominator of a rational number in lowest terms

imag¶

the imaginary part of a complex number

property message: str¶

Get descriptive message for this status code.

numerator¶

the numerator of a rational number in lowest terms

real¶

the real part of a complex number

property success: bool¶

Check if this status indicates successful convergence.