blob: c098c9be423057fce27093320ca0ef3b49234f81 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
// (C) Copyright Carnegie Mellon University 2005
// All Rights Reserved.
// This code is published under the Eclipse Public License.
//
// Authors :
// P. Bonami, Carnegie Mellon University
//
// Date : 05/26/2005
#ifndef BonOACutGenerator2_HPP
#define BonOACutGenerator2_HPP
#include "BonOaDecBase.hpp"
namespace Bonmin
{
/** Class to perform OA in its classical form.*/
class OACutGenerator2 : public OaDecompositionBase
{
public:
/// Constructor with basic setup
OACutGenerator2(BabSetupBase & b);
/// Copy constructor
OACutGenerator2(const OACutGenerator2 ©)
:
OaDecompositionBase(copy),
subMip_(new SubMipSolver (*copy.subMip_))
{}
/// Destructor
~OACutGenerator2();
void setStrategy(const CbcStrategy & strategy)
{
parameters_.setStrategy(strategy);
}
virtual CglCutGenerator * clone() const
{
return new OACutGenerator2(*this);
}
/** Register OA options.*/
static void registerOptions(Ipopt::SmartPtr<Bonmin::RegisteredOptions> roptions);
protected:
/// virtual method which performs the OA algorithm by modifying lp and nlp.
virtual double performOa(OsiCuts & cs, solverManip &lpManip,
BabInfo * babInfo, double &cutoff, const CglTreeInfo & info) const;
/// virutal method to decide if local search is performed
virtual bool doLocalSearch(BabInfo * babInfo) const;
private:
SubMipSolver * subMip_;
};
}
#endif
|