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

'''
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