Class FicoXpressSolverConfiguration
The xpress solver configuration.
Inherited Members
Namespace: OPTANO.Modeling.Optimization.Solver.FicoXpress804
Assembly: Optimization.Solver.FicoXpress804.dll
Syntax
public class FicoXpressSolverConfiguration : SolverConfiguration
Constructors
FicoXpressSolverConfiguration()
Initializes a new instance of the FicoXpressSolverConfiguration class. All parameters will be set to the default values specified at http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/optimizeridx.html
Declaration
public FicoXpressSolverConfiguration()
Properties
BarThreads
Gets or sets the number of BARTHREADS
.
If set to a positive integer it determines the number of threads implemented to run the Newton-barrier algorithm.
If the value is set to the default value (-1), the Threads
control will determine the number of threads used.
Default:
-1 (Value will be determined by the Threads control).
Note: There is a practical upper limit of 50 on the number of parallel threads the optimizer will create.
Declaration
public int BarThreads { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
BranchDisjunctions
Gets or sets the strategy for branching on split disjunctions. Default: Automatic
Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/BRANCHDISJ.html
Declaration
public BranchDisjunctions BranchDisjunctions { get; set; }
Property Value
Type | Description |
---|---|
BranchDisjunctions |
ComputeIIS
Specifies whether the IIS
should be computed or not. You will find the IIS in the returned solution.
Declaration
public bool ComputeIIS { get; set; }
Property Value
Type | Description |
---|---|
System.Boolean |
ConcurrentThreads
Gets or sets the number of threads used by the concurrent solver
.
Default:
-1
Values:
-1: Determined automatically.
0:Number of threads to use.
Note:
The concurrent solve is activated either by passing multiple algorithm flags to XPRSlpoptimize (e.g. "pb" for running primal and the barrier) or by settingCONCURRENTTHREADS
to a positive number. The order in which threads are allocated to the algorithms is not affected by the order of the flags provided.
Declaration
public int ConcurrentThreads { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
ConflictCuts
Gets or sets the intensity with which the solver searches for and applies conflict cuts. Default: Automatic.
Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/CONFLICTCUTS.html
Declaration
public ConflictCuts ConflictCuts { get; set; }
Property Value
Type | Description |
---|---|
ConflictCuts |
CoverCuts
Gets or sets the number of cover cuts to perfrom at the root node. Auto: -1.
Branch and Bound: The number of rounds of lifted cover inequalities at the top node. A lifted cover inequality is an additional constraint that can be particularly effective at reducing the size of the feasible region without removing potential integral solutions. The process of generating these can be carried out a number of times, further reducing the feasible region, albeit incurring a time penalty. There is usually a good payoff from generating these at the top node, since these inequalities then apply to every subsequent node in the tree search.
Declaration
public int CoverCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
CutDepth
Gets or sets the depth until which cuts will be generated in the tree. Auto: -1
Branch and Bound: Sets the maximum depth in the tree search at which cuts will be generated. Generating cuts can take a lot of time, and is often less important at deeper levels of the tree since tighter bounds on the variables have already reduced the feasible region. A value of 0 signifies that no cuts will be generated.
Declaration
public int CutDepth { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
CutFactor
Gets or sets the cut factor.
Limit on the number of cuts and cut coefficients the optimizer is allowed to add to the matrix during global search.
The cuts and cut coefficients are limited by CutFactor * (#rows + #coefficients in the initial matrix)
.
Declaration
public double CutFactor { get; set; }
Property Value
Type | Description |
---|---|
System.Double |
CutFrequency
Gets or sets the cut ferquency in the tree search. If the depth of the node modulo CutFrequency is zero, then cuts will be generated. Auto: -1. Negative values are allowed.
Declaration
public int CutFrequency { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
CutSelectFlags
Gets or sets a flags
enum providing detailed control of the cuts created for the root node of a global solve. Use
Usage examples:
Enable only CliqueCuts and FlowpathCuts:
CutSelectFlags = FlowpathCuts | CliqueCuts | ... ;
Enable all except FlowpathCuts:
CutSelectFlags = All & ~FlowpathCuts;
Declaration
public CutSelects CutSelectFlags { get; set; }
Property Value
Type | Description |
---|---|
CutSelects |
CutStrategy
Gets or sets the cut strategy. Branch and Bound: This specifies the cut strategy. A more aggressive cut strategy, generating a greater number of cuts, will result in fewer nodes to be explored, but with an associated time cost in generating the cuts. The fewer cuts generated, the less time taken, but the greater subsequent number of nodes to be explored. Default: Automatic
Declaration
public CutStrategy CutStrategy { get; set; }
Property Value
Type | Description |
---|---|
CutStrategy |
DualGradientPrcing
Gets or sets the dual simplex pricing strategy. Defualt: Automatic.
Declaration
public DualGradientPrcing DualGradientPrcing { get; set; }
Property Value
Type | Description |
---|---|
DualGradientPrcing |
GomCuts
Gets or sets the number of Gomory cuts to perfrom at the root node. Auto: -1.
Branch and Bound: The number of rounds of Gomory cuts at the top node. These can always be generated if the current node does not yield an integral solution. However, Gomory cuts are not usually as effective as lifted cover inequalities in reducing the size of the feasible region.
Declaration
public int GomCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
HeuristicDiveSpeedUp
Gets or sets the heuristic dive strategy. Changes the emphasis of the diving heuristic from solution quality to diving speed. Default: AutomaticBiasSpeed.
Declaration
public HeuristicDiveSpeedUp HeuristicDiveSpeedUp { get; set; }
Property Value
Type | Description |
---|---|
HeuristicDiveSpeedUp |
HeuristicDiveStrategy
Gets or sets the heuristic dive strategy. Automatic selection: -1. Disable diving heuristic: 0. Preset Strategies: 0-10.
FICO Documentation does not explicitly state how the preset strategies work in detail. Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/HEURDIVESTRATEGY.html
Declaration
public int HeuristicDiveStrategy { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
HeuristicFrequency
Gets or sets the heuristic frequency. This specifies the frequency at which heuristics are used in the tree search. Heuristics will only be used at a node if the depth of the node is a multiple of HeuristicFrequency. Default: -1
Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/HEURFREQ.html
Declaration
public int HeuristicFrequency { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
HeuristicSearchEffort
Gets or sets a value to adjust the overall level of the local search heuristics. Default: 1.0
HeuristicSearchEffort is used as a multiplier on the default amount of work the local search heuristics should do. A higher value means the local search heuristics will be run more often and that they are allowed to search larger neighborhoods. Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/HEURSEARCHEFFORT.html
Declaration
public double HeuristicSearchEffort { get; set; }
Property Value
Type | Description |
---|---|
System.Double |
HeuristicSearchFrequency
Gets or sets the hueristic search frequency. Default: -1.
Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/HEURSEARCHFREQ.html
Declaration
public int HeuristicSearchFrequency { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
HeuristicSearchRootSelectionFlags
Gets or sets the heuristic search strategies on the root node. Default: LargeNeighborhood | SearchUserAddedSolutions (= 17).
The local search heuristics will benefit from having an existing incumbent solution, but it is not required. An initial solution can also be provided by the user through either XPRSloadmipsol or XPRSreadbinsol. Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/HEURSEARCHROOTSELECT.html
Declaration
public HeuristicSearchRootSelections HeuristicSearchRootSelectionFlags { get; set; }
Property Value
Type | Description |
---|---|
HeuristicSearchRootSelections |
HeuristicSearchTreeSelectionFlags
Gets or sets the heuristic search strategies to apply on nodes during the tree search. Default: SmallNeighborhoodContinuous (= 1).
The local search heuristics will benefit from having an existing incumbent solution, but it is not required. An initial solution can also be provided by the user through either XPRSloadmipsol or XPRSreadbinsol. Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/HEURSEARCHTREESELECT.html
Declaration
public HeuristicSearchTreeSelections HeuristicSearchTreeSelectionFlags { get; set; }
Property Value
Type | Description |
---|---|
HeuristicSearchTreeSelections |
HeuristicStrategy
Gets or sets the heuristic strategy. Default: Automatic
Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/HEURSTRATEGY.html
Declaration
public HeuristicStrategy HeuristicStrategy { get; set; }
Property Value
Type | Description |
---|---|
HeuristicStrategy |
HistoryCosts
Gets or sets the history cost. Controls how to update the pseudo cost for a global entity when a strong branch or a regular branch is applied. Default: Automatic
Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/HISTORYCOSTS.html
Declaration
public HistoryCosts HistoryCosts { get; set; }
Property Value
Type | Description |
---|---|
HistoryCosts |
LnPBest
Gets or sets the number of infeasible global entities to create lift-and-project cuts for during each round of GomCuts at the top node. Default: 50.
Declaration
public int LnPBest { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
LnPIterLimit
Gets or sets the number of iterations to perform in improving each lift-and-project cut. By setting the number to zero a Gomory cut will be created instead. Default: 10.
Declaration
public int LnPIterLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
LocalChoiceDiving
Gets or sets the selection strategy for diving heuristics. Default: NeverBacktrack.
Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/LOCALCHOICE.html
Declaration
public LocalChoice LocalChoiceDiving { get; set; }
Property Value
Type | Description |
---|---|
LocalChoice |
MipFractionReduce
Gets or sets the fractional integer variable reduction strategy. Default: Automatic.
Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/MIPFRACREDUCE.html
Declaration
public MipFractionReduce MipFractionReduce { get; set; }
Property Value
Type | Description |
---|---|
MipFractionReduce |
MipPresolveFlags
Gets or sets the MIP presolve flags. Default: All. Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/MIPPRESOLVE.html
Declaration
public MipPresolves MipPresolveFlags { get; set; }
Property Value
Type | Description |
---|---|
MipPresolves |
MipThreads
Gets or sets the number of MIPTHREADS
.
If set to a positive integer it determines the number of threads implemented to run the parallel MIP code. If MipThreads is set to the default value (-1), the Threads control will determine the number of threads used.
Default:
-1 (Value will be determined by the Threads control).
Declaration
public int MipThreads { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
Perturb
Gets or sets the factor by which the problem will be perturbed prior to optimization. A value of 0.0 results in no perturbation prior to optimization. Note that the problem may be automatically perturbed if degeneracy is detected and AUTOPERTURB is set to 1. Default: 0
Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/PERTURB.html
Declaration
public double Perturb { get; set; }
Property Value
Type | Description |
---|---|
System.Double |
PreProbing
Gets or sets the pre-probing level on binary variables during presolve. This is done by fixing a binary to each of its values in turn and analyzing the implications. Default: Automatic.
Declaration
public PreProbing PreProbing { get; set; }
Property Value
Type | Description |
---|---|
PreProbing |
PresolveCoefficientElimination
Gets or sets the coeffiecient elimination mode during presolve. Specifies whether the optimizer should attempt to recombine constraints in order to reduce the number of non zero coefficients when presolving a mixed integer problem. Default: Cautious.
Declaration
public PreCoefElim PresolveCoefficientElimination { get; set; }
Property Value
Type | Description |
---|---|
PreCoefElim |
PresolveMode
Gets or sets the presolve mode. This control determines whether presolving should be performed prior to starting the main algorithm. Presolve attempts to simplify the problem by detecting and removing redundant constraints, tightening variable bounds, etc. In some cases, infeasibility may even be determined at this stage, or the optimal solution found. Default: DefaultPresolve.
Declaration
public PresolveMode PresolveMode { get; set; }
Property Value
Type | Description |
---|---|
PresolveMode |
RootPresolve
Gets or sets a value to en- or disable a repeated presolve on the root node after the global search/presolve is finished.
Declaration
public RootPresolve RootPresolve { get; set; }
Property Value
Type | Description |
---|---|
RootPresolve |
ScalingFlags
Gets or sets the Scalings flags. This determines how the Optimizer will rescale a model internally before optimization. Default = RowScaling | ColumnScaling | ToggleGeometricMeanOrMaximumElement | ObjectiveFunctionScaling (= 163), Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/SCALING.html
Declaration
public Scalings ScalingFlags { get; set; }
Property Value
Type | Description |
---|---|
Scalings |
StrongBranchingBEST
Gets or sets the number of infeasible global entities to initialize pseudo costs for on each node. Default: -1 (Auto) Disable Strong Branching: 0
Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/SBBEST.html
Declaration
public int StrongBranchingBEST { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
StrongBranchingEffort
Gets or sets the overall amount of effort when using strong branching to select an infeasible global entity to branch on. Default: 1.0
StrongBranchingEffort is used as a multiplier on other strong branching related controls, and affects the values used for SBBEST, SBSELECT and SBITERLIMIT when those are set to automatic. Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/SBEFFORT.html
Declaration
public double StrongBranchingEffort { get; set; }
Property Value
Type | Description |
---|---|
System.Double |
StrongBranchingEstimate
Gets or sets the strong branching estimation mode. Default: -1
Select how to calculate pseudo costs from the local node when selecting an infeasible global entity to branch on. These pseudo costs are used in combination with local strong branching and history costs to select the branch candidate. Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/SBESTIMATE.html
Declaration
public int StrongBranchingEstimate { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
StrongBranchingIterationLimit
Gets or sets the strong branching iteration limit. Default: -1.
This control can be useful to increase or decrease the amount of effort (and thus time) spent performing strong branching at each node. Setting SBITERLIMIT=0 will disable dual strong branch iterations. Instead, the entity at the head of the candidate list will be selected for branching. Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/SBITERLIMIT.html
Declaration
public int StrongBranchingIterationLimit { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
SymmetryDetection
Gets or sets the effort for symmetry detection. Default: Conservative.
Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/SYMMETRY.html
Declaration
public SymmetryDetection SymmetryDetection { get; set; }
Property Value
Type | Description |
---|---|
SymmetryDetection |
SymmetrySelection
Gets or sets the symmetry selection mode. Default: -1.
This parameter appears to be wrongly documented by FICO. The FICO-Tuner used values such as 0, 1, 2, 3, whereas the API Documentation only lists 2 values (0 and 1). However, according to the API-Doc the default value should be -1, which presumely means 'Automatic', but is not described further in the documentation.CAUTION: USE WITH CARE!
Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/SYMSELECT.html
We will not check/validate any input values. Only change this parameter if you know what you're doing.
Declaration
public int SymmetrySelection { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
Threads
Gets or sets the default number of THREADS
used during optimization.
Default:
-1
Values:
-1: Determined automatically based on hardware configuration
0:Number of threads to use.
Note:
The value may be changed for specific parts of the optimization by the ConcurrentThreads, MipThreads and BarThreads controls.
Declaration
public int Threads { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
TreeCoverCuts
Gets or sets the number of rounds of lifted cover inequalities generated at nodes other than the top node in the tree. Compare with the description for CoverCuts. Auto: -1.
Declaration
public int TreeCoverCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
TreeCutSelect
Declaration
public int TreeCutSelect { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
TreeGomoryCuts
Gets or sets The number of rounds of Gomory cuts generated at nodes other than the first node in the tree. Compare with the description for GomCuts. Auto: -1.
Declaration
public int TreeGomoryCuts { get; set; }
Property Value
Type | Description |
---|---|
System.Int32 |
VariableSelection
Gets or sets the variable selection strategy. This determines the formula used to calculate the estimate of each integer variable, and thus which integer variable is selected to be branched on at a given node. The variable selected to be branched on is the one with the maximum estimate. Default: Automatic
Refers to: http://www.maths.ed.ac.uk/hall/Xpress/FICO_Docs/optimizer/HTML/VARSELECTION.html
Declaration
public VarSelection VariableSelection { get; set; }
Property Value
Type | Description |
---|---|
VarSelection |