summaryrefslogtreecommitdiff
path: root/newstructure/thirdparty/linux/include/coin/CbcSolver.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'newstructure/thirdparty/linux/include/coin/CbcSolver.hpp')
-rw-r--r--newstructure/thirdparty/linux/include/coin/CbcSolver.hpp447
1 files changed, 0 insertions, 447 deletions
diff --git a/newstructure/thirdparty/linux/include/coin/CbcSolver.hpp b/newstructure/thirdparty/linux/include/coin/CbcSolver.hpp
deleted file mode 100644
index 34052e1..0000000
--- a/newstructure/thirdparty/linux/include/coin/CbcSolver.hpp
+++ /dev/null
@@ -1,447 +0,0 @@
-/* $Id: CbcSolver.hpp 1998 2013-12-19 18:11:05Z forrest $ */
-// Copyright (C) 2007, International Business Machines
-// Corporation and others. All Rights Reserved.
-// This code is licensed under the terms of the Eclipse Public License (EPL).
-
-
-/*! \file CbcSolver.hpp
- \brief Defines CbcSolver, the proposed top-level class for the new-style
- cbc solver.
-
- This class is currently an orphan. With the removal of all code flagged
- with the NEW_STYLE_SOLVER, this class is never instantiated (and cannot
- be instantiated). It is available to be coopted as a top-level object
- wrapping the current CbcMain0 and CbcMain1, should that appear to be a
- desireable path forward. -- lh, 091211 --
-*/
-
-#ifndef CbcSolver_H
-#define CbcSolver_H
-
-#include <string>
-#include <vector>
-#include "CoinMessageHandler.hpp"
-#include "OsiClpSolverInterface.hpp"
-
-#if CBC_OTHER_SOLVER==1
-#include "OsiCpxSolverInterface.hpp"
-#endif
-
-#include "CbcModel.hpp"
-#include "CbcOrClpParam.hpp"
-
-class CbcUser;
-class CbcStopNow;
-class CglCutGenerator;
-
-//#############################################################################
-
-/*! \brief This allows the use of the standalone solver in a flexible manner.
-
- It has an original OsiClpSolverInterface and CbcModel which it can use
- repeatedly, e.g., to get a heuristic solution and then start again.
-
- So I [jjf] will need a primitive scripting language which can then call
- solve and manipulate solution value and solution arrays.
-
- Also provides for user callback functions. Currently two ideas in
- gestation, CbcUser and CbcStopNow. The latter seems limited to deciding
- whether or not to stop. The former seems completely general, with a notion
- of importing and exporting, and a `solve', which should be interpreted as
- `do whatever this user function does'.
-
- Parameter initialisation is at last centralised in fillParameters().
-*/
-
-class CbcSolver {
-
-public:
- ///@name Solve method
- //@{
- /** This takes a list of commands, does "stuff" and returns
- returnMode -
- 0 model and solver untouched - babModel updated
- 1 model updated - just with solution basis etc
- 2 model updated i.e. as babModel (babModel NULL) (only use without preprocessing)
- */
- int solve(int argc, const char * argv[], int returnMode);
- /** This takes a list of commands, does "stuff" and returns
- returnMode -
- 0 model and solver untouched - babModel updated
- 1 model updated - just with solution basis etc
- 2 model updated i.e. as babModel (babModel NULL) (only use without preprocessing)
- */
- int solve(const char * input, int returnMode);
- //@}
- ///@name Constructors and destructors etc
- //@{
- /// Default Constructor
- CbcSolver();
-
- /// Constructor from solver
- CbcSolver(const OsiClpSolverInterface &);
-
- /// Constructor from model
- CbcSolver(const CbcModel &);
-
- /** Copy constructor .
- */
- CbcSolver(const CbcSolver & rhs);
-
- /// Assignment operator
- CbcSolver & operator=(const CbcSolver& rhs);
-
- /// Destructor
- ~CbcSolver ();
- /// Fill with standard parameters
- void fillParameters();
- /*! \brief Set default values in solvers from parameters
-
- Misleading. The current code actually reads default values from
- the underlying solvers and installs them as default values for a subset of
- parameters in #parameters_.
- */
- void fillValuesInSolver();
- /// Add user function
- void addUserFunction(CbcUser * function);
- /// Set user call back
- void setUserCallBack(CbcStopNow * function);
- /// Add cut generator
- void addCutGenerator(CglCutGenerator * generator);
- //@}
- ///@name miscellaneous methods to line up with old
- //@{
- // analyze model
- int * analyze(OsiClpSolverInterface * solverMod, int & numberChanged, double & increment,
- bool changeInt, CoinMessageHandler * generalMessageHandler);
- /** 1 - add heuristics to model
- 2 - do heuristics (and set cutoff and best solution)
- 3 - for miplib test so skip some
- (out model later)
- */
- //int doHeuristics(CbcModel * model, int type);
- /** Updates model_ from babModel_ according to returnMode
- returnMode -
- 0 model and solver untouched - babModel updated
- 1 model updated - just with solution basis etc
- 2 model updated i.e. as babModel (babModel NULL) (only use without preprocessing)
- */
- void updateModel(ClpSimplex * model2, int returnMode);
- //@}
- ///@name useful stuff
- //@{
- /// Get int value
- int intValue(CbcOrClpParameterType type) const;
- /// Set int value
- void setIntValue(CbcOrClpParameterType type, int value);
- /// Get double value
- double doubleValue(CbcOrClpParameterType type) const;
- /// Set double value
- void setDoubleValue(CbcOrClpParameterType type, double value);
- /// User function (NULL if no match)
- CbcUser * userFunction(const char * name) const;
- /// Return original Cbc model
- inline CbcModel * model() {
- return &model_;
- }
- /// Return updated Cbc model
- inline CbcModel * babModel() {
- return babModel_;
- }
- /// Number of userFunctions
- inline int numberUserFunctions() const {
- return numberUserFunctions_;
- }
- /// User function array
- inline CbcUser ** userFunctionArray() const {
- return userFunction_;
- }
- /// Copy of model on initial load (will contain output solutions)
- inline OsiClpSolverInterface * originalSolver() const {
- return originalSolver_;
- }
- /// Copy of model on initial load
- inline CoinModel * originalCoinModel() const {
- return originalCoinModel_;
- }
- /// Copy of model on initial load (will contain output solutions)
- void setOriginalSolver(OsiClpSolverInterface * originalSolver);
- /// Copy of model on initial load
- void setOriginalCoinModel(CoinModel * originalCoinModel);
- /// Number of cutgenerators
- inline int numberCutGenerators() const {
- return numberCutGenerators_;
- }
- /// Cut generator array
- inline CglCutGenerator ** cutGeneratorArray() const {
- return cutGenerator_;
- }
- /// Start time
- inline double startTime() const {
- return startTime_;
- }
- /// Whether to print to std::cout
- inline void setPrinting(bool onOff) {
- noPrinting_ = !onOff;
- }
- /// Where to start reading commands
- inline void setReadMode(int value) {
- readMode_ = value;
- }
- //@}
-private:
- ///@name Private member data
- //@{
-
- /// Reference model
- CbcModel model_;
-
- /// Updated model
- CbcModel * babModel_;
-
- /// User functions
- CbcUser ** userFunction_;
- /** Status of user functions
- 0 - not used
- 1 - needs cbc_load
- 2 - available - data in coinModel
- 3 - data loaded - can do cbc_save
- */
- int * statusUserFunction_;
- /// Copy of model on initial load (will contain output solutions)
- OsiClpSolverInterface * originalSolver_;
- /// Copy of model on initial load
- CoinModel * originalCoinModel_;
- /// Cut generators
- CglCutGenerator ** cutGenerator_;
- /// Number of user functions
- int numberUserFunctions_;
- /// Number of cut generators
- int numberCutGenerators_;
- /// Stop now stuff
- CbcStopNow * callBack_;
- /// Cpu time at instantiation
- double startTime_;
- /// Parameters and values
- CbcOrClpParam * parameters_;
- /// Number of parameters
- int numberParameters_ ;
- /// Whether to do miplib test
- bool doMiplib_;
- /// Whether to print to std::cout
- bool noPrinting_;
- /// Where to start reading commands
- int readMode_;
- //@}
-};
-//#############################################################################
-
-/// Structure to hold useful arrays
-typedef struct {
- // Priorities
- int * priorities_;
- // SOS priorities
- int * sosPriority_;
- // Direction to branch first
- int * branchDirection_;
- // Input solution
- double * primalSolution_;
- // Down pseudo costs
- double * pseudoDown_;
- // Up pseudo costs
- double * pseudoUp_;
-} CbcSolverUsefulData2;
-
-//#############################################################################
-
-/**
- The CbcSolver class was taken out at a 9/12/09 meeting
- This is a feeble replacement.
- At present everything is public
-*/
-class CbcSolverUsefulData {
-
-public:
- ///@name Constructors and destructors etc
- //@{
- /// Default Constructor
- CbcSolverUsefulData();
-
- /** Copy constructor .
- */
- CbcSolverUsefulData(const CbcSolverUsefulData & rhs);
-
- /// Assignment operator
- CbcSolverUsefulData & operator=(const CbcSolverUsefulData& rhs);
-
- /// Destructor
- ~CbcSolverUsefulData ();
- //@}
-
- ///@name Member data
- //@{
- // For time
- double totalTime_;
- // Parameters
- CbcOrClpParam parameters_[CBCMAXPARAMETERS];
- // Printing
- bool noPrinting_;
- // Whether to use signal handler
- bool useSignalHandler_;
- // Number of Parameters
- int numberParameters_;
- // Default pump tuning
- int initialPumpTune_;
- //@}
-};
-/// And this uses it
-// When we want to load up CbcModel with options first
-void CbcMain0 (CbcModel & babSolver,CbcSolverUsefulData & solverData);
-int CbcMain1 (int argc, const char *argv[], CbcModel & babSolver, int (CbcModel * currentSolver, int whereFrom),CbcSolverUsefulData & solverData);
-
-//#############################################################################
-
-/*! \brief A class to allow the use of unknown user functionality
-
- For example, access to a modelling language (CbcAmpl).
-*/
-class CbcUser {
-
-public:
- ///@name import/export methods
- //@{
- /*! \brief Import - gets full command arguments
-
- \return
- - -1 - no action
- - 0 - data read in without error
- - 1 - errors
- */
- virtual int importData(CbcSolver * /*model*/, int & /*argc*/, char ** /*argv[]*/) {
- return -1;
- }
-
- /*! \brief Export
-
- Values for mode:
- - 1 OsiClpSolver
- - 2 CbcModel
- - add 10 if infeasible from odd situation
- */
- virtual void exportSolution(CbcSolver * /*model*/,
- int /*mode*/, const char * /*message*/ = NULL) {}
-
- /// Export Data (i.e. at very end)
- virtual void exportData(CbcSolver * /*model*/) {}
-
- /// Get useful stuff
- virtual void fillInformation(CbcSolver * /*model*/,
- CbcSolverUsefulData & /*info*/) {}
- //@}
-
- ///@name usage methods
- //@{
- /// CoinModel if valid
- inline CoinModel *coinModel() const {
- return coinModel_;
- }
- /// Other info - needs expanding
- virtual void * stuff() {
- return NULL;
- }
- /// Name
- inline std::string name() const {
- return userName_;
- }
- /// Solve (whatever that means)
- virtual void solve(CbcSolver * model, const char * options) = 0;
- /// Returns true if function knows about option
- virtual bool canDo(const char * options) = 0;
- //@}
-
- ///@name Constructors and destructors etc
- //@{
- /// Default Constructor
- CbcUser();
-
- /// Copy constructor
- CbcUser(const CbcUser & rhs);
-
- /// Assignment operator
- CbcUser & operator=(const CbcUser& rhs);
-
- /// Clone
- virtual CbcUser * clone() const = 0;
-
- /// Destructor
- virtual ~CbcUser ();
- //@}
-
-protected:
- ///@name Private member data
- //@{
-
- /// CoinModel
- CoinModel * coinModel_;
-
- /// Name of user function
- std::string userName_;
-
-//@}
-};
-//#############################################################################
-
-/*! \brief Support the use of a call back class to decide whether to stop
-
- Definitely under construction.
-*/
-
-class CbcStopNow {
-
-public:
- ///@name Decision methods
- //@{
- /*! \brief Import
-
- Values for whereFrom:
- - 1 after initial solve by dualsimplex etc
- - 2 after preprocessing
- - 3 just before branchAndBound (so user can override)
- - 4 just after branchAndBound (before postprocessing)
- - 5 after postprocessing
- - 6 after a user called heuristic phase
-
- \return 0 if good
- nonzero return code to stop
- */
- virtual int callBack(CbcModel * /*currentSolver*/, int /*whereFrom*/) {
- return 0;
- }
- //@}
-
- ///@name Constructors and destructors etc
- //@{
- /// Default Constructor
- CbcStopNow();
-
- /** Copy constructor .
- */
- CbcStopNow(const CbcStopNow & rhs);
-
- /// Assignment operator
- CbcStopNow & operator=(const CbcStopNow& rhs);
-
- /// Clone
- virtual CbcStopNow * clone() const;
-
- /// Destructor
- virtual ~CbcStopNow ();
- //@}
-
-private:
- ///@name Private member data
- //@{
-//@}
-};
-#endif
-