#ifndef SIMPLEX_SIMPLEXCONST_H_
#define SIMPLEX_SIMPLEXCONST_H_
#include "util/HighsInt.h"
enum class SimplexAlgorithm { kNone = 0, kPrimal, kDual };
enum SimplexStrategy {
kSimplexStrategyMin = 0,
kSimplexStrategyChoose = kSimplexStrategyMin, kSimplexStrategyDual, kSimplexStrategyDualPlain = kSimplexStrategyDual, kSimplexStrategyDualTasks, kSimplexStrategyDualMulti, kSimplexStrategyPrimal, kSimplexStrategyMax = kSimplexStrategyPrimal,
kSimplexStrategyNum
};
enum SimplexUnscaledSolutionStrategy {
kSimplexUnscaledSolutionStrategyMin = 0,
kSimplexUnscaledSolutionStrategyNone =
kSimplexUnscaledSolutionStrategyMin, kSimplexUnscaledSolutionStrategyRefine, kSimplexUnscaledSolutionStrategyDirect, kSimplexUnscaledSolutionStrategyMax = kSimplexUnscaledSolutionStrategyDirect,
kSimplexUnscaledSolutionStrategyNum
};
enum SimplexSolvePhase {
kSolvePhaseMin = -3,
kSolvePhaseError = kSolvePhaseMin, kSolvePhaseExit, kSolvePhaseUnknown, kSolvePhaseOptimal, kSolvePhase1, kSolvePhase2, kSolvePhasePrimalInfeasibleCleanup, kSolvePhaseOptimalCleanup, kSolvePhaseTabooBasis, kSolvePhaseMax = kSolvePhaseTabooBasis
};
enum SimplexCrashStrategy {
kSimplexCrashStrategyMin = 0,
kSimplexCrashStrategyOff = kSimplexCrashStrategyMin,
kSimplexCrashStrategyLtssfK,
kSimplexCrashStrategyLtssf = kSimplexCrashStrategyLtssfK,
kSimplexCrashStrategyBixby,
kSimplexCrashStrategyLtssfPri,
kSimplexCrashStrategyLtsfK,
kSimplexCrashStrategyLtsfPri,
kSimplexCrashStrategyLtsf,
kSimplexCrashStrategyBixbyNoNonzeroColCosts,
kSimplexCrashStrategyBasic,
kSimplexCrashStrategyTestSing,
kSimplexCrashStrategyMax = kSimplexCrashStrategyTestSing
};
enum SimplexEdgeWeightStrategy {
kSimplexEdgeWeightStrategyMin = -1,
kSimplexEdgeWeightStrategyChoose = kSimplexEdgeWeightStrategyMin,
kSimplexEdgeWeightStrategyDantzig,
kSimplexEdgeWeightStrategyDevex,
kSimplexEdgeWeightStrategySteepestEdge,
kSimplexEdgeWeightStrategyMax = kSimplexEdgeWeightStrategySteepestEdge
};
enum SimplexPriceStrategy {
kSimplexPriceStrategyMin = 0,
kSimplexPriceStrategyCol = kSimplexPriceStrategyMin,
kSimplexPriceStrategyRow,
kSimplexPriceStrategyRowSwitch,
kSimplexPriceStrategyRowSwitchColSwitch,
kSimplexPriceStrategyMax = kSimplexPriceStrategyRowSwitchColSwitch
};
enum SimplexPivotalRowRefinementStrategy {
kSimplexInfeasibilityProofRefinementMin = 0,
kSimplexInfeasibilityProofRefinementNo =
kSimplexInfeasibilityProofRefinementMin,
kSimplexInfeasibilityProofRefinementUnscaledLp, kSimplexInfeasibilityProofRefinementAlsoScaledLp, kSimplexInfeasibilityProofRefinementMax =
kSimplexInfeasibilityProofRefinementAlsoScaledLp
};
enum SimplexPrimalCorrectionStrategy {
kSimplexPrimalCorrectionStrategyNone = 0,
kSimplexPrimalCorrectionStrategyInRebuild,
kSimplexPrimalCorrectionStrategyAlways,
};
enum RebuildReason {
kRebuildReasonCleanup = -1,
kRebuildReasonNo = 0,
kRebuildReasonUpdateLimitReached, kRebuildReasonSyntheticClockSaysInvert, kRebuildReasonPossiblyOptimal, kRebuildReasonPossiblyPhase1Feasible, kRebuildReasonPossiblyPrimalUnbounded, kRebuildReasonPossiblyDualUnbounded, kRebuildReasonPossiblySingularBasis, kRebuildReasonPrimalInfeasibleInPrimalSimplex, kRebuildReasonChooseColumnFail, kRebuildReasonForceRefactor, kRebuildReasonExcessivePrimalValue, kRebuildReasonCount
};
enum SimplexNlaOperation {
kSimplexNlaNull = -1,
kSimplexNlaBtranFull = 0,
kSimplexNlaPriceFull,
kSimplexNlaBtranBasicFeasibilityChange,
kSimplexNlaPriceBasicFeasibilityChange,
kSimplexNlaBtranEp,
kSimplexNlaPriceAp,
kSimplexNlaFtran,
kSimplexNlaFtranBfrt,
kSimplexNlaFtranDse,
kSimplexNlaBtranPse,
kNumSimplexNlaOperation
};
enum class EdgeWeightMode { kDantzig = 0, kDevex, kSteepestEdge, kCount };
const HighsInt kDualTasksMinConcurrency = 3;
const HighsInt kDualMultiMinConcurrency = 1;
const int8_t kNonbasicFlagTrue = 1; const int8_t kNonbasicFlagFalse = 0; const int8_t kIllegalFlagValue =
-99;
const int8_t kNonbasicMoveUp = 1; const int8_t kNonbasicMoveDn = -1; const int8_t kNonbasicMoveZe = 0; const int8_t kIllegalMoveValue =
-99;
const double kAcceptDseWeightThreshold = 0.25;
const double kMinDualSteepestEdgeWeight = 1e-4;
const HighsInt kNoRowSought = -2;
const HighsInt kNoRowChosen = -1;
const HighsInt kNoRayIndex = -1;
const HighsInt kNoRaySign = 0;
const bool kDebugMipNodeDualFeasible = false;
enum class LpAction {
kScale = 0,
kNewCosts,
kNewBounds,
kNewBasis,
kNewCols,
kNewRows,
kDelCols,
kDelNonbasicCols,
kDelRows,
kDelRowsBasisOk,
kScaledCol,
kScaledRow,
kBacktracking
};
enum class BadBasisChangeReason {
kAll = 0,
kSingular,
kCycling,
kFailedInfeasibilityProof
};
const HighsInt kAllowedNumBadDevexWeight = 3;
const double kBadDevexWeightFactor = 3;
#endif