Class FicoXpressSolverConfiguration
The xpress solver configuration.
Inherited Members
Namespace: OPTANO.Modeling.Optimization.Solver.FicoXpress79
Assembly: Optimization.Solver.FicoXpress79.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 settingCONCURRENTTHREADSto 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 |