| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132 |
- import sys
- from enum import Enum
- import numpy as np
- # Exit status.
- class ExitStatus(Enum):
- """
- Exit statuses.
- """
- RADIUS_SUCCESS = 0
- TARGET_SUCCESS = 1
- FIXED_SUCCESS = 2
- CALLBACK_SUCCESS = 3
- FEASIBLE_SUCCESS = 4
- MAX_EVAL_WARNING = 5
- MAX_ITER_WARNING = 6
- INFEASIBLE_ERROR = -1
- LINALG_ERROR = -2
- class Options(str, Enum):
- """
- Options.
- """
- DEBUG = "debug"
- FEASIBILITY_TOL = "feasibility_tol"
- FILTER_SIZE = "filter_size"
- HISTORY_SIZE = "history_size"
- MAX_EVAL = "maxfev"
- MAX_ITER = "maxiter"
- NPT = "nb_points"
- RHOBEG = "radius_init"
- RHOEND = "radius_final"
- SCALE = "scale"
- STORE_HISTORY = "store_history"
- TARGET = "target"
- VERBOSE = "disp"
- class Constants(str, Enum):
- """
- Constants.
- """
- DECREASE_RADIUS_FACTOR = "decrease_radius_factor"
- INCREASE_RADIUS_FACTOR = "increase_radius_factor"
- INCREASE_RADIUS_THRESHOLD = "increase_radius_threshold"
- DECREASE_RADIUS_THRESHOLD = "decrease_radius_threshold"
- DECREASE_RESOLUTION_FACTOR = "decrease_resolution_factor"
- LARGE_RESOLUTION_THRESHOLD = "large_resolution_threshold"
- MODERATE_RESOLUTION_THRESHOLD = "moderate_resolution_threshold"
- LOW_RATIO = "low_ratio"
- HIGH_RATIO = "high_ratio"
- VERY_LOW_RATIO = "very_low_ratio"
- PENALTY_INCREASE_THRESHOLD = "penalty_increase_threshold"
- PENALTY_INCREASE_FACTOR = "penalty_increase_factor"
- SHORT_STEP_THRESHOLD = "short_step_threshold"
- LOW_RADIUS_FACTOR = "low_radius_factor"
- BYRD_OMOJOKUN_FACTOR = "byrd_omojokun_factor"
- THRESHOLD_RATIO_CONSTRAINTS = "threshold_ratio_constraints"
- LARGE_SHIFT_FACTOR = "large_shift_factor"
- LARGE_GRADIENT_FACTOR = "large_gradient_factor"
- RESOLUTION_FACTOR = "resolution_factor"
- IMPROVE_TCG = "improve_tcg"
- # Default options.
- DEFAULT_OPTIONS = {
- Options.DEBUG.value: False,
- Options.FEASIBILITY_TOL.value: np.sqrt(np.finfo(float).eps),
- Options.FILTER_SIZE.value: sys.maxsize,
- Options.HISTORY_SIZE.value: sys.maxsize,
- Options.MAX_EVAL.value: lambda n: 500 * n,
- Options.MAX_ITER.value: lambda n: 1000 * n,
- Options.NPT.value: lambda n: 2 * n + 1,
- Options.RHOBEG.value: 1.0,
- Options.RHOEND.value: 1e-6,
- Options.SCALE.value: False,
- Options.STORE_HISTORY.value: False,
- Options.TARGET.value: -np.inf,
- Options.VERBOSE.value: False,
- }
- # Default constants.
- DEFAULT_CONSTANTS = {
- Constants.DECREASE_RADIUS_FACTOR.value: 0.5,
- Constants.INCREASE_RADIUS_FACTOR.value: np.sqrt(2.0),
- Constants.INCREASE_RADIUS_THRESHOLD.value: 2.0,
- Constants.DECREASE_RADIUS_THRESHOLD.value: 1.4,
- Constants.DECREASE_RESOLUTION_FACTOR.value: 0.1,
- Constants.LARGE_RESOLUTION_THRESHOLD.value: 250.0,
- Constants.MODERATE_RESOLUTION_THRESHOLD.value: 16.0,
- Constants.LOW_RATIO.value: 0.1,
- Constants.HIGH_RATIO.value: 0.7,
- Constants.VERY_LOW_RATIO.value: 0.01,
- Constants.PENALTY_INCREASE_THRESHOLD.value: 1.5,
- Constants.PENALTY_INCREASE_FACTOR.value: 2.0,
- Constants.SHORT_STEP_THRESHOLD.value: 0.5,
- Constants.LOW_RADIUS_FACTOR.value: 0.1,
- Constants.BYRD_OMOJOKUN_FACTOR.value: 0.8,
- Constants.THRESHOLD_RATIO_CONSTRAINTS.value: 2.0,
- Constants.LARGE_SHIFT_FACTOR.value: 10.0,
- Constants.LARGE_GRADIENT_FACTOR.value: 10.0,
- Constants.RESOLUTION_FACTOR.value: 2.0,
- Constants.IMPROVE_TCG.value: True,
- }
- # Printing options.
- PRINT_OPTIONS = {
- "threshold": 6,
- "edgeitems": 2,
- "linewidth": sys.maxsize,
- "formatter": {
- "float_kind": lambda x: np.format_float_scientific(
- x,
- precision=3,
- unique=False,
- pad_left=2,
- )
- },
- }
- # Constants.
- BARRIER = 2.0 ** min(
- 100,
- np.finfo(float).maxexp // 2,
- -np.finfo(float).minexp // 2,
- )
|