source: branches/sandbox/Cbc/src/CbcBranchAllDifferent.hpp @ 1389

Last change on this file since 1389 was 1357, checked in by coin, 10 years ago

run 'astyle -A4 -p' and dos2unix

File size: 1.4 KB
Line 
1// Edwin 11/13/2009-- carved out of CbcBranchCut
2#ifndef CbcBranchAllDifferent_H
3#define CbcBranchAllDifferent_H
4
5#include "CbcBranchBase.hpp"
6#include "OsiRowCut.hpp"
7#include "CoinPackedMatrix.hpp"
8#include "CbcBranchCut.hpp"
9
10/** Define a branch class that branches so that it is only satsified if all
11    members have different values
12    So cut is x <= y-1 or x >= y+1
13*/
14
15
16class CbcBranchAllDifferent : public CbcBranchCut {
17
18public:
19
20    // Default Constructor
21    CbcBranchAllDifferent ();
22
23    /** Useful constructor - passed set of integer variables which must all be different
24    */
25    CbcBranchAllDifferent (CbcModel * model, int number, const int * which);
26
27    // Copy constructor
28    CbcBranchAllDifferent ( const CbcBranchAllDifferent &);
29
30    /// Clone
31    virtual CbcObject * clone() const;
32
33    // Assignment operator
34    CbcBranchAllDifferent & operator=( const CbcBranchAllDifferent& rhs);
35
36    // Destructor
37    ~CbcBranchAllDifferent ();
38
39    /// Infeasibility - large is 0.5
40    virtual double infeasibility(const OsiBranchingInformation * info,
41                                 int &preferredWay) const;
42
43    /// Creates a branching object
44    virtual CbcBranchingObject * createCbcBranch(OsiSolverInterface * solver, const OsiBranchingInformation * info, int way) ;
45
46
47protected:
48    /// data
49
50    /// Number of entries
51    int numberInSet_;
52    /// Which variables
53    int * which_;
54};
55#endif
Note: See TracBrowser for help on using the repository browser.