Dip 0.95.0
Loading...
Searching...
No Matches
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//===========================================================================//
28
29
30 //----------------------------------------------------------------------//
35 //----------------------------------------------------------------------//
36
37public:
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
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
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
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
313
315
317
319
321
323
324 std::string DecompLPSolver;
325 std::string DecompIPSolver;
326
329
335 //-----------------------------------------------------------------------//
340 //-----------------------------------------------------------------------//
341
342public:
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;
632 SubProbGapLimitExact = 0.0001; // 0.01% gap
633 SubProbGapLimitInexact = 0.1; //10.00% gap
642 SolveMasterAsMip = 1;//TODO: turn off if one block
646 SolveMasterAsMipLimitGap = 0.05; //5% gap
647 SolveRelaxAsIp = 0;
650 InitVarsWithIP = 0;
653 DualStab = 0;
654 DualStabAlpha = 0.10;
655 BreakOutPartial = 0;
656 BranchEnforceInSubProb = 1;//usually much better if can
659 ParallelColsLimit = 1.0;
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;
685 SubProbParallel = false;
689 BlockNumInput = 0;
690 BlockFileOutput = false;
691 RedCostEpsilon = 0.0001;
692 PhaseIObjTol = 0.0005;
693 CheckSpecialStructure = false;
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 //-----------------------------------------------------------------------//
719public:
724 setDefaults();
725 }
726
734};
735
736#endif
const int COIN_INT_MAX
#define PARAM_getSetting(xstr, x)
Definition: DecompParam.h:24
@ SubProbScheduleDynamic
Definition: Decomp.h:242
@ DecompDualSimplex
Definition: Decomp.h:224
@ RoundRobinRotate
Definition: Decomp.h:230
const double DecompEpsilon
Definition: Decomp.h:100
const double DecompBigNum
Definition: Decomp.h:99
void UtilPrintParameter(std::ostream *os, const std::string &section, const std::string &name, const int value)
Definition: UtilMacros.h:101
void getSettings(UtilParameters &param)
Definition: DecompParam.h:453
std::string BlockFileFormat
The format of BlockFile.
Definition: DecompParam.h:265
int CompressColumnsIterFreq
Definition: DecompParam.h:93
double ColumnUB
Definition: DecompParam.h:276
int LogObjHistory
0: print nothing 1: print the node objective history
Definition: DecompParam.h:55
bool DoInteriorPoint
Definition: DecompParam.h:328
double PhaseIObjTol
Definition: DecompParam.h:312
bool UseMultiRay
Definition: DecompParam.h:327
std::string InitSolutionFile
Definition: DecompParam.h:269
int BlockNumInput
Definition: DecompParam.h:304
int MasterConvexityLessThan
Definition: DecompParam.h:193
double CompressColumnsMasterGapStart
Definition: DecompParam.h:97
double DualStabAlphaOrig
Definition: DecompParam.h:181
double SubProbGapLimitInexact
Definition: DecompParam.h:111
double SubProbTimeLimitInexact
Definition: DecompParam.h:113
int CutCglOddHole
Definition: DecompParam.h:105
int InitVarsLimit
Definition: DecompParam.h:57
void getSettings(UtilParameters &param, const std::string &sec)
Definition: DecompParam.h:458
double SolveMasterAsMipLimitGap
Definition: DecompParam.h:151
std::string CurrentWorkingDir
Definition: DecompParam.h:294
std::string DecompIPSolver
Definition: DecompParam.h:325
double ParallelColsLimit
Definition: DecompParam.h:194
int SubProbUseCutoff
Definition: DecompParam.h:108
int RoundRobinInterval
Definition: DecompParam.h:133
int SubProbSolverStartAlgo
Definition: DecompParam.h:128
std::string Instance
Definition: DecompParam.h:230
~DecompParam()
Destructor.
Definition: DecompParam.h:730
int InitVarsWithCutDC
Definition: DecompParam.h:170
int LogLpLevel
Definition: DecompParam.h:40
std::string DecompLPSolver
Definition: DecompParam.h:324
bool BlockFileOutput
Definition: DecompParam.h:306
std::string InstanceFormat
Definition: DecompParam.h:231
double BestKnownLB
Definition: DecompParam.h:274
void dumpSettings(std::ostream *os=&std::cout)
Definition: DecompParam.h:704
bool WarmStart
Definition: DecompParam.h:322
int LogDumpModel
Definition: DecompParam.h:48
int InitVarsWithIP
Definition: DecompParam.h:171
std::string SolutionOutputFileName
Definition: DecompParam.h:320
bool SubProbParallel
Definition: DecompParam.h:296
std::string BlockFile
Definition: DecompParam.h:236
int SubProbNumSolLimit
Definition: DecompParam.h:121
int InitVarsWithIPTimeLimit
Definition: DecompParam.h:172
int CompressColumns
Definition: DecompParam.h:91
int CutCglGomory
Definition: DecompParam.h:106
int RoundRobinStrategy
Definition: DecompParam.h:141
int SolveMasterAsMipFreqPass
Definition: DecompParam.h:149
double CompressColumnsSizeMultLimit
Definition: DecompParam.h:95
int ObjectiveSense
Definition: DecompParam.h:279
DecompParam()
Default constructors.
Definition: DecompParam.h:723
int NumConcurrentThreadsSubProb
Definition: DecompParam.h:118
int InitCompactSolve
Definition: DecompParam.h:177
int NumBlocksCand
Definition: DecompParam.h:286
std::string DataDir
Definition: DecompParam.h:229
int BlockFileOutputFormat
Definition: DecompParam.h:316
double SubProbGapLimitExact
Definition: DecompParam.h:110
int SubProbParallelChunksize
Definition: DecompParam.h:300
int TotalPriceItersLimit
Definition: DecompParam.h:63
bool BreakOutPartial
Definition: DecompParam.h:183
void dumpSettings(const std::string &sec, std::ostream *os=&std::cout)
Definition: DecompParam.h:473
int DebugLevel
Definition: DecompParam.h:59
int SolveMasterAsMip
Definition: DecompParam.h:147
int NodeLimit
Max number of nodes (copied from Alps parameters)
Definition: DecompParam.h:72
bool SolutionOutputToFile
Definition: DecompParam.h:318
double TolZero
Definition: DecompParam.h:61
double BestKnownUB
Definition: DecompParam.h:275
double RedCostEpsilon
Definition: DecompParam.h:310
double DualStabAlpha
Definition: DecompParam.h:180
std::string PermuteFile
Definition: DecompParam.h:267
bool BranchEnforceInSubProb
Definition: DecompParam.h:191
int SolveMasterAsMipFreqNode
Definition: DecompParam.h:148
bool BranchEnforceInMaster
Definition: DecompParam.h:192
int TailoffLength
Definition: DecompParam.h:79
int SubProbParallelType
Definition: DecompParam.h:298
int DebugCheckBlocksColumns
Number of threads to use in DIP.
Definition: DecompParam.h:221
void getSettingsImpl(UtilParameters &param, const char *sec)
Definition: DecompParam.h:344
double SolveMasterAsMipTimeLimit
Definition: DecompParam.h:150
int RoundPriceItersLimit
Definition: DecompParam.h:65
int CutCglClique
Definition: DecompParam.h:104
bool Concurrent
Definition: DecompParam.h:283
double MasterGapLimit
Definition: DecompParam.h:81
double SubProbTimeLimitExact
Definition: DecompParam.h:112
int SolveRelaxAsIp
Definition: DecompParam.h:168
double TailoffPercent
Definition: DecompParam.h:80
double ConcurrentCutOffTime
Definition: DecompParam.h:291
int NumThreadsIPSolver
Definition: DecompParam.h:119
int RoundCutItersLimit
Definition: DecompParam.h:64
int BranchStrongIter
Number of iterations to process in estimating bounds during strong branching.
Definition: DecompParam.h:206
int TotalCutItersLimit
Definition: DecompParam.h:62
bool CheckSpecialStructure
Definition: DecompParam.h:314
void setDefaults()
Definition: DecompParam.h:599
int LogIpLevel
Definition: DecompParam.h:41
int ConcurrentThreadsNum
Definition: DecompParam.h:302
double TimeLimit
Definition: DecompParam.h:66
int LogDebugLevel
Definition: DecompParam.h:39
int PCStrategy
Definition: DecompParam.h:89
int SolveMasterUpdateAlgo
Definition: DecompParam.h:157
double ColumnLB
Definition: DecompParam.h:277