source: trunk/Couenne/src/bound_tightening/CouenneFixPoint.hpp @ 786

Last change on this file since 786 was 786, checked in by pbelotti, 9 years ago

attempt at fixing exprMul extra cut. Introducing performance indicator for BT (used in Fixed Point LP).

  • Property svn:keywords set to Author Date Id Revision
File size: 2.0 KB
Line 
1/* $Id: CouenneFixPoint.hpp 786 2011-11-17 04:10:29Z pbelotti $
2 *
3 * Name:    CouenneFixPoint.hpp
4 * Author:  Pietro Belotti
5 * Purpose: A bound tightener based on fixpoint computation
6 *
7 * (C) Pietro Belotti, 2010.
8 * This file is licensed under the Eclipse Public License (EPL)
9 */
10
11#ifndef COUENNEFIXPOINT_HPP
12#define COUENNEFIXPOINT_HPP
13
14#include "BonRegisteredOptions.hpp"
15
16#include "BonOaDecBase.hpp"
17#include "CglCutGenerator.hpp"
18#include "OsiRowCut.hpp"
19#include "OsiSolverInterface.hpp"
20
21#include "CouenneBTPerfIndicator.hpp"
22
23namespace Couenne {
24
25  class CouenneProblem;
26
27  /// Cut Generator for FBBT fixpoint
28
29  class CouenneFixPoint: public CglCutGenerator {
30
31  public:
32
33    /// constructor
34    CouenneFixPoint (CouenneProblem *,
35                     const Ipopt::SmartPtr<Ipopt::OptionsList>);
36
37    /// copy constructor
38    CouenneFixPoint  (const CouenneFixPoint &);
39
40    /// destructor
41    ~CouenneFixPoint ();
42
43    /// clone method (necessary for the abstract CglCutGenerator class)
44    CouenneFixPoint *clone () const
45    {return new CouenneFixPoint (*this);}
46
47    /// the main CglCutGenerator
48    void generateCuts (const OsiSolverInterface &, 
49                       OsiCuts &, 
50                       const CglTreeInfo = CglTreeInfo ()) const;
51
52    /// Add list of options to be read from file
53    static void registerOptions (Ipopt::SmartPtr <Bonmin::RegisteredOptions> roptions);
54
55  protected:
56
57    /// should we use an extended model or a more compact one?
58    bool extendedModel_;
59
60    /// pointer to the CouenneProblem representation
61    CouenneProblem *problem_;
62
63    /// Is this the first call?
64    mutable bool firstCall_;
65
66    /// CPU time
67    mutable double CPUtime_;
68
69    /// Number of actual runs
70    mutable int nRuns_;
71
72    /// Number of bounds tightened
73    mutable int nTightened_;
74
75    /// Create a single cut
76    void createRow (int, int,
77                    int,
78                    OsiSolverInterface *,
79                    const int    *,
80                    const double *,
81                    const double,
82                    const int,
83                    bool,
84                    int, int) const;
85
86    /// Performance indicator
87    CouenneBTPerfIndicator perfIndicator_;
88  };
89}
90
91#endif
Note: See TracBrowser for help on using the repository browser.