wiki:CBCSourceFiles

One result of the CBC efforts by Maximal and Frontline has been to break up some of the very large source files, that contain definitions of multiple C++ classes, into smaller files. Initially, we followed the rule of "one C++ class, one file." This led to quite a large number of small source files. We reviewed this while at Watson.

John Forrest explained that there are several "pairs of classes," where one class creates instances of the second class, and suggested that we could combine these pairs of class definitions in single files. We have done this, with the results listed below. Also see the latest version of the Excel workbook CbcSourceFilesTable3.xls on the Wiki.

The following source files were broken out of CbcCompareActual.cpp (which is no longer used):

CbcCompareDefault.cpp
CbcCompareDepth.cpp
CbcCompareEstimate.cpp
CbcCompareObjective.cpp

The above files make use of header files CbcCompareBase.hpp and CbcCompareActual.hpp, as well as their own header files (e.g. CbcCompareDefault.hpp). CbcCompareActual.hpp simply includes other header files. There is also a header file CbcCompare.hpp that defines a class CbcCompare (derived from CbcCompareBase), but this class is not used in the CBC code.

The following source files were broken out of CbcBranchBase.cpp (which is no longer used):

CbcBranchDecision.cpp
CbcBranchObject.cpp
CbcConsequence.cpp
CbcObject.cpp
CbcObjectUpdateData.cpp

The following source files were broken out of CbcBranchActual.cpp (which is no longer used):

CbcClique.cpp (CbcClique, CbcCliqueBranchingObject, CbcLongCliqueBranchingObject)
CbcSos.cpp (CbcSos, CbcSosBranchingObject)
CbcSimpleInteger.cpp (CbcSimpleInteger, CbcIntegerBranchingObject)
CbcSimpleIntegerPseudoCost.cpp (CbcSimpleIntegerPseudoCost, CbcIntegerPseudoCostBranchingObject)
CbcBranchDefaultDecision.cpp
CbcFollowOn.cpp (CbcFollowOn, CbcFixingBranchingObject)
CbcNWay.cpp (CbcNWay, CbcNWayBranchingObject)
CbcFixVariable.cpp
CbcDummyBranchingObject.cpp
CbcGeneral.cpp
CbcGeneralDepth.cpp (CbcGeneralDepth, CbcGeneralBranchingObject, CbcOneGeneralBranchingObject)
CbcSubProblem.cpp

The following source files were broken out of CbcBranchCut.cpp:

CbcBranchCut.cpp (CbcBranchCut, CbcCutBranchingObject)
CbcBranchAllDifferent.cpp
CbcBranchToFixLots.cpp

The following source files were broken out of CbcBranchDynamic.cpp:

CbcBranchDynamic.cpp (CbcBranchDynamic, CbcDynamicPseudoCostBranchingObject)
CbcSimpleIntegerDynamicPseudoCost.cpp

Class CbcBranchToFixLots (in CbcBranchToFixLots.cpp) also creates instances of CbcCutBranchingObject, but we thought having CbcCutBranchingObject defined in CbcBranchCut.cpp would make it easier to find.

The following source files were broken out of CbcCutGenerator.cpp:

CbcCutGenerator.cpp
CbcCutModifier.cpp
CbcCutSubsetModifier.cpp

All of the currently used code is still in CbcCutGenerator.cpp; see comments in its header file CbcCutGenerator.hpp.

The following source files were broken out of CbcNode.cpp:

CbcNode.cpp
CbcNodeInfo.cpp
CbcFullNodeInfo.cpp
CbcPartialNodeInfo.cpp

CbcFathom.cpp and CbcFathomDynamicProgramming.cpp are still included in the build projects, but John and we found that they are not being used currently in CBC.

The following source files were broken out of CbcHeuristicRINS.cpp:

CbcHeuristicRINS.cpp
CbcHeuristicRENS.cpp
CbcHeuristicDINS.cpp
CbcHeuristicVND.cpp

Last modified 11 years ago Last modified on Dec 6, 2009 10:55:47 PM