FixPointConstructors.cpp
Go to the documentation of this file.
1 /* $Id: FixPointConstructors.cpp 1251 2018-04-02 12:14:08Z pbelotti $
2  *
3  * Name: FixPointConstructors.cpp
4  * Author: Pietro Belotti
5  * Purpose: fixpoint bound tightener -- constructors
6  *
7  * (C) Pietro Belotti, 2010.
8  * This file is licensed under the Eclipse Public License (EPL)
9  */
10 
11 #include "CouenneFixPoint.hpp"
12 #include <string>
13 
14 using namespace Couenne;
15 
19  problem_ (p),
20  firstCall_ (true),
21  CPUtime_ (0.),
22  nTightened_ (0),
23  perfIndicator_ (p, "Fixed Point LP"),
24  levelStop_ (0) {
25 
26  std::string s;
27  options -> GetStringValue ("fixpoint_bt_model", s, "couenne.");
28  extendedModel_ = (s == "extended");
29  options -> GetIntegerValue ("fixpoint_bt", levelStop_, "couenne.");
30 }
31 
32 
35  extendedModel_ (rhs.extendedModel_),
36  problem_ (rhs.problem_),
37  firstCall_ (rhs.firstCall_),
38  CPUtime_ (rhs.CPUtime_),
39  nTightened_ (rhs.nTightened_),
40  perfIndicator_ (rhs.perfIndicator_),
41  levelStop_ (rhs.levelStop_) {}
42 
43 
46 
47 
50 
51  roptions -> AddLowerBoundedIntegerOption
52  ("fixpoint_bt",
53  "The frequency (in terms of nodes) at which Fix Point Bound Tightening is performed.",
54  -99, 0,
55  "A frequency of 0 (default) means these cuts are never generated. "
56  "Any positive number n instructs Couenne to generate them at every n nodes of the B&B tree. "
57  "A negative number -n means that generation should be attempted at the root node, and if successful it can be repeated at every n nodes, otherwise it is stopped altogether."
58  );
59 
60  roptions -> AddStringOption2
61  ("fixpoint_bt_model",
62  "Choose whether to add an extended fixpoint LP model or a more compact one.",
63  "compact",
64  "extended", "Extended model with variables for lower/upper bounds of right-hand sides (see paper by Belotti, Cafieri, Lee, Liberti)",
65  "compact", "Compact equivalent model obtained by projecting lower/upper bounds of rhs",
66  "The \"extended\" option is for debugging purposes; the compact formulation is equivalent and this option should be used");
67 }
CouenneFixPoint(CouenneProblem *, const Ipopt::SmartPtr< Ipopt::OptionsList >)
constructor
Cut Generator for FBBT fixpoint.
int levelStop_
Level at which to stop.
Class for MINLP problems with symbolic information.
void fint fint fint fint fint fint fint fint fint fint real real real real real real real real * s
static void registerOptions(Ipopt::SmartPtr< Bonmin::RegisteredOptions > roptions)
Add list of options to be read from file.
bool extendedModel_
should we use an extended model or a more compact one?