Scippy

UG

Ubiquity Generator framework

bbParaParamSet.h
Go to the documentation of this file.
1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /* */
3 /* This file is part of the program and software framework */
4 /* UG --- Ubquity Generator Framework */
5 /* */
6 /* Copyright Written by Yuji Shinano <shinano@zib.de>, */
7 /* Copyright (C) 2021 by Zuse Institute Berlin, */
8 /* licensed under LGPL version 3 or later. */
9 /* Commercial licenses are available through <licenses@zib.de> */
10 /* */
11 /* This code is free software; you can redistribute it and/or */
12 /* modify it under the terms of the GNU Lesser General Public License */
13 /* as published by the Free Software Foundation; either version 3 */
14 /* of the License, or (at your option) any later version. */
15 /* */
16 /* This program is distributed in the hope that it will be useful, */
17 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
18 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
19 /* GNU Lesser General Public License for more details. */
20 /* */
21 /* You should have received a copy of the GNU Lesser General Public License */
22 /* along with this program. If not, see <http://www.gnu.org/licenses/>. */
23 /* */
24 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
25 
26 /**@file paraParamSet.h
27  * @brief Parameter set for UG framework.
28  * @author Yuji Shinano
29  *
30  *
31  *
32  */
33 
34 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
35 
36 
37 #ifndef __BB_PARA_PARAM_SET_H__
38 #define __BB_PARA_PARAM_SET_H__
39 #include <algorithm>
40 #include <string>
41 #include <iostream>
42 #include <map>
43 #include <cmath>
44 #include "ug/paraComm.h"
45 #if defined(_COMM_PTH) || defined(_COMM_CPP11)
46 #include "ug/paraParamSetTh.h"
47 #endif
48 #if defined(_COMM_MPI_WORLD)
49 #include "ug/paraParamSetMpi.h"
50 #endif
51 
52 #define OUTPUT_PARAM_VALUE_ERROR( msg1, msg2, msg3, msg4 ) \
53  std::cout << "[PARAM VALUE ERROR] Param type = " << msg1 << ", Param name = " << msg2 \
54  << ", Param value = " << msg3 << ": Param comment is as follows: " << std::endl \
55  << msg4 << std::endl; \
56  return (-1)
57 
58 namespace UG
59 {
60 
61 ///
62 /// Bool parameters
63 ///
64 static const int BbParaParamsFirst = ParaParamsLast + 1;
66 //-------------------------------------------------------------------------
67 static const int LogSubtreeInfo = BbParaParamsBoolFirst + 0;
68 static const int OutputTabularSolvingStatus = BbParaParamsBoolFirst + 1;
69 static const int DeterministicTabularSolvingStatus = BbParaParamsBoolFirst + 2;
70 static const int UseRootNodeCuts = BbParaParamsBoolFirst + 3;
71 static const int TransferLocalCuts = BbParaParamsBoolFirst + 4;
72 static const int TransferConflictCuts = BbParaParamsBoolFirst + 5;
73 static const int TransferConflicts = BbParaParamsBoolFirst + 6;
74 static const int TransferBranchStats = BbParaParamsBoolFirst + 7;
75 static const int TransferVarValueStats = BbParaParamsBoolFirst + 8;
76 static const int TransferBendersCuts = BbParaParamsBoolFirst + 9;
77 static const int CheckEffectOfRootNodePreprocesses = BbParaParamsBoolFirst + 10;
78 static const int CollectOnce = BbParaParamsBoolFirst + 11;
79 static const int ProvingRun = BbParaParamsBoolFirst + 12;
80 static const int SetAllDefaultsAfterRacing = BbParaParamsBoolFirst + 13;
81 static const int DistributeBestPrimalSolution = BbParaParamsBoolFirst + 14;
82 static const int LightWeightRootNodeProcess = BbParaParamsBoolFirst + 15;
83 static const int RacingStatBranching = BbParaParamsBoolFirst + 16;
84 static const int IterativeBreakDown = BbParaParamsBoolFirst + 17;
85 static const int NoPreprocessingInLC = BbParaParamsBoolFirst + 18;
86 static const int NoUpperBoundTransferInRacing = BbParaParamsBoolFirst + 19;
87 static const int MergeNodesAtRestart = BbParaParamsBoolFirst + 20;
88 static const int NChangeIntoCollectingModeNSolvers = BbParaParamsBoolFirst + 21;
89 static const int EventWeightedDeterministic = BbParaParamsBoolFirst + 22;
90 static const int NoSolverPresolvingAtRoot = BbParaParamsBoolFirst + 23;
91 static const int NoSolverPresolvingAtRootDefaultSet = BbParaParamsBoolFirst + 24;
92 static const int NoAggressiveSeparatorInRacing = BbParaParamsBoolFirst + 25;
93 static const int AllBoundChangesTransfer = BbParaParamsBoolFirst + 26;
94 static const int NoAllBoundChangesTransferInRacing = BbParaParamsBoolFirst + 27;
95 static const int BreakFirstSubtree = BbParaParamsBoolFirst + 28;
96 static const int InitialNodesGeneration = BbParaParamsBoolFirst + 29;
97 static const int RestartRacing = BbParaParamsBoolFirst + 30;
98 static const int CheckFeasibilityInLC = BbParaParamsBoolFirst + 31;
99 static const int ControlCollectingModeOnSolverSide = BbParaParamsBoolFirst + 32;
100 static const int CleanUp = BbParaParamsBoolFirst + 33;
101 static const int DualBoundGainTest = BbParaParamsBoolFirst + 34;
102 static const int GenerateReducedCheckpointFiles = BbParaParamsBoolFirst + 35;
103 static const int OutputPresolvedInstance = BbParaParamsBoolFirst + 36;
104 static const int CommunicateTighterBoundsInRacing = BbParaParamsBoolFirst + 37;
105 static const int KeepRacingUntilToFindFirstSolution = BbParaParamsBoolFirst + 38;
106 static const int AllowTreeSearchRestart = BbParaParamsBoolFirst + 39;
107 static const int OmitInfeasibleTerminationInRacing = BbParaParamsBoolFirst + 40;
108 static const int WaitTerminationOfThreads = BbParaParamsBoolFirst + 41;
109 static const int EnhancedFinalCheckpoint = BbParaParamsBoolFirst + 42;
110 //-------------------------------------------------------------------------
111 static const int BbParaParamsBoolLast = BbParaParamsBoolFirst + 42;
112 static const int BbParaParamsBoolN = BbParaParamsBoolLast - BbParaParamsBoolFirst + 1;
113 ///
114 /// Int parameters
115 ///
116 static const int BbParaParamsIntFirst = BbParaParamsBoolLast + 1;
117 //-------------------------------------------------------------------------
118 static const int RampUpPhaseProcess = BbParaParamsIntFirst + 0;
119 static const int NChangeIntoCollectingMode = BbParaParamsIntFirst + 1;
120 static const int NodeTransferMode = BbParaParamsIntFirst + 2;
121 static const int MinNumberOfCollectingModeSolvers = BbParaParamsIntFirst + 3;
122 static const int MaxNumberOfCollectingModeSolvers = BbParaParamsIntFirst + 4;
123 static const int SolverOrderInCollectingMode = BbParaParamsIntFirst + 5;
124 static const int RacingRampUpTerminationCriteria = BbParaParamsIntFirst + 6;
125 static const int StopRacingNumberOfNodesLeft = BbParaParamsIntFirst + 7;
126 static const int NumberOfNodesKeepingInRootSolver = BbParaParamsIntFirst + 8;
127 static const int NumberOfInitialNodes = BbParaParamsIntFirst + 9;
128 static const int MaxNRacingParamSetSeed = BbParaParamsIntFirst + 10;
129 static const int TryNVariablegOrderInRacing = BbParaParamsIntFirst + 11;
130 static const int TryNBranchingOrderInRacing = BbParaParamsIntFirst + 12;
131 static const int NEvaluationSolversToStopRacing = BbParaParamsIntFirst + 13;
132 static const int NMaxCanditatesForCollecting = BbParaParamsIntFirst + 14;
133 static const int NSolverNodesStartBreaking = BbParaParamsIntFirst + 15;
134 static const int NStopBreaking = BbParaParamsIntFirst + 16;
135 static const int NTransferLimitForBreaking = BbParaParamsIntFirst + 17;
136 static const int NStopSolvingMode = BbParaParamsIntFirst + 18;
137 static const int NCollectOnce = BbParaParamsIntFirst + 19;
138 static const int AggressivePresolveDepth = BbParaParamsIntFirst + 20;
139 static const int AggressivePresolveStopDepth = BbParaParamsIntFirst + 21;
140 static const int BigDualGapSubtreeHandling = BbParaParamsIntFirst + 22;
141 static const int InstanceTransferMethod = BbParaParamsIntFirst + 23;
142 static const int KeepNodesDepth = BbParaParamsIntFirst + 24;
143 static const int NoAlternateSolving = BbParaParamsIntFirst + 25;
144 static const int NNodesTransferLogging = BbParaParamsIntFirst + 26;
145 static const int NIdleSolversToTerminate = BbParaParamsIntFirst + 27;
146 static const int FinalCheckpointNSolvers = BbParaParamsIntFirst + 28;
147 static const int NMergingNodesAtRestart = BbParaParamsIntFirst + 29;
148 static const int NBoundChangesOfMergeNode = BbParaParamsIntFirst + 30;
149 static const int NNodesToKeepInCheckpointFile = BbParaParamsIntFirst + 31;
150 static const int NMaxRacingBaseParameters = BbParaParamsIntFirst + 32;
151 static const int NBoundChangesForTransferNode = BbParaParamsIntFirst + 33;
152 static const int OmitTerminationNSolutionsInRacing = BbParaParamsIntFirst + 34;
153 static const int NEagerToSolveAtRestart = BbParaParamsIntFirst + 35;
154 static const int SelfSplitTreeDepth = BbParaParamsIntFirst + 36;
155 static const int LightWeightNodePenartyInCollecting = BbParaParamsIntFirst + 37;
156 static const int EnhancedCheckpointInterval = BbParaParamsIntFirst + 38;
157 //-------------------------------------------------------------------------
158 static const int BbParaParamsIntLast = BbParaParamsIntFirst + 38;
159 static const int BbParaParamsIntN = BbParaParamsIntLast - BbParaParamsIntFirst + 1;
160 ///
161 /// Longint parameters
162 ///
163 static const int BbParaParamsLongintFirst = BbParaParamsIntLast + 1;
164 //-------------------------------------------------------------------------
165 //-------------------------------------------------------------------------
166 static const int BbParaParamsLongintLast = BbParaParamsLongintFirst - 1; // No params -1
167 static const int BbParaParamsLongintN = BbParaParamsLongintLast - BbParaParamsLongintFirst + 1;
168 ///
169 /// Real parameters
170 ///
171 static const int BbParaParamsRealFirst = BbParaParamsLongintLast + 1;
172 //-------------------------------------------------------------------------
173 static const int MultiplierForCollectingMode = BbParaParamsRealFirst + 0;
174 static const int MultiplierToDetermineThresholdValue = BbParaParamsRealFirst + 1;
175 static const int BgapCollectingMode = BbParaParamsRealFirst + 2;
176 static const int MultiplierForBgapCollectingMode = BbParaParamsRealFirst + 3;
177 static const int ABgapForSwitchingToBestSolver = BbParaParamsRealFirst + 4;
178 static const int BgapStopSolvingMode = BbParaParamsRealFirst + 5;
179 static const int StopRacingTimeLimit = BbParaParamsRealFirst + 6;
180 static const int StopRacingTimeLimitMultiplier = BbParaParamsRealFirst + 7;
181 static const int StopRacingNumberOfNodesLeftMultiplier = BbParaParamsRealFirst + 8;
182 static const int TimeToIncreaseCMS = BbParaParamsRealFirst + 9;
183 static const int TabularSolvingStatusInterval = BbParaParamsRealFirst + 10;
184 static const int RatioToApplyLightWeightRootProcess = BbParaParamsRealFirst + 11;
185 static const int MultiplierForBreakingTargetBound = BbParaParamsRealFirst + 12;
186 static const int FixedVariablesRatioInMerging = BbParaParamsRealFirst + 13;
187 static const int AllowableRegressionRatioInMerging = BbParaParamsRealFirst + 14;
188 static const int CountingSolverRatioInRacing = BbParaParamsRealFirst + 15;
189 static const int ProhibitCollectOnceMultiplier = BbParaParamsRealFirst + 16;
190 static const int TNodesTransferLogging = BbParaParamsRealFirst + 17;
191 static const int RandomNodeSelectionRatio = BbParaParamsRealFirst + 18;
192 static const int DualBoundGainBranchRatio = BbParaParamsRealFirst + 19;
193 static const int CollectingModeInterval = BbParaParamsRealFirst + 20;
194 static const int RestartInRampDownThresholdTime = BbParaParamsRealFirst + 21;
195 static const int RestartInRampDownActiveSolverRatio = BbParaParamsRealFirst + 22;
196 static const int HugeImbalanceThresholdTime = BbParaParamsRealFirst + 23;
197 static const int HugeImbalanceActiveSolverRatio = BbParaParamsRealFirst + 24;
198 static const int TimeStopSolvingMode = BbParaParamsRealFirst + 25;
199 static const int NoTransferThresholdReductionRatio = BbParaParamsRealFirst + 26;
200 static const int EnhancedCheckpointStartTime = BbParaParamsRealFirst + 27;
201 //-------------------------------------------------------------------------
202 static const int BbParaParamsRealLast = BbParaParamsRealFirst + 27;
203 static const int BbParaParamsRealN = BbParaParamsRealLast - BbParaParamsRealFirst + 1;
204 ///
205 /// Char parameters
206 ///
207 static const int BbParaParamsCharFirst = BbParaParamsRealLast + 1;
208 //-------------------------------------------------------------------------
209 //-------------------------------------------------------------------------
210 static const int BbParaParamsCharLast = BbParaParamsCharFirst - 1; // No params -1
211 static const int BbParaParamsCharN = BbParaParamsCharLast - BbParaParamsCharFirst + 1;
212 ///
213 /// String parameters
214 ///
215 static const int BbParaParamsStringFirst = BbParaParamsCharLast +1;
216 //-------------------------------------------------------------------------
217 static const int SolverSettingsForInitialPresolving = BbParaParamsStringFirst + 0;
218 static const int SolverSettingsAtRootNode = BbParaParamsStringFirst + 1;
219 static const int SolverSettingsExceptRootNode = BbParaParamsStringFirst + 2;
220 static const int SolverSettingsAtRacing = BbParaParamsStringFirst + 3;
221 //-------------------------------------------------------------------------
222 static const int BbParaParamsStringLast = BbParaParamsStringFirst + 3;
223 static const int BbParaParamsStringN = BbParaParamsStringLast - BbParaParamsStringFirst + 1;
225 static const int BbParaParamsSize = BbParaParamsLast + 1;
226 
227 
228 class ParaComm;
229 ///
230 /// class BbParaParamSet
231 ///
232 #if defined(_COMM_PTH) || defined(_COMM_CPP11)
233 class BbParaParamSet : public ParaParamSetTh
234 {
235 
236 public:
237 
238  ///
239  /// constructor
240  ///
241  BbParaParamSet(
242  )
243  : ParaParamSetTh(BbParaParamsSize)
244  {
245  }
246 
247  ///
248  /// constructor
249  ///
250  BbParaParamSet(
251  size_t inNParaParams
252  );
253 //
254 // : ParaParamSetTh(inNParaParams)
255 // {
256 // }
257 
258 #endif
259 #if defined(_COMM_MPI_WORLD)
260 class BbParaParamSet : public ParaParamSetMpi
261 {
262 
263 public:
264 
265  ///
266  /// constructor
267  ///
268  BbParaParamSet(
269  )
270  : ParaParamSetMpi(BbParaParamsSize)
271  {
272  }
273 
274  ///
275  /// constructor
276  ///
277  BbParaParamSet(
278  size_t inNParaParams
279  );
280 // : ParaParamSetMpi(inNParaParams)
281 // {
282 // }
283 
284 #endif
285 
286  ///
287  /// destructor
288  ///
290  )
291  {
292  }
293 
294  ///
295  /// read ParaParams from file
296  ///
297  void read(
298  ParaComm *comm, ///< communicator used
299  const char* filename ///< reading file name
300  );
301 
302  ///
303  /// get number of bool parameters
304  /// @return size of parameter table
305  ///
306  virtual size_t getNumBoolParams(
307  )
308  {
309  return (ParaParamsBoolN + BbParaParamsBoolN);
310  }
311 
312  ///
313  /// get number of int parameters
314  /// @return size of parameter table
315  ///
316  virtual size_t getNumIntParams(
317  )
318  {
319  return (ParaParamsIntN + BbParaParamsIntN);
320  }
321 
322  ///
323  /// get number of longint parameters
324  /// @return size of parameter table
325  ///
326  virtual size_t getNumLongintParams(
327  )
328  {
329  return (ParaParamsLongintN + BbParaParamsLongintN);
330  }
331 
332  ///
333  /// get number of real parameters
334  /// @return size of parameter table
335  ///
336  virtual size_t getNumRealParams(
337  )
338  {
339  return (ParaParamsCharN + BbParaParamsCharN);
340  }
341 
342  ///
343  /// get number of char parameters
344  /// @return size of parameter table
345  ///
346  virtual size_t getNumCharParams(
347  )
348  {
349  return (ParaParamsCharN + BbParaParamsCharN);
350  }
351 
352  ///
353  /// get number of string parameters
354  /// @return size of parameter table
355  ///
356  virtual size_t getNumStringParams(
357  )
358  {
359  return (ParaParamsStringN + BbParaParamsStringN);
360  }
361 
362 };
363 
364 }
365 
366 #endif // __BB_PARA_PARAM_SET_H__
static const int RestartInRampDownThresholdTime
static const int BbParaParamsLongintLast
static const int BbParaParamsLast
static const int MultiplierForBreakingTargetBound
static const int NodeTransferMode
static const int CleanUp
virtual size_t getNumCharParams()
get number of char parameters
static const int NNodesTransferLogging
static const int BbParaParamsIntN
static const int NCollectOnce
static const int NumberOfNodesKeepingInRootSolver
static const int BbParaParamsRealLast
static const int AllowTreeSearchRestart
static const int FinalCheckpointNSolvers
static const int BbParaParamsStringLast
static const int GenerateReducedCheckpointFiles
static ScipParaCommTh * comm
Definition: fscip.cpp:73
static const int CollectOnce
static const int HugeImbalanceThresholdTime
static const int ProhibitCollectOnceMultiplier
static const int InitialNodesGeneration
static const int NumberOfInitialNodes
static const int DeterministicTabularSolvingStatus
virtual ~BbParaParamSet()
class BbParaParamSet
static const int ParaParamsBoolN
Definition: paraParamSet.h:81
static const int NoTransferThresholdReductionRatio
static const int AggressivePresolveStopDepth
static const int EnhancedCheckpointStartTime
static const int ParaParamsIntN
Definition: paraParamSet.h:91
static const int RatioToApplyLightWeightRootProcess
static const int ParaParamsStringN
Definition: paraParamSet.h:134
static const int KeepRacingUntilToFindFirstSolution
static const int BgapStopSolvingMode
static const int TryNBranchingOrderInRacing
static const int BbParaParamsRealFirst
Real parameters.
static const int BbParaParamsCharLast
static const int NSolverNodesStartBreaking
static const int BbParaParamsCharFirst
Char parameters.
static const int BbParaParamsIntFirst
Int parameters.
static const int NChangeIntoCollectingModeNSolvers
static const int NNodesToKeepInCheckpointFile
static const int NBoundChangesForTransferNode
static const int NMaxRacingBaseParameters
static const int BbParaParamsBoolN
static const int LightWeightRootNodeProcess
static const int BbParaParamsCharN
static const int NChangeIntoCollectingMode
static const int BbParaParamsLongintFirst
Longint parameters.
static const int SolverOrderInCollectingMode
static const int RacingRampUpTerminationCriteria
static const int SolverSettingsExceptRootNode
virtual size_t getNumRealParams()
get number of real parameters
static const int TryNVariablegOrderInRacing
static const int ControlCollectingModeOnSolverSide
static const int NMaxCanditatesForCollecting
static const int BbParaParamsFirst
Bool parameters.
static const int TransferVarValueStats
static const int TransferLocalCuts
static const int TimeStopSolvingMode
static const int NStopSolvingMode
static const int TimeToIncreaseCMS
static const int BbParaParamsRealN
static const int StopRacingNumberOfNodesLeftMultiplier
static const int FixedVariablesRatioInMerging
static const int UseRootNodeCuts
static const int CountingSolverRatioInRacing
static const int EnhancedFinalCheckpoint
static const int NStopBreaking
static const int NMergingNodesAtRestart
static const int BigDualGapSubtreeHandling
static const int SolverSettingsAtRacing
static const int BbParaParamsSize
static const int CheckEffectOfRootNodePreprocesses
static const int MinNumberOfCollectingModeSolvers
static const int NoAlternateSolving
static const int RandomNodeSelectionRatio
static const int NEagerToSolveAtRestart
static const int BbParaParamsLongintN
static const int ParaParamsLongintN
Definition: paraParamSet.h:99
virtual size_t getNumIntParams()
get number of int parameters
static const int NoSolverPresolvingAtRoot
static const int TNodesTransferLogging
static const int ProvingRun
virtual size_t getNumLongintParams()
get number of longint parameters
static const int NoUpperBoundTransferInRacing
static const int BbParaParamsBoolFirst
static const int OmitInfeasibleTerminationInRacing
Base class of communicator for UG Framework.
static const int ABgapForSwitchingToBestSolver
static const int DualBoundGainBranchRatio
static const int LightWeightNodePenartyInCollecting
static const int NoAggressiveSeparatorInRacing
static const int CheckFeasibilityInLC
static const int MergeNodesAtRestart
static const int TransferBendersCuts
static const int TransferConflictCuts
static const int BbParaParamsBoolLast
static const int MaxNRacingParamSetSeed
static const int StopRacingTimeLimitMultiplier
void read(ParaComm *comm, const char *filename)
read ParaParams from file
static const int InstanceTransferMethod
static const int DistributeBestPrimalSolution
static const int NoAllBoundChangesTransferInRacing
static const int RestartInRampDownActiveSolverRatio
static const int HugeImbalanceActiveSolverRatio
static const int MultiplierToDetermineThresholdValue
class ParaParamSetTh
static const int OutputPresolvedInstance
static const int TransferConflicts
static const int OmitTerminationNSolutionsInRacing
static const int BgapCollectingMode
static const int SetAllDefaultsAfterRacing
virtual size_t getNumStringParams()
get number of string parameters
static const int AggressivePresolveDepth
static const int ParaParamsLast
Definition: paraParamSet.h:135
static const int AllowableRegressionRatioInMerging
static const int StopRacingNumberOfNodesLeft
static const int TransferBranchStats
static const int BbParaParamsIntLast
static const int OutputTabularSolvingStatus
static const int StopRacingTimeLimit
static const int MultiplierForBgapCollectingMode
static const int RampUpPhaseProcess
static const int NoSolverPresolvingAtRootDefaultSet
static const int TabularSolvingStatusInterval
static const int RestartRacing
static const int CommunicateTighterBoundsInRacing
static const int WaitTerminationOfThreads
static const int BbParaParamsStringFirst
String parameters.
class ParaParamSetMpi
static const int RacingStatBranching
static const int LogSubtreeInfo
static const int NEvaluationSolversToStopRacing
static const int MultiplierForCollectingMode
virtual size_t getNumBoolParams()
get number of bool parameters
ParaParamSet extension for MPI communication.
static const int BreakFirstSubtree
static const int SelfSplitTreeDepth
static const int EventWeightedDeterministic
static const int CollectingModeInterval
static const int AllBoundChangesTransfer
static const int SolverSettingsForInitialPresolving
static const int NTransferLimitForBreaking
static const int NoPreprocessingInLC
static const int NBoundChangesOfMergeNode
static const int DualBoundGainTest
static const int BbParaParamsStringN
static const int EnhancedCheckpointInterval
static const int SolverSettingsAtRootNode
static const int ParaParamsCharN
Definition: paraParamSet.h:119
Base class of communicator object.
Definition: paraComm.h:101
static const int KeepNodesDepth
static const int MaxNumberOfCollectingModeSolvers
static const int IterativeBreakDown
static const int NIdleSolversToTerminate