Dip-All  0.91.0
DecompParam.h
Go to the documentation of this file.
1 //===========================================================================//
2 // This file is part of the DIP Solver Framework. //
3 // //
4 // DIP is distributed under the Eclipse Public License as part of the //
5 // COIN-OR repository (http://www.coin-or.org). //
6 // //
7 // Author: Matthew Galati, SAS Institute Inc. (matthew.galati@sas.com) //
8 // //
9 // Conceptual Design: Matthew Galati, SAS Institute Inc. //
10 // Ted Ralphs, Lehigh University //
11 // //
12 // Copyright (C) 2002-2015, Lehigh University, Matthew Galati, Ted Ralphs //
13 // All Rights Reserved. //
14 //===========================================================================//
15 
16 #ifndef DECOMP_PARAM_INCLUDED
17 #define DECOMP_PARAM_INCLUDED
18 
19 //===========================================================================//
20 #include "Decomp.h"
21 #include "UtilMacros.h"
22 #include "UtilParameters.h"
23 
24 //===========================================================================//
25 #define PARAM_getSetting(xstr, x) x = param.GetSetting(xstr, x, sec)
26 
27 //===========================================================================//
28 class DecompParam {
29 
30 
31  //----------------------------------------------------------------------//
36  //----------------------------------------------------------------------//
37 
38 public:
39  int LogLevel;
43 
44 
45  //=0 never
46  //=1 only on error
47  //=2 dump every model
48 
50 
57 
58 
60 
61  int DebugLevel;//=0 (default), =1 (extra checks on duals, etc)
62 
63  double TolZero;
68  double LimitTime;
69 
75 
76  //---
77  //--- tailing off when average bound over TailoffLength iterations
78  //--- has changed less than TailoffPercent
79  //---
80 
84 
85  //---
86  //--- Strategy for switching from cutting to pricing
87  //--- 0 = Default
88  //--- 1 = Favor column generation
89  //--- 2 = Favor cut generation
90 
92 
94  //num iters between compress
96  //don't compress unless number of cols increased by this mult
98  //do not start compression until master gap is within this limit
100  int CutDC;
101  int CutCGL;
102 
109 
111 
116  // Notice:
117  // NumConcurrentThreadsSubProb: available thread number for parallelizing subproblems
118  // NumThreadsIPSolver: thread number for solving each IP subproblem
119  //
122 
124 
125  //This option only works with Cpx:
126  // DecompDualSimplex = 0,
127  // DecompPrimSimplex = 1,
128  // DecompBarrier = 2
129 
131 
132  //n = 0: do all blocks each time
133  //n > 0: do all blocks every n iterations
134 
136 
137  //TODO: named values in parameters?
138  //NOT working
139  //0:RoundRobinRotate: rotate through blocks in order 0...numBlocks-1
140  //1:RoundRobinMostNegRC: choose the block with most neg reduced cost
141  //(in last iter)
142 
144 
145  //solve master as IP at end of each node (this should only be done
146  // if there are more than one blocks)
147  //TODO: how often? after every pass?
148 
149  int SolveMasterAsIp; //{0,1}
150  int SolveMasterAsIpFreqNode; //solve every n nodes
151  int SolveMasterAsIpFreqPass; //solve every n passes (within one node)
154 
155  // DecompDualSimplex = 0,
156  // DecompPrimSimplex = 1,
157  // DecompBarrier = 2
158 
160 
161 
162  //0 = If a user function is defined, it will use the user function.
163  // If the user returns an exact solution, it will not run the built-in
164  // IP solve (default).
165  // If a user function is not defined, it will use the built-in IP solve.
166  //1 = Use the built-in IP solve, even if there is a user defines a function.
167  //2 = Calls the user defined function (if exists) and then calls built-in
168  // IP solver (use this for debugging).
169 
171 
175 
176  //solve compact formulation first before starting PhaseI
177  // hopefully identify infeasibiity in tree quicker
178 
180 
181  bool DualStab;
184 
185  bool BreakOutPartial; //DISABLED for now
186 
187  //when solving using IP solver, algorithm for initial relaxation
188  //when solving using IP solver, algorithm for subproblems
189  // options= dual, primal, barrier
190  //string IpAlgoStart;
191  //string IpAlgoSub;
192 
195  int MasterConvexityLessThan; //0='E', 1='L'
196  double ParallelColsLimit; //cosine of angle >, then consider parallel
197 
209 
218  /*
219  * Check user columns for overlap. The default is true, but this
220  * can be shut off to speed up the setup.
221  */
222 
224 
225  /*
226  * The following parameters are extended from MILPBlock
227  * applications but changed to MILP domain
228  *
229  */
230 
231  std::string DataDir;
232  std::string Instance;
233  std::string InstanceFormat;
234 
235  /*
236  * The file defining which rows are in which blocks.
237  */
238  std::string BlockFile;
239 
267  std::string BlockFileFormat;
268 
269  std::string PermuteFile;
270 
271  std::string InitSolutionFile;
272 
273  int UseNames; // col/row names for debugging
274  int UseSparse; // create all blocks sparsely
275  int FullModel; // create full model for CPM or direct
276  double BestKnownLB;
277  double BestKnownUB;
278  double ColumnUB; // hack since missing extreme rays
279  double ColumnLB; //hack since missing extreme rays
280 
281  int ObjectiveSense; //1=min, -1=max
282  // variable indicates whether to use
283  // multiple cores to compute concurrently
284 
286 
287  // number of block candidates
289 
290  // time of concurrent CutOffTime to finalize
291  // the choice of MILP solution method
292 
294 
295 
296  std::string CurrentWorkingDir;
297 
299 
301 
303 
305 
307 
309 
310  // The tolerance for checking negative reduced cost
311  // Typically a small number approaching zero
313 
314  double PhaseIObjTol;
315 
317 
319 
321 
323 
324  bool WarmStart;
325 
331  //-----------------------------------------------------------------------//
336  //-----------------------------------------------------------------------//
337 
338 public:
339 
341  const char* sec) {
343  PARAM_getSetting("LogLevel", LogLevel);
344  PARAM_getSetting("LogDebugLevel", LogDebugLevel);
345  PARAM_getSetting("LogLpLevel", LogLpLevel);
346  PARAM_getSetting("LogIpLevel", LogIpLevel);
347  PARAM_getSetting("LogDumpModel", LogDumpModel);
348  PARAM_getSetting("LogObjHistory", LogObjHistory);
349  PARAM_getSetting("LimitInitVars", LimitInitVars);
350  PARAM_getSetting("DebugLevel", DebugLevel);
351  PARAM_getSetting("TolZero", TolZero);
352  PARAM_getSetting("LimitTotalCutIters", LimitTotalCutIters);
353  PARAM_getSetting("LimitTotalPriceIters", LimitTotalPriceIters);
354  PARAM_getSetting("LimitRoundCutIters", LimitRoundCutIters);
355  PARAM_getSetting("LimitRoundPriceIters", LimitRoundPriceIters);
356  PARAM_getSetting("LimitTime", LimitTime);
357  PARAM_getSetting("LimitNodes", LimitNodes);
358  PARAM_getSetting("TailoffLength", TailoffLength);
359  PARAM_getSetting("TailoffPercent", TailoffPercent);
360  PARAM_getSetting("MasterGapLimit", MasterGapLimit);
361  PARAM_getSetting("PCStrategy", PCStrategy);
362  PARAM_getSetting("CompressColumns", CompressColumns);
363  PARAM_getSetting("CompressColumnsIterFreq", CompressColumnsIterFreq);
364  PARAM_getSetting("CompressColumnsSizeMultLimit", CompressColumnsSizeMultLimit);
365  PARAM_getSetting("CompressColumnsMasterGapStart",
367  PARAM_getSetting("CutDC", CutDC);
368  PARAM_getSetting("CutCGL", CutCGL);
369  PARAM_getSetting("CutCglKnapC", CutCglKnapC);
370  PARAM_getSetting("CutCglFlowC", CutCglFlowC);
371  PARAM_getSetting("CutCglMir", CutCglMir);
372  PARAM_getSetting("CutCglClique", CutCglClique);
373  PARAM_getSetting("CutCglOddHole", CutCglOddHole);
374  PARAM_getSetting("CutCglGomory", CutCglGomory);
375  PARAM_getSetting("SubProbUseCutoff", SubProbUseCutoff);
376  PARAM_getSetting("SubProbGapLimitExact", SubProbGapLimitExact);
377  PARAM_getSetting("SubProbGapLimitInexact", SubProbGapLimitInexact);
378  PARAM_getSetting("SubProbTimeLimitExact", SubProbTimeLimitExact);
379  PARAM_getSetting("SubProbTimeLimitInexact", SubProbTimeLimitInexact);
380  PARAM_getSetting("NumConcurrentThreadsSubProb", NumConcurrentThreadsSubProb);
381  PARAM_getSetting("NumThreadsIPSolver", NumThreadsIPSolver);
382  PARAM_getSetting("SubProbNumSolLimit", SubProbNumSolLimit);
383  PARAM_getSetting("SubProbSolverStartAlgo", SubProbSolverStartAlgo);
384  PARAM_getSetting("RoundRobinInterval", RoundRobinInterval);
385  PARAM_getSetting("RoundRobinStrategy", RoundRobinStrategy);
386  PARAM_getSetting("SolveMasterAsIp", SolveMasterAsIp);
387  PARAM_getSetting("SolveMasterAsIpFreqNode", SolveMasterAsIpFreqNode);
388  PARAM_getSetting("SolveMasterAsIpFreqPass", SolveMasterAsIpFreqPass);
389  PARAM_getSetting("SolveMasterAsIpLimitTime", SolveMasterAsIpLimitTime);
390  PARAM_getSetting("SolveMasterAsIpLimitGap", SolveMasterAsIpLimitGap);
391  PARAM_getSetting("SolveMasterUpdateAlgo", SolveMasterUpdateAlgo);
392  PARAM_getSetting("SolveRelaxAsIp", SolveRelaxAsIp);
393  PARAM_getSetting("InitVarsWithCutDC", InitVarsWithCutDC);
394  PARAM_getSetting("InitVarsWithIP", InitVarsWithIP);
395  PARAM_getSetting("InitVarsWithIPLimitTime", InitVarsWithIPLimitTime);
396  PARAM_getSetting("InitCompactSolve", InitCompactSolve);
397  PARAM_getSetting("DualStab", DualStab);
398  PARAM_getSetting("DualStabAlpha", DualStabAlpha);
399  PARAM_getSetting("BreakOutPartial", BreakOutPartial);
400  PARAM_getSetting("BranchEnforceInSubProb", BranchEnforceInSubProb);
401  PARAM_getSetting("BranchEnforceInMaster", BranchEnforceInMaster);
402  PARAM_getSetting("MasterConvexityLessThan", MasterConvexityLessThan);
403  PARAM_getSetting("ParallelColsLimit", ParallelColsLimit);
404  PARAM_getSetting("BranchStrongIter", BranchStrongIter);
405  PARAM_getSetting("DebugCheckBlocksColumns", DebugCheckBlocksColumns);
406  DataDir = param.GetSetting("DataDir", "", "MILP");
407  Instance = param.GetSetting("Instance", "", "MILP");
408  InstanceFormat = param.GetSetting("InstanceFormat", "", "MILP");
409  BlockFile = param.GetSetting("BlockFile", "", "MILP");
410  PermuteFile = param.GetSetting("PermuteFile", "", "MILP");
412  = param.GetSetting("BlockFileFormat", "", "MILP");
414  = param.GetSetting("InitSolutionFile", "", "MILP");
415  PARAM_getSetting("LogLevel", LogLevel);
416  PARAM_getSetting("UseNames", UseNames);
417  PARAM_getSetting("UseSparse", UseSparse);
418  PARAM_getSetting("FullModel", FullModel);
419  PARAM_getSetting("BestKnownLB", BestKnownLB);
420  PARAM_getSetting("BestKnownUB", BestKnownUB);
421  PARAM_getSetting("ColumnUB", ColumnUB);
422  PARAM_getSetting("ColumnLB", ColumnLB);
423  PARAM_getSetting("ObjectiveSense", ObjectiveSense);
424  PARAM_getSetting("BlockNumInput", BlockNumInput);
425  PARAM_getSetting("Concurrent", Concurrent);
426  PARAM_getSetting("NumBlocksCand", NumBlocksCand);
427  PARAM_getSetting("CconcurrentCutOffTime", ConcurrentCutOffTime);
428  PARAM_getSetting("CurrentWorkingDir", CurrentWorkingDir);
429  PARAM_getSetting("SubProbParallel", SubProbParallel);
430  PARAM_getSetting("SubProbParallelType", SubProbParallelType);
431  PARAM_getSetting("SubProbParallelChunksize", SubProbParallelChunksize);
432  PARAM_getSetting("ConcurrentThreadsNum", ConcurrentThreadsNum);
433  PARAM_getSetting("BlockFileOutput", BlockFileOutput);
434  PARAM_getSetting("RedCostEpsilon", RedCostEpsilon);
435  PARAM_getSetting("PhaseIObjTol", PhaseIObjTol);
436  PARAM_getSetting("CheckSpecialStructure", CheckSpecialStructure);
437  PARAM_getSetting("BlockFileOutputFormat", BlockFileOutputFormat);
438  PARAM_getSetting("SolutionOutputToFile", SolutionOutputToFile);
439  PARAM_getSetting("SolutionOutputFileName", SolutionOutputFileName);
440  PARAM_getSetting("WarmStart", WarmStart);
441  //---
442  //--- store the original setting for DualStabAlpha
443  //---
445  }
446 
447  inline void getSettings(UtilParameters& param) {
448  const std::string sec = "DECOMP";
449  getSettingsImpl(param, sec.c_str());
450  }
451 
452  inline void getSettings(UtilParameters& param,
453  const std::string& sec) {
454  //---
455  //--- first get any settings that apply across any DECOMP algo
456  //--- from the [DECOMP] section
457  //---
458  getSettingsImpl(param, "DECOMP");
459  //---
460  //--- then get any settings that apply to this algo
461  //--- from the [<sec>] section
462  //---
463  getSettingsImpl(param, sec.c_str());
464  }
465 
467  void dumpSettings(const std::string& sec,
468  std::ostream* os = &std::cout) {
469  (*os) << "\n========================================================";
470  (*os) << "\nDECOMP PARAMETER SETTINGS\n";
471  UtilPrintParameter(os, sec, "LogLevel", LogLevel);
472  UtilPrintParameter(os, sec, "LogDebugLevel", LogDebugLevel);
473  UtilPrintParameter(os, sec, "LogLpLevel", LogLpLevel);
474  UtilPrintParameter(os, sec, "LogIpLevel", LogIpLevel);
475  UtilPrintParameter(os, sec, "LogDumpModel", LogDumpModel);
476  UtilPrintParameter(os, sec, "LogObjHistory", LogObjHistory);
477  UtilPrintParameter(os, sec, "LimitInitVars", LimitInitVars);
478  UtilPrintParameter(os, sec, "DebugLevel", DebugLevel);
479  UtilPrintParameter(os, sec, "TolZero", TolZero);
480  UtilPrintParameter(os, sec, "LimitTotalCutIters", LimitTotalCutIters);
481  UtilPrintParameter(os, sec, "LimitTotalPriceIters", LimitTotalPriceIters);
482  UtilPrintParameter(os, sec, "LimitRoundCutIters", LimitRoundCutIters);
483  UtilPrintParameter(os, sec, "LimitRoundPriceIters", LimitRoundPriceIters);
484  UtilPrintParameter(os, sec, "LimitTime", LimitTime);
485  UtilPrintParameter(os, sec, "LimitNodes", LimitNodes);
486  UtilPrintParameter(os, sec, "TailoffLength", TailoffLength);
487  UtilPrintParameter(os, sec, "TailoffPercent", TailoffPercent);
488  UtilPrintParameter(os, sec, "MasterGapLimit", MasterGapLimit);
489  UtilPrintParameter(os, sec, "PCStrategy", PCStrategy);
490  UtilPrintParameter(os, sec, "CompressColumns", CompressColumns);
491  UtilPrintParameter(os, sec, "CompressColumnsIterFreq",
493  UtilPrintParameter(os, sec, "CompressColumnsSizeMultLimit",
495  UtilPrintParameter(os, sec, "CompressColumnsMasterGapStart",
497  UtilPrintParameter(os, sec, "CutDC", CutDC);
498  UtilPrintParameter(os, sec, "CutCGL", CutCGL);
499  UtilPrintParameter(os, sec, "CutCglKnapC", CutCglKnapC);
500  UtilPrintParameter(os, sec, "CutCglFlowC", CutCglFlowC);
501  UtilPrintParameter(os, sec, "CutCglMir", CutCglMir);
502  UtilPrintParameter(os, sec, "CutCglClique", CutCglClique);
503  UtilPrintParameter(os, sec, "CutCglOddHole", CutCglOddHole);
504  UtilPrintParameter(os, sec, "CutCglGomory", CutCglGomory);
505  UtilPrintParameter(os, sec, "SubProbUseCutoff", SubProbUseCutoff);
506  UtilPrintParameter(os, sec, "SubProbGapLimitExact",
508  UtilPrintParameter(os, sec, "SubProbGapLimitInexact",
510  UtilPrintParameter(os, sec, "SubProbTimeLimitExact",
512  UtilPrintParameter(os, sec, "SubProbTimeLimitInexact",
514  UtilPrintParameter(os, sec, "NumConcurrentThreadsSubProb",
516  UtilPrintParameter(os, sec, "NumThreadsIPSolver", NumThreadsIPSolver);
517  UtilPrintParameter(os, sec, "SubProbNumSolLimit", SubProbNumSolLimit);
518  UtilPrintParameter(os, sec, "SubProbSolverStartAlgo",
520  UtilPrintParameter(os, sec, "RoundRobinInterval", RoundRobinInterval);
521  UtilPrintParameter(os, sec, "RoundRobinStrategy", RoundRobinStrategy);
522  UtilPrintParameter(os, sec, "SolveMasterAsIp", SolveMasterAsIp);
523  UtilPrintParameter(os, sec, "SolveMasterAsIpFreqNode",
525  UtilPrintParameter(os, sec, "SolveMasterAsIpFreqPass",
527  UtilPrintParameter(os, sec, "SolveMasterAsIpLimitTime",
529  UtilPrintParameter(os, sec, "SolveMasterAsIpLimitGap",
531  UtilPrintParameter(os, sec, "SolveMasterUpdateAlgo",
533  UtilPrintParameter(os, sec, "SolveRelaxAsIp", SolveRelaxAsIp);
534  UtilPrintParameter(os, sec, "InitVarsWithCutDC", InitVarsWithCutDC);
535  UtilPrintParameter(os, sec, "InitVarsWithIP", InitVarsWithIP);
536  UtilPrintParameter(os, sec, "InitVarsWithIPLimitTime",
538  UtilPrintParameter(os, sec, "InitCompactSolve", InitCompactSolve);
539  UtilPrintParameter(os, sec, "DualStab", DualStab);
540  UtilPrintParameter(os, sec, "DualStabAlpha", DualStabAlpha);
541  UtilPrintParameter(os, sec, "BreakOutPartial", BreakOutPartial);
542  UtilPrintParameter(os, sec, "BranchEnforceInSubProb",
544  UtilPrintParameter(os, sec, "BranchEnforceInMaster",
546  UtilPrintParameter(os, sec, "MasterConvexityLessThan",
548  UtilPrintParameter(os, sec, "ParallelColsLimit", ParallelColsLimit);
549  UtilPrintParameter(os, sec, "BranchStrongIter", BranchStrongIter);
550  UtilPrintParameter(os, sec,
551  "DebugCheckBlocksColumns", DebugCheckBlocksColumns);
552  UtilPrintParameter(os, sec, "LogLevel", LogLevel);
553  UtilPrintParameter(os, sec, "DataDir", DataDir);
554  UtilPrintParameter(os, sec, "Instance", Instance);
555  UtilPrintParameter(os, sec, "InstanceFormat", InstanceFormat);
556  UtilPrintParameter(os, sec, "BlockFile", BlockFile);
557  UtilPrintParameter(os, sec, "PermuteFile", PermuteFile);
558  UtilPrintParameter(os, sec, "BlockFileFormat", BlockFileFormat);
559  UtilPrintParameter(os, sec, "InitSolutionFile", InitSolutionFile);
560  UtilPrintParameter(os, sec, "UseNames", UseNames);
561  UtilPrintParameter(os, sec, "UseSparse", UseSparse);
562  UtilPrintParameter(os, sec, "FullModel", FullModel);
563  UtilPrintParameter(os, sec, "BestKnownLB", BestKnownLB);
564  UtilPrintParameter(os, sec, "BestKnownUB", BestKnownUB);
565  UtilPrintParameter(os, sec, "ColumnUB", ColumnUB);
566  UtilPrintParameter(os, sec, "ColumnLB", ColumnLB);
567  UtilPrintParameter(os, sec, "ObjectiveSense", ObjectiveSense);
568  UtilPrintParameter(os, sec, "Concurrent", Concurrent);
569  UtilPrintParameter(os, sec, "NumBlocksCand", NumBlocksCand);
570  UtilPrintParameter(os, sec, "ConcurrentCutOffTime", ConcurrentCutOffTime);
571  UtilPrintParameter(os, sec, "CurrentWorkingDir", CurrentWorkingDir);
572  UtilPrintParameter(os, sec, "SubProbParallel", SubProbParallel);
573  UtilPrintParameter(os, sec, "SubProbParallelType", SubProbParallelType);
574  UtilPrintParameter(os, sec, "SubProbParallelChunksize",
576  UtilPrintParameter(os, sec, "ConcurrentThreadsNum", ConcurrentThreadsNum);
577  UtilPrintParameter(os, sec, "BlockNumInput", BlockNumInput);
578  UtilPrintParameter(os, sec, "BlockFileOutput", BlockFileOutput );
579  UtilPrintParameter(os, sec, "RedCostEpsilon", RedCostEpsilon);
580  UtilPrintParameter(os, sec, "PhaseIObjTol", PhaseIObjTol);
581  UtilPrintParameter(os, sec, "CheckSpecialStructure", CheckSpecialStructure);
582  UtilPrintParameter(os, sec, "BlockFileOutputFormat", BlockFileOutputFormat);
583  UtilPrintParameter(os, sec, "SolutionOutputToFile", SolutionOutputToFile);
584  UtilPrintParameter(os, sec, "SolutionOutputFileName", SolutionOutputFileName);
585  UtilPrintParameter(os, sec, "WarmStart", WarmStart);
586  (*os) << "========================================================\n";
587  }
588 
589  void setDefaults() {
590  LogLevel = 0;
591  LogDebugLevel = 0;
592  LogLpLevel = 0;
593  //verbosity in Symphony allows negative value and 0 is really verbose
594  // so -1 was set as the default value for Symphony, adjustment is made
595  // in the corresponding code
596  LogIpLevel = 0;
597  LogDumpModel = 0;
598  LogObjHistory = 0;
599  LimitInitVars = 5;
600  DebugLevel = 0;
608  TailoffLength = 10;
609  TailoffPercent = 0.10;
610  MasterGapLimit = 1.0e-6;
611  PCStrategy = 0;
612  CompressColumns = 1;
616  CutDC = 0;
617  CutCGL = 0;
618  CutCglKnapC = 1;
619  CutCglFlowC = 1;
620  CutCglMir = 1;
621  CutCglClique = 1;
622  CutCglOddHole = 1;
623  CutCglGomory = 1;
624  SubProbUseCutoff = 0;
625  SubProbGapLimitExact = 0.0001; // 0.01% gap
626  SubProbGapLimitInexact = 0.1; //10.00% gap
630  NumThreadsIPSolver = 1;
631  SubProbNumSolLimit = 1;
633  RoundRobinInterval = 0;
635  SolveMasterAsIp = 1;//TODO: turn off if one block
639  SolveMasterAsIpLimitGap = 0.05; //5% gap
640  SolveRelaxAsIp = 0;
642  InitVarsWithCutDC = 0;
643  InitVarsWithIP = 0;
645  InitCompactSolve = 0;
646  DualStab = 0;
647  DualStabAlpha = 0.10;
648  BreakOutPartial = 0;
649  BranchEnforceInSubProb = 1;//usually much better if can
652  ParallelColsLimit = 1.0;
653  BranchStrongIter = 0;
654  DebugCheckBlocksColumns = false;
655  /*
656  * parameters from MILPBlock and to be MILP
657  */
658  LogLevel = 0;
659  DataDir = "";
660  Instance = "";
661  InstanceFormat = "";
662  BlockFile = "";
663  BlockFileFormat = "";
664  PermuteFile = "";
665  InitSolutionFile = "";
666  UseNames = 1 ;
667  UseSparse = 1 ;
668  FullModel = 0 ;
669  BestKnownLB = -1.e100;
670  BestKnownUB = 1.e100;
671  ColumnUB = 1.e20;
672  ColumnLB = -1.e20;
673  ObjectiveSense = 1;
674  Concurrent = false;
675  NumBlocksCand = 4;
676  ConcurrentCutOffTime = 100;
677  CurrentWorkingDir = "";
678  SubProbParallel = false;
682  BlockNumInput = 0;
683  BlockFileOutput = false;
684  RedCostEpsilon = 0.0001;
685  PhaseIObjTol = 0.0005;
686  CheckSpecialStructure = false;
688  SolutionOutputToFile = true;
690  WarmStart = false;
691  }
692 
693  void dumpSettings(std::ostream* os = &std::cout) {
694  const std::string sec = "DECOMP";
695  dumpSettings(sec, os);
696  }
702  //-----------------------------------------------------------------------//
707  //-----------------------------------------------------------------------//
708 public:
713  setDefaults();
714  }
715 
723 };
724 
725 #endif
double SubProbTimeLimitInexact
0: print nothing 1: print the node objective history
Definition: DecompParam.h:115
int CutCglMir
0: print nothing 1: print the node objective history
Definition: DecompParam.h:105
DecompParam()
Default constructors.
Definition: DecompParam.h:712
double DualStabAlphaOrig
0: print nothing 1: print the node objective history
Definition: DecompParam.h:183
int UseNames
0: print nothing 1: print the node objective history
Definition: DecompParam.h:273
std::string PermuteFile
0: print nothing 1: print the node objective history
Definition: DecompParam.h:269
int InitVarsWithIP
0: print nothing 1: print the node objective history
Definition: DecompParam.h:173
bool Concurrent
0: print nothing 1: print the node objective history
Definition: DecompParam.h:285
double LimitTime
0: print nothing 1: print the node objective history
Definition: DecompParam.h:68
int BlockFileOutputFormat
0: print nothing 1: print the node objective history
Definition: DecompParam.h:318
std::string DataDir
0: print nothing 1: print the node objective history
Definition: DecompParam.h:231
double PhaseIObjTol
0: print nothing 1: print the node objective history
Definition: DecompParam.h:314
int LogIpLevel
0: print nothing 1: print the node objective history
Definition: DecompParam.h:42
int InitCompactSolve
0: print nothing 1: print the node objective history
Definition: DecompParam.h:179
double ColumnLB
0: print nothing 1: print the node objective history
Definition: DecompParam.h:279
double ParallelColsLimit
0: print nothing 1: print the node objective history
Definition: DecompParam.h:196
string GetSetting(const char *name, const char *defaultValue, const char *section=NULL)
double SubProbGapLimitInexact
0: print nothing 1: print the node objective history
Definition: DecompParam.h:113
int BlockNumInput
0: print nothing 1: print the node objective history
Definition: DecompParam.h:306
double TailoffPercent
0: print nothing 1: print the node objective history
Definition: DecompParam.h:82
bool BreakOutPartial
0: print nothing 1: print the node objective history
Definition: DecompParam.h:185
int SubProbNumSolLimit
0: print nothing 1: print the node objective history
Definition: DecompParam.h:123
bool BlockFileOutput
0: print nothing 1: print the node objective history
Definition: DecompParam.h:308
std::string BlockFileFormat
The format of BlockFile.
Definition: DecompParam.h:267
void dumpSettings(const std::string &sec, std::ostream *os=&std::cout)
Definition: DecompParam.h:467
bool BranchEnforceInSubProb
0: print nothing 1: print the node objective history
Definition: DecompParam.h:193
int LogDebugLevel
0: print nothing 1: print the node objective history
Definition: DecompParam.h:40
int LimitRoundCutIters
0: print nothing 1: print the node objective history
Definition: DecompParam.h:66
int CutCglClique
0: print nothing 1: print the node objective history
Definition: DecompParam.h:106
int RoundRobinStrategy
0: print nothing 1: print the node objective history
Definition: DecompParam.h:143
int LogDumpModel
0: print nothing 1: print the node objective history
Definition: DecompParam.h:49
int CutCglKnapC
0: print nothing 1: print the node objective history
Definition: DecompParam.h:103
std::string InstanceFormat
0: print nothing 1: print the node objective history
Definition: DecompParam.h:233
int InitVarsWithIPLimitTime
0: print nothing 1: print the node objective history
Definition: DecompParam.h:174
bool WarmStart
0: print nothing 1: print the node objective history
Definition: DecompParam.h:324
double MasterGapLimit
0: print nothing 1: print the node objective history
Definition: DecompParam.h:83
int SolveMasterAsIpFreqPass
0: print nothing 1: print the node objective history
Definition: DecompParam.h:151
int LogLevel
0: print nothing 1: print the node objective history
Definition: DecompParam.h:39
int DebugCheckBlocksColumns
Number of threads to use in DIP.
Definition: DecompParam.h:223
const int COIN_INT_MAX
Definition: CoinFinite.hpp:19
int LimitTotalPriceIters
0: print nothing 1: print the node objective history
Definition: DecompParam.h:65
std::string InitSolutionFile
0: print nothing 1: print the node objective history
Definition: DecompParam.h:271
bool DualStab
0: print nothing 1: print the node objective history
Definition: DecompParam.h:181
double CompressColumnsMasterGapStart
0: print nothing 1: print the node objective history
Definition: DecompParam.h:99
double CompressColumnsSizeMultLimit
0: print nothing 1: print the node objective history
Definition: DecompParam.h:97
int CompressColumns
0: print nothing 1: print the node objective history
Definition: DecompParam.h:93
int SolveMasterUpdateAlgo
0: print nothing 1: print the node objective history
Definition: DecompParam.h:159
int NumBlocksCand
0: print nothing 1: print the node objective history
Definition: DecompParam.h:288
int InitVarsWithCutDC
0: print nothing 1: print the node objective history
Definition: DecompParam.h:172
int SolveMasterAsIpFreqNode
0: print nothing 1: print the node objective history
Definition: DecompParam.h:150
int BranchStrongIter
Number of iterations to process in estimating bounds during strong branching.
Definition: DecompParam.h:208
int ObjectiveSense
0: print nothing 1: print the node objective history
Definition: DecompParam.h:281
int CutDC
0: print nothing 1: print the node objective history
Definition: DecompParam.h:100
bool SubProbParallel
0: print nothing 1: print the node objective history
Definition: DecompParam.h:298
int LogObjHistory
0: print nothing 1: print the node objective history
Definition: DecompParam.h:56
void getSettings(UtilParameters &param)
Definition: DecompParam.h:447
const double DecompEpsilon
Definition: Decomp.h:62
int SolveMasterAsIp
0: print nothing 1: print the node objective history
Definition: DecompParam.h:149
#define PARAM_getSetting(xstr, x)
Definition: DecompParam.h:25
std::string BlockFile
0: print nothing 1: print the node objective history
Definition: DecompParam.h:238
int ConcurrentThreadsNum
0: print nothing 1: print the node objective history
Definition: DecompParam.h:304
int CutCglFlowC
0: print nothing 1: print the node objective history
Definition: DecompParam.h:104
bool CheckSpecialStructure
0: print nothing 1: print the node objective history
Definition: DecompParam.h:316
double SolveMasterAsIpLimitGap
0: print nothing 1: print the node objective history
Definition: DecompParam.h:153
~DecompParam()
Destructor.
Definition: DecompParam.h:719
int TailoffLength
0: print nothing 1: print the node objective history
Definition: DecompParam.h:81
int FullModel
0: print nothing 1: print the node objective history
Definition: DecompParam.h:275
void dumpSettings(std::ostream *os=&std::cout)
Definition: DecompParam.h:693
int CompressColumnsIterFreq
0: print nothing 1: print the node objective history
Definition: DecompParam.h:95
int LogLpLevel
0: print nothing 1: print the node objective history
Definition: DecompParam.h:41
double BestKnownLB
0: print nothing 1: print the node objective history
Definition: DecompParam.h:276
double TolZero
0: print nothing 1: print the node objective history
Definition: DecompParam.h:63
std::string CurrentWorkingDir
0: print nothing 1: print the node objective history
Definition: DecompParam.h:296
double RedCostEpsilon
0: print nothing 1: print the node objective history
Definition: DecompParam.h:312
void getSettings(UtilParameters &param, const std::string &sec)
Definition: DecompParam.h:452
std::string SolutionOutputFileName
0: print nothing 1: print the node objective history
Definition: DecompParam.h:322
int SubProbParallelType
0: print nothing 1: print the node objective history
Definition: DecompParam.h:300
int LimitRoundPriceIters
0: print nothing 1: print the node objective history
Definition: DecompParam.h:67
int CutCglGomory
0: print nothing 1: print the node objective history
Definition: DecompParam.h:108
int SubProbUseCutoff
0: print nothing 1: print the node objective history
Definition: DecompParam.h:110
int LimitNodes
Max number of nodes (copied from Alps parameters)
Definition: DecompParam.h:74
int SubProbSolverStartAlgo
0: print nothing 1: print the node objective history
Definition: DecompParam.h:130
int NumThreadsIPSolver
0: print nothing 1: print the node objective history
Definition: DecompParam.h:121
double DualStabAlpha
0: print nothing 1: print the node objective history
Definition: DecompParam.h:182
double ColumnUB
0: print nothing 1: print the node objective history
Definition: DecompParam.h:278
int CutCGL
0: print nothing 1: print the node objective history
Definition: DecompParam.h:101
int LimitInitVars
0: print nothing 1: print the node objective history
Definition: DecompParam.h:59
double SolveMasterAsIpLimitTime
0: print nothing 1: print the node objective history
Definition: DecompParam.h:152
int NumConcurrentThreadsSubProb
0: print nothing 1: print the node objective history
Definition: DecompParam.h:120
double ConcurrentCutOffTime
0: print nothing 1: print the node objective history
Definition: DecompParam.h:293
int SolveRelaxAsIp
0: print nothing 1: print the node objective history
Definition: DecompParam.h:170
int LimitTotalCutIters
0: print nothing 1: print the node objective history
Definition: DecompParam.h:64
int DebugLevel
0: print nothing 1: print the node objective history
Definition: DecompParam.h:61
int CutCglOddHole
0: print nothing 1: print the node objective history
Definition: DecompParam.h:107
void setDefaults()
Definition: DecompParam.h:589
int MasterConvexityLessThan
0: print nothing 1: print the node objective history
Definition: DecompParam.h:195
int PCStrategy
0: print nothing 1: print the node objective history
Definition: DecompParam.h:91
std::string Instance
0: print nothing 1: print the node objective history
Definition: DecompParam.h:232
bool SolutionOutputToFile
0: print nothing 1: print the node objective history
Definition: DecompParam.h:320
int RoundRobinInterval
0: print nothing 1: print the node objective history
Definition: DecompParam.h:135
void UtilPrintParameter(std::ostream *os, const std::string &section, const std::string &name, const int value)
Definition: UtilMacros.h:102
int UseSparse
0: print nothing 1: print the node objective history
Definition: DecompParam.h:274
bool BranchEnforceInMaster
0: print nothing 1: print the node objective history
Definition: DecompParam.h:194
void getSettingsImpl(UtilParameters &param, const char *sec)
Definition: DecompParam.h:340
const double DecompBigNum
Definition: Decomp.h:61
int SubProbParallelChunksize
0: print nothing 1: print the node objective history
Definition: DecompParam.h:302
double SubProbGapLimitExact
0: print nothing 1: print the node objective history
Definition: DecompParam.h:112
double BestKnownUB
0: print nothing 1: print the node objective history
Definition: DecompParam.h:277
double SubProbTimeLimitExact
0: print nothing 1: print the node objective history
Definition: DecompParam.h:114