addCutGenerator(CglCutGenerator *generator, int howOften=1, const char *name=NULL, bool normal=true, bool atSolution=false, bool infeasible=false, int howOftenInSub=-100, int whatDepth=-1, int whatDepthInSub=-1) | CbcModel | |
addCuts(CbcNode *node, CoinWarmStartBasis *&lastws) | CbcModel | |
addCuts1(CbcNode *node, CoinWarmStartBasis *&lastws) | CbcModel | |
addedCuts() const | CbcModel | inline |
addHeuristic(CbcHeuristic *generator, const char *name=NULL, int before=-1) | CbcModel | |
AddIntegers() | CbcModel | |
addObjects(int numberObjects, OsiObject **objects) | CbcModel | |
addObjects(int numberObjects, CbcObject **objects) | CbcModel | |
addUpdateInformation(const CbcObjectUpdateData &data) | CbcModel | |
adjustHeuristics() | CbcModel | |
allDynamic() const | CbcModel | inline |
analyzeObjective() | CbcModel | |
assignSolver(OsiSolverInterface *&solver, bool deleteSolver=true) | CbcModel | |
bestSolution() const | CbcModel | inline |
branchAndBound(int doStatistics=0) | CbcModel | |
branchingMethod() const | CbcModel | inline |
canStopOnGap() const | CbcModel | |
CbcAllowableFractionGap enum value | CbcModel | |
CbcAllowableGap enum value | CbcModel | |
CbcCurrentCutoff enum value | CbcModel | |
CbcCurrentMinimizationObjectiveValue enum value | CbcModel | |
CbcCurrentObjectiveValue enum value | CbcModel | |
CbcCutoffIncrement enum value | CbcModel | |
CbcDblParam enum name | CbcModel | |
CbcFathomDiscipline enum value | CbcModel | |
CbcHeuristicFractionGap enum value | CbcModel | |
CbcHeuristicGap enum value | CbcModel | |
CbcInfeasibilityWeight enum value | CbcModel | |
CbcIntegerTolerance enum value | CbcModel | |
CbcIntParam enum name | CbcModel | |
CbcLargestChange enum value | CbcModel | |
CbcLastDblParam enum value | CbcModel | |
CbcLastIntParam enum value | CbcModel | |
CbcMaximumSeconds enum value | CbcModel | |
CbcMaxNumNode enum value | CbcModel | |
CbcMaxNumSol enum value | CbcModel | |
CbcModel() | CbcModel | |
CbcModel(const OsiSolverInterface &) | CbcModel | |
CbcModel(const CbcModel &rhs, bool cloneHandler=false) | CbcModel | |
CbcNumberBranches enum value | CbcModel | |
CbcOptimizationDirection enum value | CbcModel | |
CbcPrinting enum value | CbcModel | |
CbcSmallChange enum value | CbcModel | |
CbcSmallestChange enum value | CbcModel | |
CbcStartSeconds enum value | CbcModel | |
CbcSumChange enum value | CbcModel | |
checkModel() | CbcModel | |
checkSolution(double cutoff, double *solution, int fixVariables, double originalObjValue) | CbcModel | virtual |
chooseBranch(CbcNode *&newNode, int numberPassesLeft, CbcNode *oldNode, OsiCuts &cuts, bool &resolved, CoinWarmStartBasis *lastws, const double *lowerBefore, const double *upperBefore, OsiSolverBranch *&branches) | CbcModel | |
chooseBranch(CbcNode *newNode, int numberPassesLeft, bool &resolved) | CbcModel | |
clearContinuousSolver() | CbcModel | inline |
clearNumberGlobalViolations() | CbcModel | inline |
cliquePseudoCosts(int doStatistics) | CbcModel | |
clone(bool cloneHandler) | CbcModel | virtual |
conflictCut(const OsiSolverInterface *solver, bool &localCuts) | CbcModel | |
continuousPriority() const | CbcModel | inline |
continuousSolution() const | CbcModel | inline |
continuousSolver() const | CbcModel | inline |
convertToDynamic() | CbcModel | |
createContinuousSolver() | CbcModel | inline |
currentDepth() const | CbcModel | inline |
currentNode() const | CbcModel | inline |
currentNumberCuts() const | CbcModel | inline |
currentSolution() const | CbcModel | inline |
cutGenerator(int i) const | CbcModel | inline |
cutGenerators() const | CbcModel | inline |
cutModifier() const | CbcModel | inline |
dealWithEventHandler(CbcEventHandler::CbcEvent event, double objValue, const double *solution) | CbcModel | |
defaultHandler() const | CbcModel | inline |
deleteObjects(bool findIntegers=true) | CbcModel | |
deleteSavedSolution(int which) | CbcModel | |
deleteSolutions() | CbcModel | |
doCutsNow(int allowForTopOfTree) const | CbcModel | |
doHeuristicsAtRoot(int deleteHeuristicsAfterwards=0) | CbcModel | |
doOneNode(CbcModel *baseModel, CbcNode *&node, CbcNode *&newNode) | CbcModel | |
fastNodeDepth() const | CbcModel | inline |
feasibleSolution(int &numberIntegerInfeasibilities, int &numberObjectInfeasibilities) const | CbcModel | |
fillPseudoCosts(double *downCosts, double *upCosts, int *priority=NULL, int *numberDown=NULL, int *numberUp=NULL, int *numberDownInfeasible=NULL, int *numberUpInfeasible=NULL) const | CbcModel | |
findCliques(bool makeEquality, int atLeastThisMany, int lessThanThis, int defaultValue=1000) | CbcModel | |
findIntegers(bool startAgain, int type=0) | CbcModel | |
flipModel() | CbcModel | |
generateCpp(FILE *fp, int options) | CbcModel | |
getAllowableFractionGap() const | CbcModel | inline |
getAllowableGap() const | CbcModel | inline |
getAllowablePercentageGap() const | CbcModel | inline |
getApplicationData() const | CbcModel | |
getBestPossibleObjValue() const | CbcModel | |
getCbcColLower() const | CbcModel | inline |
getCbcColSolution() const | CbcModel | inline |
getCbcColUpper() const | CbcModel | inline |
getCbcReducedCost() const | CbcModel | inline |
getCbcRowActivity() const | CbcModel | inline |
getCbcRowLower() const | CbcModel | inline |
getCbcRowPrice() const | CbcModel | inline |
getCbcRowUpper() const | CbcModel | inline |
getColLower() const | CbcModel | inline |
getColSolution() const | CbcModel | inline |
getColUpper() const | CbcModel | inline |
getContinuousInfeasibilities() const | CbcModel | inline |
getContinuousObjective() const | CbcModel | inline |
getCurrentMinimizationObjValue() const | CbcModel | inline |
getCurrentObjValue() const | CbcModel | inline |
getCurrentPassNumber() const | CbcModel | inline |
getCurrentSeconds() const | CbcModel | |
getCutoff() const | CbcModel | inline |
getCutoffIncrement() const | CbcModel | inline |
getDblParam(CbcDblParam key) const | CbcModel | inline |
getEmptyBasis(int ns=0, int na=0) const | CbcModel | |
getEventHandler() const | CbcModel | inline |
getExtraNodeCount() const | CbcModel | inline |
getFathomCount() const | CbcModel | inline |
getHeuristicFractionGap() const | CbcModel | inline |
getHeuristicGap() const | CbcModel | inline |
getInfeasibilityWeight() const | CbcModel | inline |
getInfinity() const | CbcModel | inline |
getIntegerTolerance() const | CbcModel | inline |
getIntParam(CbcIntParam key) const | CbcModel | inline |
getIterationCount() const | CbcModel | inline |
getMatrixByCol() const | CbcModel | inline |
getMatrixByRow() const | CbcModel | inline |
getMaximumCutPasses() const | CbcModel | inline |
getMaximumCutPassesAtRoot() const | CbcModel | inline |
getMaximumNodes() const | CbcModel | inline |
getMaximumSeconds() const | CbcModel | inline |
getMaximumSolutions() const | CbcModel | inline |
getMinimizationObjValue() const | CbcModel | inline |
getMinimumDrop() const | CbcModel | inline |
getMIPStart() | CbcModel | inline |
getMultipleRootTries() const | CbcModel | inline |
getNodeCount() const | CbcModel | inline |
getNodeCount2() const | CbcModel | inline |
getNumberHeuristicSolutions() const | CbcModel | inline |
getNumberThreads() const | CbcModel | inline |
getNumCols() const | CbcModel | inline |
getNumElements() const | CbcModel | inline |
getNumRows() const | CbcModel | inline |
getObjCoefficients() const | CbcModel | inline |
getObjSense() const | CbcModel | inline |
getObjValue() const | CbcModel | inline |
getPreferredWay() const | CbcModel | inline |
getPrintingMode() const | CbcModel | inline |
getRandomSeed() const | CbcModel | inline |
getReducedCost() const | CbcModel | inline |
getRightHandSide() const | CbcModel | inline |
getRowActivity() const | CbcModel | inline |
getRowLower() const | CbcModel | inline |
getRowPrice() const | CbcModel | inline |
getRowRange() const | CbcModel | inline |
getRowSense() const | CbcModel | inline |
getRowUpper() const | CbcModel | inline |
getSolutionCount() const | CbcModel | inline |
getSolverObjValue() const | CbcModel | inline |
getStopNumberIterations() const | CbcModel | inline |
getThreadMode() const | CbcModel | inline |
globalCuts() | CbcModel | inline |
goToDantzig(int numberNodes, ClpDualRowPivot *&savePivotMethod) | CbcModel | |
gutsOfCopy(const CbcModel &rhs, int mode=0) | CbcModel | |
gutsOfDestructor() | CbcModel | |
gutsOfDestructor2() | CbcModel | |
haveMultiThreadSupport() | CbcModel | static |
heuristic(int i) const | CbcModel | inline |
heuristicModel() const | CbcModel | inline |
hotstartPriorities() const | CbcModel | inline |
hotstartSolution() const | CbcModel | inline |
howOftenGlobalScan() const | CbcModel | inline |
incrementExtra(int nodes, int iterations, int fathoms=1) | CbcModel | inline |
incrementIterationCount(int value) | CbcModel | inline |
incrementNodeCount(int value) | CbcModel | inline |
incrementStrongInfo(int numberTimes, int numberIterations, int numberFixed, bool ifInfeasible) | CbcModel | |
incrementSubTreeStopped() | CbcModel | inline |
incrementUsed(const double *solution) | CbcModel | |
initialSolve() | CbcModel | |
integerPresolve(bool weak=false) | CbcModel | |
integerPresolveThisModel(OsiSolverInterface *originalSolver, bool weak=false) | CbcModel | |
integerType(int i) const | CbcModel | inline |
integerType() const | CbcModel | inline |
integerVariable() const | CbcModel | inline |
isAbandoned() const | CbcModel | |
isBinary(int colIndex) const | CbcModel | inline |
isContinuous(int colIndex) const | CbcModel | inline |
isContinuousUnbounded() const | CbcModel | |
isFreeBinary(int colIndex) const | CbcModel | inline |
isInitialSolveAbandoned() const | CbcModel | |
isInitialSolveProvenDualInfeasible() const | CbcModel | |
isInitialSolveProvenOptimal() const | CbcModel | |
isInitialSolveProvenPrimalInfeasible() const | CbcModel | |
isInteger(int colIndex) const | CbcModel | inline |
isIntegerNonBinary(int colIndex) const | CbcModel | inline |
isLocked() const | CbcModel | |
isNodeLimitReached() const | CbcModel | |
isProvenDualInfeasible() const | CbcModel | |
isProvenInfeasible() const | CbcModel | |
isProvenOptimal() const | CbcModel | |
isSecondsLimitReached() const | CbcModel | |
isSolutionLimitReached() const | CbcModel | |
lastHeuristic() const | CbcModel | inline |
lockThread() | CbcModel | inline |
logLevel() const | CbcModel | inline |
makeGlobalCut(const OsiRowCut *cut) | CbcModel | |
makeGlobalCut(const OsiRowCut &cut) | CbcModel | |
makeGlobalCut(const OsiColCut *cut) | CbcModel | |
makeGlobalCut(const OsiColCut &cut) | CbcModel | |
makeGlobalCuts(int numberRows, const int *which) | CbcModel | |
makeGlobalCuts() | CbcModel | |
makePartialCut(const OsiRowCut *cut, const OsiSolverInterface *solver=NULL) | CbcModel | |
master() const | CbcModel | inline |
masterThread() const | CbcModel | inline |
maximumNumberIterations() const | CbcModel | inline |
maximumRows() const | CbcModel | inline |
maximumSavedSolutions() const | CbcModel | inline |
maximumSecondsReached() const | CbcModel | |
mergeModels(int numberModel, CbcModel **model, int numberNodes) | CbcModel | |
messageHandler() const | CbcModel | inline |
messages() | CbcModel | inline |
messagesPointer() | CbcModel | inline |
modelOwnsSolver() | CbcModel | inline |
modifiableObject(int which) const | CbcModel | inline |
moreSpecialOptions() const | CbcModel | inline |
moreSpecialOptions2() const | CbcModel | inline |
moveInfo(const CbcModel &rhs) | CbcModel | |
moveToModel(CbcModel *baseModel, int mode) | CbcModel | |
mutableStrongInfo() | CbcModel | inline |
newLanguage(CoinMessages::Language language) | CbcModel | |
nodeComparison() const | CbcModel | inline |
normalSolver() const | CbcModel | inline |
numberAnalyzeIterations() const | CbcModel | inline |
numberBeforeTrust() const | CbcModel | inline |
numberCutGenerators() const | CbcModel | inline |
numberExtraIterations() const | CbcModel | inline |
numberGlobalViolations() const | CbcModel | inline |
numberHeuristics() const | CbcModel | inline |
numberIntegers() const | CbcModel | inline |
numberObjects() const | CbcModel | inline |
numberPenalties() const | CbcModel | inline |
numberRowsAtContinuous() const | CbcModel | inline |
numberSavedSolutions() const | CbcModel | |
numberStoppedSubTrees() const | CbcModel | inline |
numberStrong() const | CbcModel | inline |
numberStrongIterations() const | CbcModel | inline |
object(int which) const | CbcModel | inline |
objects() const | CbcModel | inline |
operator=(const CbcModel &rhs) | CbcModel | |
originalColumns() const | CbcModel | inline |
originalModel(CbcModel *presolvedModel, bool weak) | CbcModel | |
ownObjects() const | CbcModel | inline |
parallelMode() const | CbcModel | inline |
parentModel() const | CbcModel | inline |
passInEventHandler(const CbcEventHandler *eventHandler) | CbcModel | |
passInMessageHandler(CoinMessageHandler *handler) | CbcModel | |
passInPriorities(const int *priorities, bool ifNotSimpleIntegers) | CbcModel | |
passInSolverCharacteristics(OsiBabSolver *solverCharacteristics) | CbcModel | |
passInSubTreeModel(CbcModel &model) | CbcModel | |
passInTreeHandler(CbcTree &tree) | CbcModel | |
penaltyScaleFactor() const | CbcModel | inline |
phase() const | CbcModel | inline |
previousBounds(CbcNode *node, CbcNodeInfo *where, int iColumn, double &lower, double &upper, int force) | CbcModel | |
printFrequency() const | CbcModel | inline |
priority(int sequence) const | CbcModel | inline |
probingInfo() const | CbcModel | inline |
problemFeasibility() const | CbcModel | inline |
problemType() const | CbcModel | inline |
pseudoShadow(int type) | CbcModel | |
randomNumberGenerator() | CbcModel | inline |
redoWalkBack() | CbcModel | |
reducedCostFix() | CbcModel | |
referenceSolver() const | CbcModel | inline |
reserveCurrentSolution(const double *solution=NULL) | CbcModel | |
resetModel() | CbcModel | |
resetToReferenceSolver() | CbcModel | |
resolve(CbcNodeInfo *parent, int whereFrom, double *saveSolution=NULL, double *saveLower=NULL, double *saveUpper=NULL) | CbcModel | |
resolve(OsiSolverInterface *solver) | CbcModel | |
resolveAfterTakeOffCuts() const | CbcModel | inline |
rootObjectiveAfterCuts() const | CbcModel | inline |
saveBestSolution(const double *solution, double objectiveValue) | CbcModel | |
savedSolution(int which) const | CbcModel | |
savedSolutionObjective(int which) const | CbcModel | |
saveExtraSolution(const double *solution, double objectiveValue) | CbcModel | |
saveModel(OsiSolverInterface *saveSolver, double *checkCutoffForRestart, bool *feasible) | CbcModel | |
saveReferenceSolver() | CbcModel | |
sayEventHappened() | CbcModel | inline |
searchStrategy() const | CbcModel | inline |
secondaryStatus() const | CbcModel | inline |
setAllowableFractionGap(double value) | CbcModel | inline |
setAllowableGap(double value) | CbcModel | inline |
setAllowablePercentageGap(double value) | CbcModel | inline |
setApplicationData(void *appData) | CbcModel | |
setBestObjectiveValue(double objectiveValue) | CbcModel | |
setBestSolution(CBC_Message how, double &objectiveValue, const double *solution, int fixVariables=0) | CbcModel | |
setBestSolution(const double *solution, int numberColumns, double objectiveValue, bool check=false) | CbcModel | |
setBestSolutionBasis(const CoinWarmStartBasis &bestSolutionBasis) | CbcModel | inline |
setBranchingMethod(CbcBranchDecision *method) | CbcModel | inline |
setBranchingMethod(CbcBranchDecision &method) | CbcModel | inline |
setContinuousInfeasibilities(int value) | CbcModel | inline |
setContinuousObjective(double value) | CbcModel | inline |
setContinuousPriority(int value) | CbcModel | inline |
setCurrentPassNumber(int value) | CbcModel | inline |
setCutModifier(CbcCutModifier *modifier) | CbcModel | |
setCutModifier(CbcCutModifier &modifier) | CbcModel | |
setCutoff(double value) | CbcModel | |
setCutoffAsConstraint(bool yesNo) | CbcModel | inline |
setCutoffIncrement(double value) | CbcModel | inline |
setDblParam(CbcDblParam key, double value) | CbcModel | inline |
setDefaultHandler(bool yesNo) | CbcModel | inline |
setFastNodeDepth(int value) | CbcModel | inline |
setHeuristicFractionGap(double value) | CbcModel | inline |
setHeuristicGap(double value) | CbcModel | inline |
setHeuristicModel(CbcModel *model) | CbcModel | inline |
setHotstartSolution(const double *solution, const int *priorities=NULL) | CbcModel | |
setHowOftenGlobalScan(int number) | CbcModel | |
setInfeasibilityWeight(double value) | CbcModel | inline |
setInfoInChild(int type, CbcThread *info) | CbcModel | |
setIntegerTolerance(double value) | CbcModel | inline |
setIntParam(CbcIntParam key, int value) | CbcModel | inline |
setLanguage(CoinMessages::Language language) | CbcModel | inline |
setLastHeuristic(CbcHeuristic *last) | CbcModel | inline |
setLogLevel(int value) | CbcModel | |
setMaximumCutPasses(int value) | CbcModel | inline |
setMaximumCutPassesAtRoot(int value) | CbcModel | inline |
setMaximumNodes(int value) | CbcModel | inline |
setMaximumNumberIterations(int value) | CbcModel | inline |
setMaximumSavedSolutions(int value) | CbcModel | |
setMaximumSeconds(double value) | CbcModel | inline |
setMaximumSolutions(int value) | CbcModel | inline |
setMinimizationObjValue(double value) | CbcModel | inline |
setMinimumDrop(double value) | CbcModel | inline |
setMIPStart(const std::vector< std::pair< std::string, double > > &mips) | CbcModel | inline |
setModelOwnsSolver(bool ourSolver) | CbcModel | inline |
setMoreSpecialOptions(int value) | CbcModel | inline |
setMoreSpecialOptions2(int value) | CbcModel | inline |
setMultipleRootTries(int value) | CbcModel | inline |
setNextRowCut(const OsiRowCut &cut) | CbcModel | |
setNodeComparison(CbcCompareBase *compare) | CbcModel | |
setNodeComparison(CbcCompareBase &compare) | CbcModel | |
setNumberAnalyzeIterations(int number) | CbcModel | inline |
setNumberBeforeTrust(int number) | CbcModel | |
setNumberHeuristics(int value) | CbcModel | inline |
setNumberHeuristicSolutions(int value) | CbcModel | inline |
setNumberObjects(int number) | CbcModel | inline |
setNumberPenalties(int number) | CbcModel | |
setNumberStrong(int number) | CbcModel | |
setNumberStrongIterations(int number) | CbcModel | inline |
setNumberThreads(int value) | CbcModel | inline |
setObjectiveValue(CbcNode *thisNode, const CbcNode *parentNode) const | CbcModel | |
setObjSense(double s) | CbcModel | inline |
setObjValue(double value) | CbcModel | inline |
setOptionalInteger(int index) | CbcModel | |
setOriginalColumns(const int *originalColumns, int numberGood=COIN_INT_MAX) | CbcModel | |
setParentModel(CbcModel &parentModel) | CbcModel | inline |
setPenaltyScaleFactor(double value) | CbcModel | |
setPointers(const OsiSolverInterface *solver) | CbcModel | |
setPreferredWay(int value) | CbcModel | inline |
setPrintFrequency(int number) | CbcModel | inline |
setPrintingMode(int value) | CbcModel | inline |
setProblemFeasibility(CbcFeasibilityBase *feasibility) | CbcModel | |
setProblemFeasibility(CbcFeasibilityBase &feasibility) | CbcModel | |
setProblemStatus(int value) | CbcModel | inline |
setProblemType(int number) | CbcModel | inline |
setRandomSeed(int value) | CbcModel | inline |
setResolveAfterTakeOffCuts(bool yesNo) | CbcModel | inline |
setSearchStrategy(int value) | CbcModel | inline |
setSecondaryStatus(int value) | CbcModel | inline |
setSolutionCount(int value) | CbcModel | inline |
setSpecialOptions(int value) | CbcModel | inline |
setStateOfSearch(int state) | CbcModel | inline |
setStopNumberIterations(int value) | CbcModel | inline |
setStoredRowCuts(CglStored *cuts) | CbcModel | inline |
setStrategy(CbcStrategy &strategy) | CbcModel | |
setStrategy(CbcStrategy *strategy) | CbcModel | inline |
setStrongStrategy(int value) | CbcModel | inline |
setTemporaryPointer(void *pointer) | CbcModel | inline |
setTestSolution(const double *solution) | CbcModel | inline |
setThreadMode(int value) | CbcModel | inline |
setTypePresolve(int value) | CbcModel | inline |
setUseElapsedTime(bool yesNo) | CbcModel | inline |
setWhenCuts(int value) | CbcModel | inline |
solver() const | CbcModel | inline |
solverCharacteristics() const | CbcModel | inline |
specialOptions() const | CbcModel | inline |
splitModel(int numberModels, CbcModel **model, int numberNodes) | CbcModel | |
startSplitModel(int numberIterations) | CbcModel | |
stateOfSearch() const | CbcModel | inline |
status() const | CbcModel | inline |
storedRowCuts() const | CbcModel | inline |
strategy() const | CbcModel | inline |
strongInfo() const | CbcModel | inline |
strongStrategy() const | CbcModel | inline |
subTreeModel(OsiSolverInterface *solver=NULL) const | CbcModel | |
sumChangeObjective() const | CbcModel | inline |
swapSolver(OsiSolverInterface *solver) | CbcModel | inline |
symmetryInfo() const | CbcModel | inline |
synchronizeHandlers(int makeDefault) | CbcModel | |
synchronizeModel() | CbcModel | |
synchronizeNumberBeforeTrust(int type=0) | CbcModel | |
takeOffCuts(OsiCuts &cuts, bool allowResolve, OsiCuts *saveCuts, int numberNewCuts=0, const OsiRowCut **newCuts=NULL) | CbcModel | |
temporaryPointer() const | CbcModel | inline |
testSolution() const | CbcModel | inline |
tightenVubs(int type, bool allowMultipleBinary=false, double useCutoff=1.0e50) | CbcModel | |
tightenVubs(int numberVubs, const int *which, double useCutoff=1.0e50) | CbcModel | |
topOfTree() const | CbcModel | inline |
tree() const | CbcModel | inline |
typePresolve() const | CbcModel | inline |
unlockThread() | CbcModel | inline |
usedInSolution() const | CbcModel | inline |
useElapsedTime() const | CbcModel | inline |
usefulInformation() const | CbcModel | |
virginCutGenerator(int i) const | CbcModel | inline |
waitingForMiniBranchAndBound() const | CbcModel | inline |
walkback() const | CbcModel | inline |
whenCuts() const | CbcModel | inline |
whichGenerator() const | CbcModel | inline |
workingBasis() | CbcModel | inline |
zapGlobalCuts() | CbcModel | inline |
zapIntegerInformation(bool leaveObjects=true) | CbcModel | |
zeroExtra() | CbcModel | inline |
~CbcModel() | CbcModel | virtual |