/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /* */ /* This file is part of the program and library */ /* SCIP --- Solving Constraint Integer Programs */ /* */ /* Copyright 2002-2022 Zuse Institute Berlin */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ /* you may not use this file except in compliance with the License. */ /* You may obtain a copy of the License at */ /* */ /* http://www.apache.org/licenses/LICENSE-2.0 */ /* */ /* Unless required by applicable law or agreed to in writing, software */ /* distributed under the License is distributed on an "AS IS" BASIS, */ /* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. */ /* See the License for the specific language governing permissions and */ /* limitations under the License. */ /* */ /* You should have received a copy of the Apache-2.0 license */ /* along with SCIP; see the file LICENSE. If not visit scipopt.org. */ /* */ /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ /**@file scip_solvingstats.h * @ingroup PUBLICCOREAPI * @brief public methods for querying solving statistics * @author Tobias Achterberg * @author Timo Berthold * @author Thorsten Koch * @author Alexander Martin * @author Marc Pfetsch * @author Kati Wolter * @author Gregor Hendel * @author Leona Gottwald */ /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/ #ifndef __SCIP_SCIP_SOLVINGSTATS_H__ #define __SCIP_SCIP_SOLVINGSTATS_H__ #include "scip/def.h" #include "scip/type_history.h" #include "scip/type_message.h" #include "scip/type_retcode.h" #include "scip/type_scip.h" #ifdef __cplusplus extern "C" { #endif /**@addtogroup PublicSolvingStatsMethods * * @{ */ /** gets number of branch and bound runs performed, including the current run * * @return the number of branch and bound runs performed, including the current run * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * - \ref SCIP_STAGE_FREETRANS */ SCIP_EXPORT int SCIPgetNRuns( SCIP* scip /**< SCIP data structure */ ); /** gets number of reoptimization runs performed, including the current run * * @return the number of reoptimization runs performed, including the current run * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * - \ref SCIP_STAGE_FREETRANS */ SCIP_EXPORT int SCIPgetNReoptRuns( SCIP* scip /**< SCIP data structure */ ); /** add given number to the number of processed nodes in current run and in all runs, including the focus node * * @return the number of processed nodes in current run, including the focus node * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * - \ref SCIP_STAGE_FREETRANS */ SCIP_EXPORT void SCIPaddNNodes( SCIP* scip, /**< SCIP data structure */ SCIP_Longint nnodes /**< number of processed nodes to add to the statistics */ ); /** gets number of processed nodes in current run, including the focus node * * @return the number of processed nodes in current run, including the focus node * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * - \ref SCIP_STAGE_FREETRANS */ SCIP_EXPORT SCIP_Longint SCIPgetNNodes( SCIP* scip /**< SCIP data structure */ ); /** gets total number of processed nodes in all runs, including the focus node * * @return the total number of processed nodes in all runs, including the focus node * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * - \ref SCIP_STAGE_FREETRANS */ SCIP_EXPORT SCIP_Longint SCIPgetNTotalNodes( SCIP* scip /**< SCIP data structure */ ); /** gets number of leaf nodes processed with feasible relaxation solution * * @return number of leaf nodes processed with feasible relaxation solution * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * - \ref SCIP_STAGE_FREETRANS */ SCIP_EXPORT SCIP_Longint SCIPgetNFeasibleLeaves( SCIP* scip /**< SCIP data structure */ ); /** gets number of infeasible leaf nodes processed * * @return number of infeasible leaf nodes processed * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * - \ref SCIP_STAGE_FREETRANS */ SCIP_EXPORT SCIP_Longint SCIPgetNInfeasibleLeaves( SCIP* scip /**< SCIP data structure */ ); /** gets number of processed leaf nodes that hit LP objective limit * * @return number of processed leaf nodes that hit LP objective limit * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * - \ref SCIP_STAGE_FREETRANS */ SCIP_EXPORT SCIP_Longint SCIPgetNObjlimLeaves( SCIP* scip /**< SCIP data structure */ ); /** gets number of global bound changes * * @return number of global bound changes * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * - \ref SCIP_STAGE_FREETRANS */ SCIP_EXPORT int SCIPgetNRootboundChgs( SCIP* scip /**< Scip data structure */ ); /** gets number of global bound changes applied in the current run * * @return number of global bound changes * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * - \ref SCIP_STAGE_FREETRANS */ SCIP_EXPORT int SCIPgetNRootboundChgsRun( SCIP* scip /**< Scip data structure */ ); /** gets number of times a selected node was from a cut off subtree * * @return number of times a selected node was from a cut off subtree * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * - \ref SCIP_STAGE_FREETRANS */ SCIP_EXPORT SCIP_Longint SCIPgetNDelayedCutoffs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of LPs solved so far * * @return the total number of LPs solved so far * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * - \ref SCIP_STAGE_FREETRANS */ SCIP_EXPORT SCIP_Longint SCIPgetNLPs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of iterations used so far in primal and dual simplex and barrier algorithm * * @return the total number of iterations used so far in primal and dual simplex and barrier algorithm * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNLPIterations( SCIP* scip /**< SCIP data structure */ ); /** gets number of active non-zeros in the current transformed problem * * @return the number of active non-zeros in the current transformed problem * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT SCIP_Longint SCIPgetNNZs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of iterations used so far in primal and dual simplex and barrier algorithm for the root node * * @return the total number of iterations used so far in primal and dual simplex and barrier algorithm for the root node * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNRootLPIterations( SCIP* scip /**< SCIP data structure */ ); /** gets total number of iterations used in primal and dual simplex and barrier algorithm for the first LP at the root * node * * @return the total number of iterations used in primal and dual simplex and barrier algorithm for the first root LP * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNRootFirstLPIterations( SCIP* scip /**< SCIP data structure */ ); /** gets total number of primal LPs solved so far * * @return the total number of primal LPs solved so far * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNPrimalLPs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of iterations used so far in primal simplex * * @return total number of iterations used so far in primal simplex * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNPrimalLPIterations( SCIP* scip /**< SCIP data structure */ ); /** gets total number of dual LPs solved so far * * @return the total number of dual LPs solved so far * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNDualLPs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of iterations used so far in dual simplex * * @return the total number of iterations used so far in dual simplex * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNDualLPIterations( SCIP* scip /**< SCIP data structure */ ); /** gets total number of barrier LPs solved so far * * @return the total number of barrier LPs solved so far * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNBarrierLPs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of iterations used so far in barrier algorithm * * @return the total number of iterations used so far in barrier algorithm * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNBarrierLPIterations( SCIP* scip /**< SCIP data structure */ ); /** gets total number of LPs solved so far that were resolved from an advanced start basis * * @return the total number of LPs solved so far that were resolved from an advanced start basis * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNResolveLPs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of simplex iterations used so far in primal and dual simplex calls where an advanced start basis * was available * * @return the total number of simplex iterations used so far in primal and dual simplex calls where an advanced start * basis was available * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNResolveLPIterations( SCIP* scip /**< SCIP data structure */ ); /** gets total number of primal LPs solved so far that were resolved from an advanced start basis * * @return the total number of primal LPs solved so far that were resolved from an advanced start basis * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNPrimalResolveLPs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of simplex iterations used so far in primal simplex calls where an advanced start basis * was available * * @return the total number of simplex iterations used so far in primal simplex calls where an advanced start * basis was available * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNPrimalResolveLPIterations( SCIP* scip /**< SCIP data structure */ ); /** gets total number of dual LPs solved so far that were resolved from an advanced start basis * * @return the total number of dual LPs solved so far that were resolved from an advanced start basis * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNDualResolveLPs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of simplex iterations used so far in dual simplex calls where an advanced start basis * was available * * @return the total number of simplex iterations used so far in dual simplex calls where an advanced start * basis was available * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNDualResolveLPIterations( SCIP* scip /**< SCIP data structure */ ); /** gets total number of LPs solved so far for node relaxations * * @return the total number of LPs solved so far for node relaxations * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNNodeLPs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of LPs solved in 0 iterations for node relaxations * * @return the total number of LPs solved with 0 iteratins for node relaxations * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNNodeZeroIterationLPs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of simplex iterations used so far for node relaxations * * @return the total number of simplex iterations used so far for node relaxations * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNNodeLPIterations( SCIP* scip /**< SCIP data structure */ ); /** gets total number of LPs solved so far for initial LP in node relaxations * * @return the total number of LPs solved so far for initial LP in node relaxations * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNNodeInitLPs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of simplex iterations used so far for initial LP in node relaxations * * @return the total number of simplex iterations used so far for initial LP in node relaxations * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNNodeInitLPIterations( SCIP* scip /**< SCIP data structure */ ); /** gets total number of LPs solved so far during diving and probing * * @return total number of LPs solved so far during diving and probing * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNDivingLPs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of simplex iterations used so far during diving and probing * * @return the total number of simplex iterations used so far during diving and probing * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNDivingLPIterations( SCIP* scip /**< SCIP data structure */ ); /** gets total number of times, strong branching was called (each call represents solving two LPs) * * @return the total number of times, strong branching was called (each call represents solving two LPs) * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNStrongbranchs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of simplex iterations used so far in strong branching * * @return the total number of simplex iterations used so far in strong branching * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNStrongbranchLPIterations( SCIP* scip /**< SCIP data structure */ ); /** gets total number of times, strong branching was called at the root node (each call represents solving two LPs) * * @return the total number of times, strong branching was called at the root node (each call represents solving two LPs) * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNRootStrongbranchs( SCIP* scip /**< SCIP data structure */ ); /** gets total number of simplex iterations used so far in strong branching at the root node * * @return the total number of simplex iterations used so far in strong branching at the root node * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Longint SCIPgetNRootStrongbranchLPIterations( SCIP* scip /**< SCIP data structure */ ); /** gets number of pricing rounds performed so far at the current node * * @return the number of pricing rounds performed so far at the current node * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING */ SCIP_EXPORT int SCIPgetNPriceRounds( SCIP* scip /**< SCIP data structure */ ); /** get current number of variables in the pricing store * * @return the current number of variables in the pricing store * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT int SCIPgetNPricevars( SCIP* scip /**< SCIP data structure */ ); /** get total number of pricing variables found so far * * @return the total number of pricing variables found so far * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT int SCIPgetNPricevarsFound( SCIP* scip /**< SCIP data structure */ ); /** get total number of pricing variables applied to the LPs * * @return the total number of pricing variables applied to the LPs * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT int SCIPgetNPricevarsApplied( SCIP* scip /**< SCIP data structure */ ); /** gets number of separation rounds performed so far at the current node * * @return the number of separation rounds performed so far at the current node * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING */ SCIP_EXPORT int SCIPgetNSepaRounds( SCIP* scip /**< SCIP data structure */ ); /** get total number of cuts found so far; this includes global cuts from the cut pool as often as they are separated * * @return the total number of cuts found so far * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT int SCIPgetNCutsFound( SCIP* scip /**< SCIP data structure */ ); /** get number of cuts found so far in current separation round * * @return the number of cuts found so far in current separation round * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT int SCIPgetNCutsFoundRound( SCIP* scip /**< SCIP data structure */ ); /** get total number of cuts applied to the LPs * * @return the total number of cuts applied to the LPs * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT int SCIPgetNCutsApplied( SCIP* scip /**< SCIP data structure */ ); /** get total number of constraints found in conflict analysis (conflict and reconvergence constraints) * * @return the total number of constraints found in conflict analysis (conflict and reconvergence constraints) * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT SCIP_Longint SCIPgetNConflictConssFound( SCIP* scip /**< SCIP data structure */ ); /** get number of conflict constraints found so far at the current node * * @return the number of conflict constraints found so far at the current node * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT int SCIPgetNConflictConssFoundNode( SCIP* scip /**< SCIP data structure */ ); /** get total number of conflict constraints added to the problem * * @return the total number of conflict constraints added to the problem * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT SCIP_Longint SCIPgetNConflictConssApplied( SCIP* scip /**< SCIP data structure */ ); /** get total number of dual proof constraints added to the problem * * @return the total number of dual proof constraints added to the problem * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT SCIP_Longint SCIPgetNConflictDualproofsApplied( SCIP* scip /**< SCIP data structure */ ); /** gets maximal depth of all processed nodes in current branch and bound run (excluding probing nodes) * * @return the maximal depth of all processed nodes in current branch and bound run (excluding probing nodes) * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT int SCIPgetMaxDepth( SCIP* scip /**< SCIP data structure */ ); /** gets maximal depth of all processed nodes over all branch and bound runs * * @return the maximal depth of all processed nodes over all branch and bound runs * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT int SCIPgetMaxTotalDepth( SCIP* scip /**< SCIP data structure */ ); /** gets total number of backtracks, i.e. number of times, the new node was selected from the leaves queue * * @return the total number of backtracks, i.e. number of times, the new node was selected from the leaves queue * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT SCIP_Longint SCIPgetNBacktracks( SCIP* scip /**< SCIP data structure */ ); /** gets total number of active constraints at the current node * * @return the total number of active constraints at the current node * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING */ SCIP_EXPORT int SCIPgetNActiveConss( SCIP* scip /**< SCIP data structure */ ); /** gets total number of enabled constraints at the current node * * @return the total number of enabled constraints at the current node * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING */ SCIP_EXPORT int SCIPgetNEnabledConss( SCIP* scip /**< SCIP data structure */ ); /** gets average dual bound of all unprocessed nodes for original problem */ SCIP_EXPORT SCIP_Real SCIPgetAvgDualbound( SCIP* scip /**< SCIP data structure */ ); /** gets average lower (dual) bound of all unprocessed nodes in transformed problem * * @return the average lower (dual) bound of all unprocessed nodes in transformed problem * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgLowerbound( SCIP* scip /**< SCIP data structure */ ); /** gets global dual bound * * @return the global dual bound * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetDualbound( SCIP* scip /**< SCIP data structure */ ); /** gets global lower (dual) bound in transformed problem * * @return the global lower (dual) bound in transformed problem * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetLowerbound( SCIP* scip /**< SCIP data structure */ ); /** gets dual bound of the root node for the original problem * * @return the dual bound of the root node for the original problem * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetDualboundRoot( SCIP* scip /**< SCIP data structure */ ); /** gets lower (dual) bound in transformed problem of the root node * * @return the lower (dual) bound in transformed problem of the root node * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetLowerboundRoot( SCIP* scip /**< SCIP data structure */ ); /** gets dual bound for the original problem obtained by the first LP solve at the root node * * @return the dual bound for the original problem of the first LP solve at the root node * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetFirstLPDualboundRoot( SCIP* scip /**< SCIP data structure */ ); /** gets lower (dual) bound in transformed problem obtained by the first LP solve at the root node * * @return the lower (dual) bound in transformed problem obtained by first LP solve at the root node * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetFirstLPLowerboundRoot( SCIP* scip /**< SCIP data structure */ ); /** the primal bound of the very first solution */ SCIP_EXPORT SCIP_Real SCIPgetFirstPrimalBound( SCIP* scip /**< SCIP data structure */ ); /** gets global primal bound (objective value of best solution or user objective limit) for the original problem * * @return the global primal bound (objective value of best solution or user objective limit) for the original problem * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT SCIP_Real SCIPgetPrimalbound( SCIP* scip /**< SCIP data structure */ ); /** gets global upper (primal) bound in transformed problem (objective value of best solution or user objective limit) * * @return the global upper (primal) bound in transformed problem (objective value of best solution or user objective limit) * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT SCIP_Real SCIPgetUpperbound( SCIP* scip /**< SCIP data structure */ ); /** gets global cutoff bound in transformed problem: a sub problem with lower bound larger than the cutoff * cannot contain a better feasible solution; usually, this bound is equal to the upper bound, but if the * objective value is always integral, the cutoff bound is (nearly) one less than the upper bound; * additionally, due to objective function domain propagation, the cutoff bound can be further reduced * * @return global cutoff bound in transformed problem * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT SCIP_Real SCIPgetCutoffbound( SCIP* scip /**< SCIP data structure */ ); /** updates the cutoff bound * * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes. * * @note using this method in the solving stage can lead to an erroneous SCIP solving status; in particular, * if a solution not respecting the cutoff bound was found before installing a cutoff bound which * renders the remaining problem infeasible, this solution may be reported as optimal * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * * @note the given cutoff bound has to better or equal to known one (SCIPgetCutoffbound()) */ SCIP_EXPORT SCIP_RETCODE SCIPupdateCutoffbound( SCIP* scip, /**< SCIP data structure */ SCIP_Real cutoffbound /**< new cutoff bound */ ); /** returns whether the current primal bound is justified with a feasible primal solution; if not, the primal bound * was set from the user as objective limit * * @return TRUE if the current primal bound is justified with a feasible primal solution, otherwise FALSE * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT SCIP_Bool SCIPisPrimalboundSol( SCIP* scip /**< SCIP data structure */ ); /** gets current gap |(primalbound - dualbound)/min(|primalbound|,|dualbound|)| if both bounds have same sign, * or infinity, if they have opposite sign * * @return the current gap |(primalbound - dualbound)/min(|primalbound|,|dualbound|)| if both bounds have same sign, * or infinity, if they have opposite sign * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetGap( SCIP* scip /**< SCIP data structure */ ); /** gets current gap |(upperbound - lowerbound)/min(|upperbound|,|lowerbound|)| in transformed problem if both bounds * have same sign, or infinity, if they have opposite sign * * @return current gap |(upperbound - lowerbound)/min(|upperbound|,|lowerbound|)| in transformed problem if both bounds * have same sign, or infinity, if they have opposite sign * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetTransGap( SCIP* scip /**< SCIP data structure */ ); /** gets number of feasible primal solutions found so far * * @return the number of feasible primal solutions found so far * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT SCIP_Longint SCIPgetNSolsFound( SCIP* scip /**< SCIP data structure */ ); /** gets number of feasible primal solutions respecting the objective limit found so far * * @return the number of feasible primal solutions respecting the objective limit found so far * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_INIT * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT SCIP_Longint SCIPgetNLimSolsFound( SCIP* scip /**< SCIP data structure */ ); /** gets number of feasible primal solutions found so far, that improved the primal bound at the time they were found * * @return the number of feasible primal solutions found so far, that improved the primal bound at the time they were found * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE */ SCIP_EXPORT SCIP_Longint SCIPgetNBestSolsFound( SCIP* scip /**< SCIP data structure */ ); /** gets the average pseudo cost value for the given direction over all variables * * @return the average pseudo cost value for the given direction over all variables * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgPseudocost( SCIP* scip, /**< SCIP data structure */ SCIP_Real solvaldelta /**< difference of variable's new LP value - old LP value */ ); /** gets the average pseudo cost value for the given direction over all variables, * only using the pseudo cost information of the current run * * @return the average pseudo cost value for the given direction over all variables, * only using the pseudo cost information of the current run * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgPseudocostCurrentRun( SCIP* scip, /**< SCIP data structure */ SCIP_Real solvaldelta /**< difference of variable's new LP value - old LP value */ ); /** gets the average number of pseudo cost updates for the given direction over all variables * * @return the average number of pseudo cost updates for the given direction over all variables * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgPseudocostCount( SCIP* scip, /**< SCIP data structure */ SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */ ); /** gets the average number of pseudo cost updates for the given direction over all variables, * only using the pseudo cost information of the current run * * @return the average number of pseudo cost updates for the given direction over all variables, * only using the pseudo cost information of the current run * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgPseudocostCountCurrentRun( SCIP* scip, /**< SCIP data structure */ SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */ ); /** gets the number of pseudo cost updates for the given direction over all variables * * @return the number of pseudo cost updates for the given direction over all variables * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetPseudocostCount( SCIP* scip, /**< SCIP data structure */ SCIP_BRANCHDIR dir, /**< branching direction (downwards, or upwards) */ SCIP_Bool onlycurrentrun /**< use only history of current run? */ ); /** gets the average pseudo cost score value over all variables, assuming a fractionality of 0.5 * * @return the average pseudo cost score value over all variables, assuming a fractionality of 0.5 * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgPseudocostScore( SCIP* scip /**< SCIP data structure */ ); /** returns the variance of pseudo costs for all variables in the requested direction * * @return the variance of pseudo costs for all variables in the requested direction * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetPseudocostVariance( SCIP* scip, /**< SCIP data structure */ SCIP_BRANCHDIR branchdir, /**< the branching direction, up or down */ SCIP_Bool onlycurrentrun /**< use only history of current run? */ ); /** gets the average pseudo cost score value over all variables, assuming a fractionality of 0.5, * only using the pseudo cost information of the current run * * @return the average pseudo cost score value over all variables, assuming a fractionality of 0.5, * only using the pseudo cost information of the current run * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgPseudocostScoreCurrentRun( SCIP* scip /**< SCIP data structure */ ); /** gets the average conflict score value over all variables */ SCIP_EXPORT SCIP_Real SCIPgetAvgConflictScore( SCIP* scip /**< SCIP data structure */ ); /** gets the average conflict score value over all variables, only using the conflict information of the current run * * @return the average conflict score value over all variables, only using the conflict information of the current run * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgConflictScoreCurrentRun( SCIP* scip /**< SCIP data structure */ ); /** gets the average inference score value over all variables * * @return the average inference score value over all variables * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgConflictlengthScore( SCIP* scip /**< SCIP data structure */ ); /** gets the average conflictlength score value over all variables, only using the conflictlength information of the * current run * * @return the average conflictlength score value over all variables, only using the conflictlength information of the * current run * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgConflictlengthScoreCurrentRun( SCIP* scip /**< SCIP data structure */ ); /** returns the average number of inferences found after branching in given direction over all variables * * @return the average number of inferences found after branching in given direction over all variables * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgInferences( SCIP* scip, /**< SCIP data structure */ SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */ ); /** returns the average number of inferences found after branching in given direction over all variables, * only using the inference information of the current run * * @return the average number of inferences found after branching in given direction over all variables, * only using the inference information of the current run * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgInferencesCurrentRun( SCIP* scip, /**< SCIP data structure */ SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */ ); /** gets the average inference score value over all variables * * @return the average inference score value over all variables * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgInferenceScore( SCIP* scip /**< SCIP data structure */ ); /** gets the average inference score value over all variables, only using the inference information of the * current run * * @return the average inference score value over all variables, only using the inference information of the * current run * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgInferenceScoreCurrentRun( SCIP* scip /**< SCIP data structure */ ); /** returns the average number of cutoffs found after branching in given direction over all variables * * @return the average number of cutoffs found after branching in given direction over all variables * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgCutoffs( SCIP* scip, /**< SCIP data structure */ SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */ ); /** returns the average number of cutoffs found after branching in given direction over all variables, * only using the cutoff information of the current run * * @return the average number of cutoffs found after branching in given direction over all variables, * only using the cutoff information of the current run * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgCutoffsCurrentRun( SCIP* scip, /**< SCIP data structure */ SCIP_BRANCHDIR dir /**< branching direction (downwards, or upwards) */ ); /** gets the average cutoff score value over all variables * * @return the average cutoff score value over all variables * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgCutoffScore( SCIP* scip /**< SCIP data structure */ ); /** gets the average cutoff score value over all variables, only using the cutoff information of the current run * * @return the average cutoff score value over all variables, only using the cutoff information of the current run * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetAvgCutoffScoreCurrentRun( SCIP* scip /**< SCIP data structure */ ); /** gets deterministic time number of LPs solved so far * * @return the total number of LPs solved so far * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_Real SCIPgetDeterministicTime( SCIP* scip /**< SCIP data structure */ ); /** outputs original problem to file stream * * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes. * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMING * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * - \ref SCIP_STAGE_FREETRANS */ SCIP_EXPORT SCIP_RETCODE SCIPprintOrigProblem( SCIP* scip, /**< SCIP data structure */ FILE* file, /**< output file (or NULL for standard output) */ const char* extension, /**< file format (or NULL for default CIP format)*/ SCIP_Bool genericnames /**< using generic variable and constraint names? */ ); /** outputs transformed problem of the current node to file stream * * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes. * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * - \ref SCIP_STAGE_FREETRANS */ SCIP_EXPORT SCIP_RETCODE SCIPprintTransProblem( SCIP* scip, /**< SCIP data structure */ FILE* file, /**< output file (or NULL for standard output) */ const char* extension, /**< file format (or NULL for default CIP format)*/ SCIP_Bool genericnames /**< using generic variable and constraint names? */ ); /** outputs status statistics * * @note If limits have been changed between the solution and the call to this function, the status is recomputed and * thus may to correspond to the original status. * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_INIT * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintStatusStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs timing statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintTimingStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs statistics for original problem * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintOrigProblemStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file (or NULL for standard output) */ ); /** outputs statistics for transformed problem * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintTransProblemStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs presolver statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintPresolverStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs constraint statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintConstraintStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs constraint timing statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintConstraintTimingStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs propagator statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintPropagatorStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs conflict statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintConflictStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs separator statistics * * Columns: * - RootCalls: The number of calls that happened at the root. * - FoundCuts: The total number of cuts generated by the separators. * Note: Cutpool-FoundCuts \f$= \sum_{i=1}^nsepas ( Foundcuts_i - DirectAdd_i )\f$. * - ViaPoolAdd: The total number of cuts added to the sepastore from the cutpool. * - DirectAdd: The total number of cuts added directly to the sepastore from the separator. * - Applied: The sum of all cuts from the separator that were applied to the LP. * - ViaPoolApp: The number of cuts that entered the sepastore from the cutpool that were applied to the LP. * - DirectApp: The number of cuts that entered the sepastore directly and were applied to the LP. * * The number of cuts ViaPoolAdd + Directly should be equal to the number of cuts Filtered + Forced + Selected in the * cutselector statistics. * * @note The following edge case may lead to over or undercounting of statistics: When SCIPapplyCutsProbing() is * called, cuts are counted for the cut selection statistics, but not for the separator statistics. This * happens, e.g., in the default plugin prop_obbt.c. * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintSeparatorStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs cutselector statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintCutselectorStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs pricer statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintPricerStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs branching rule statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintBranchruleStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs heuristics statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintHeuristicStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs compression statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintCompressionStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs LP statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintLPStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs NLP statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintNLPStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs relaxator statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintRelaxatorStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs tree statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintTreeStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs root statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintRootStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs solution statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintSolutionStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs concurrent solver statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintConcsolverStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs Benders' decomposition statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintBendersStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs expression handler statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintExpressionHandlerStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs NLPI statistics * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT void SCIPprintNLPIStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file */ ); /** outputs solving statistics * * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes. * * @note If limits have been changed between the solution and the call to this function, the status is recomputed and * thus may to correspond to the original status. * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_INIT * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_RETCODE SCIPprintStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file (or NULL for standard output) */ ); /** outputs reoptimization statistics * * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes. * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_INIT * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_RETCODE SCIPprintReoptStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file (or NULL for standard output) */ ); /** outputs history statistics about branchings on variables * * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes. * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_INIT * - \ref SCIP_STAGE_PROBLEM * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT SCIP_RETCODE SCIPprintBranchingStatistics( SCIP* scip, /**< SCIP data structure */ FILE* file /**< output file (or NULL for standard output) */ ); /** outputs node information display line * * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes. * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_SOLVING */ SCIP_EXPORT SCIP_RETCODE SCIPprintDisplayLine( SCIP* scip, /**< SCIP data structure */ FILE* file, /**< output file (or NULL for standard output) */ SCIP_VERBLEVEL verblevel, /**< minimal verbosity level to actually display the information line */ SCIP_Bool endline /**< should the line be terminated with a newline symbol? */ ); /** gets total number of implications between variables that are stored in the implication graph * * @return the total number of implications between variables that are stored in the implication graph * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED */ SCIP_EXPORT int SCIPgetNImplications( SCIP* scip /**< SCIP data structure */ ); /** stores conflict graph of binary variables' implications into a file, which can be used as input for the DOT tool * * @return \ref SCIP_OKAY is returned if everything worked. Otherwise a suitable error code is passed. See \ref * SCIP_Retcode "SCIP_RETCODE" for a complete list of error codes. * * @pre This method can be called if SCIP is in one of the following stages: * - \ref SCIP_STAGE_TRANSFORMED * - \ref SCIP_STAGE_INITPRESOLVE * - \ref SCIP_STAGE_PRESOLVING * - \ref SCIP_STAGE_EXITPRESOLVE * - \ref SCIP_STAGE_PRESOLVED * - \ref SCIP_STAGE_INITSOLVE * - \ref SCIP_STAGE_SOLVING * - \ref SCIP_STAGE_SOLVED * - \ref SCIP_STAGE_EXITSOLVE * * @deprecated because binary implications are now stored as cliques */ SCIP_EXPORT SCIP_DEPRECATED SCIP_RETCODE SCIPwriteImplicationConflictGraph( SCIP* scip, /**< SCIP data structure */ const char* filename /**< file name, or NULL for stdout */ ); /** update statistical information when a new solution was found */ SCIP_EXPORT void SCIPstoreSolutionGap( SCIP* scip /**< SCIP data structure */ ); /**@} */ #ifdef __cplusplus } #endif #endif