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