You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
1.3 KiB
48 lines
1.3 KiB
'''
|
|
This is a module defining some constants.
|
|
|
|
Translated from Zaikun Zhang's modern-Fortran reference implementation in PRIMA.
|
|
|
|
Dedicated to late Professor M. J. D. Powell FRS (1936--2015).
|
|
|
|
Python translation by Nickolai Belakovski.
|
|
'''
|
|
|
|
import numpy as np
|
|
import os
|
|
|
|
DEBUGGING = bool(os.getenv('PRIMA_DEBUGGING'))
|
|
|
|
REALMIN = np.finfo(float).tiny
|
|
REALMAX = np.finfo(float).max
|
|
FUNCMAX = 10.0**30
|
|
CONSTRMAX = FUNCMAX
|
|
EPS = np.finfo(float).eps
|
|
|
|
# Any bound with an absolute value at least BOUNDMAX is considered as no bound.
|
|
BOUNDMAX = REALMAX/4
|
|
|
|
# Some default values
|
|
RHOBEG_DEFAULT = 1
|
|
RHOEND_DEFAULT = 1e-6
|
|
FTARGET_DEFAULT = -REALMAX
|
|
CTOL_DEFAULT = np.sqrt(EPS)
|
|
CWEIGHT_DEFAULT = 1e8
|
|
ETA1_DEFAULT = 0.1
|
|
ETA2_DEFAULT = 0.7
|
|
GAMMA1_DEFAULT = 0.5
|
|
GAMMA2_DEFAULT = 2
|
|
IPRINT_DEFAULT = 0
|
|
MAXFUN_DIM_DEFAULT = 500
|
|
|
|
PRIMA_MAX_HIST_MEM_MB = 300 # 1MB > 10^5*REAL64. 100 can be too small.
|
|
|
|
# Maximal amount of memory (Byte) allowed for XHIST, FHIST, CONHIST, CHIST, and the filters.
|
|
MHM = PRIMA_MAX_HIST_MEM_MB * 10**6
|
|
# Make sure that MAXHISTMEM does not exceed HUGE(0) to avoid overflow and memory errors.
|
|
MAXHISTMEM = min(MHM, np.iinfo(np.int32).max)
|
|
|
|
# Maximal length of the filter used in constrained solvers.
|
|
MIN_MAXFILT = 200 # Should be positive; < 200 is not recommended.
|
|
MAXFILT_DEFAULT = 10 * MIN_MAXFILT
|