1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* */
/* This file is part of the HiGHS linear optimization suite */
/* */
/* Written and engineered 2008-2024 by Julian Hall, Ivet Galabova, */
/* Leona Gottwald and Michael Feldmeier */
/* */
/* Available as open-source under the MIT License */
/* */
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/**@file util/HFactorConst.h
* @brief Constants for basis matrix factorization, update and solves for HiGHS
*/
;
/**
* Limits and default value of pivoting threshold
*/
const double kMinPivotThreshold = 8e-4;
const double kDefaultPivotThreshold = 0.1;
const double kPivotThresholdChangeFactor = 5.0;
const double kMaxPivotThreshold = 0.5;
/**
* Limits and default value of minimum absolute pivot
*/
const double kMinPivotTolerance = 0;
const double kDefaultPivotTolerance = 1e-10;
const double kMaxPivotTolerance = 1.0;
/**
* Necessary thresholds for expected density to trigger
* hyper-sparse TRANs,
*/
const double kHyperFtranL = 0.15;
const double kHyperFtranU = 0.10;
const double kHyperBtranL = 0.10;
const double kHyperBtranU = 0.15;
/**
* Necessary threshold for RHS density to trigger hyper-sparse TRANs,
*/
const double kHyperCancel = 0.05;
/**
* Threshold for result density for it to be considered as
* hyper-sparse - only for reporting
*/
const double kHyperResult = 0.10;
/**
* Parameters for reinversion on synthetic clock
*/
const double kMultiBuildSyntheticTickMu = 1.0;
const double kNumericalTroubleTolerance = 1e-7;
const double kMultiNumericalTroubleTolerance = 1e-7;
const HighsInt kSyntheticTickReinversionMinUpdateCount = 50;
const HighsInt kMultiSyntheticTickReinversionMinUpdateCount =
kSyntheticTickReinversionMinUpdateCount;
// Constants defining the space available for dimension-related
// identifiers like starts, and multipliers (of
// basis_matrix_limit_size, the basis matrix limit size) for
// fill-related identifiers like indices/values in Markowitz, and
// update.
const HighsInt kMCExtraEntriesMultiplier = 2;
const HighsInt kMRExtraEntriesMultiplier = 2;
const HighsInt kLFactorExtraEntriesMultiplier = 3;
const HighsInt kUFactorExtraVectors = 1000;
const HighsInt kUFactorExtraEntriesMultiplier = 3;
const HighsInt kPFFPivotEntries = 1000;
const HighsInt kPFVectors = 2000;
const HighsInt kPFEntriesMultiplier = 4;
const HighsInt kNewLRRowsExtraNz = 100;
;
/* HFACTORCONST_H_ */