Couenne  0.5.8
CouenneProblemElem.hpp
Go to the documentation of this file.
1 /* $Id: CouenneProblemElem.hpp 910 2012-10-27 13:14:44Z pbelotti $
2  *
3  * Name: CouenneProblemElem.hpp
4  * Author: Pietro Belotti
5  * Purpose: define the classes used by class CouenneProblem
6  *
7  * (C) Carnegie-Mellon University, 2006-08.
8  * This file is licensed under the Eclipse Public License (EPL)
9  */
10 
11 #ifndef COUENNE_PROBLEM_ELEM_HPP
12 #define COUENNE_PROBLEM_ELEM_HPP
13 
14 #include <iostream>
15 
16 #include "CouenneTypes.hpp"
17 #include "CouenneExpression.hpp"
18 #include "CouenneExprConst.hpp"
19 
20 namespace Couenne {
21 
40 
41  protected:
42 
46 
47  public:
48 
50  CouenneConstraint (expression *body = NULL,
51  expression *lb = NULL,
52  expression *ub = NULL):
53  body_ (body),
54  lb_ (lb),
55  ub_ (ub) {
56 
57  if (!lb_)
58  if (!ub_) {
59  lb_ = new exprConst (0.);
60  ub_ = new exprConst (0.);
61  }
62  else lb_ = new exprConst (- COUENNE_INFINITY);
63  else if (!ub_) ub_ = new exprConst (COUENNE_INFINITY);
64  }
65 
67  virtual ~CouenneConstraint () {
68  delete body_;
69  delete lb_;
70  delete ub_;
71  }
72 
75  body_ (c.Body () -> clone (d)),
76  lb_ (c.Lb () -> clone (d)),
77  ub_ (c.Ub () -> clone (d)) {}
78 
80  virtual inline CouenneConstraint *clone (Domain *d = NULL) const
81  {return new CouenneConstraint (*this, d);}
82 
83  // Get constraint's elements
84  virtual inline expression *Lb () const {return lb_;}
85  virtual inline expression *Ub () const {return ub_;}
86  virtual inline expression *Body () const {return body_;}
87 
89  virtual inline expression *Body (expression *newBody)
90  {body_ = newBody; return body_;}
91 
94 
96  virtual void print (std::ostream & = std::cout);
97 };
98 
99 
100 
110 
111  protected:
112 
115 
116  public:
117 
120  body_ (body) {}
121 
124  {delete body_;}
125 
127  CouenneObjective (const CouenneObjective &o, Domain *d = NULL):
128  body_ (o.body_ -> clone (d)) {}
129 
131  inline CouenneObjective *clone (Domain *d = NULL) const
132  {return new CouenneObjective (*this, d);}
133 
135  inline expression *Body () const
136  {return body_;}
137 
140  {body_ = newBody; return body_;}
141 
144  {return body_ -> standardize (p);}
145 
147  void print (std::ostream &out = std::cout) {
148  out << "min ";
149  body_ -> print (out);
150  out << std::endl;
151  }
152 };
153 
154 }
155 
156 #endif
Couenne::CouenneConstraint::~CouenneConstraint
virtual ~CouenneConstraint()
Destructor.
Definition: CouenneProblemElem.hpp:67
Couenne::CouenneConstraint::standardize
virtual exprAux * standardize(CouenneProblem *)
decompose body of constraint through auxiliary variables
Couenne::CouenneObjective::standardize
exprAux * standardize(CouenneProblem *p)
Get standard form of this objective function.
Definition: CouenneProblemElem.hpp:143
Couenne::CouenneConstraint::CouenneConstraint
CouenneConstraint(const CouenneConstraint &c, Domain *d=NULL)
Copy constructor.
Definition: CouenneProblemElem.hpp:74
COUENNE_INFINITY
#define COUENNE_INFINITY
Definition: CouennePrecisions.hpp:32
Couenne::CouenneConstraint::print
virtual void print(std::ostream &=std::cout)
print constraint
Couenne::CouenneConstraint::Body
virtual expression * Body(expression *newBody)
Set body of constraint.
Definition: CouenneProblemElem.hpp:89
Couenne::CouenneConstraint::Lb
virtual expression * Lb() const
Expression of lower bound.
Definition: CouenneProblemElem.hpp:84
Couenne::CouenneObjective::Body
expression * Body() const
get body
Definition: CouenneProblemElem.hpp:135
Couenne
general include file for different compilers
Definition: CouenneAggrProbing.hpp:24
Couenne::CouenneObjective::CouenneObjective
CouenneObjective(expression *body)
constructor
Definition: CouenneProblemElem.hpp:119
Couenne::CouenneObjective::clone
CouenneObjective * clone(Domain *d=NULL) const
cloning method
Definition: CouenneProblemElem.hpp:131
Couenne::CouenneConstraint::Ub
virtual expression * Ub() const
Expression of upper bound.
Definition: CouenneProblemElem.hpp:85
Couenne::CouenneObjective::CouenneObjective
CouenneObjective(const CouenneObjective &o, Domain *d=NULL)
copy constructor
Definition: CouenneProblemElem.hpp:127
Couenne::CouenneObjective::body_
expression * body_
expression to optimize
Definition: CouenneProblemElem.hpp:114
Couenne::CouenneConstraint::CouenneConstraint
CouenneConstraint(expression *body=NULL, expression *lb=NULL, expression *ub=NULL)
Constructor.
Definition: CouenneProblemElem.hpp:50
Couenne::CouenneConstraint::Body
virtual expression * Body() const
Expression of body of constraint.
Definition: CouenneProblemElem.hpp:86
Couenne::CouenneObjective::~CouenneObjective
~CouenneObjective()
destructor
Definition: CouenneProblemElem.hpp:123
Couenne::CouenneObjective
Objective function.
Definition: CouenneProblemElem.hpp:109
Couenne::CouenneConstraint::body_
expression * body_
Body of constraint.
Definition: CouenneProblemElem.hpp:43
CouenneTypes.hpp
Couenne::exprConst
constant-type operator
Definition: CouenneExprConst.hpp:23
Couenne::CouenneObjective::Body
expression * Body(expression *newBody)
Set body.
Definition: CouenneProblemElem.hpp:139
CouenneExpression.hpp
Couenne::CouenneConstraint::ub_
expression * ub_
Upper bound (expression)
Definition: CouenneProblemElem.hpp:45
Couenne::CouenneConstraint::clone
virtual CouenneConstraint * clone(Domain *d=NULL) const
Cloning method.
Definition: CouenneProblemElem.hpp:80
CouenneExprConst.hpp
Couenne::CouenneConstraint::lb_
expression * lb_
Lower bound (expression)
Definition: CouenneProblemElem.hpp:44
Couenne::CouenneConstraint
Class to represent nonlinear constraints.
Definition: CouenneProblemElem.hpp:39
Couenne::CouenneProblem
Class for MINLP problems with symbolic information.
Definition: CouenneProblem.hpp:169
Couenne::exprAux
Auxiliary variable.
Definition: CouenneExprAux.hpp:32
Couenne::expression
Expression base class.
Definition: CouenneExpression.hpp:48
Couenne::CouenneObjective::print
void print(std::ostream &out=std::cout)
Print to iostream.
Definition: CouenneProblemElem.hpp:147
Couenne::Domain
Define a dynamic point+bounds, with a way to save and restore previous points+bounds through a LIFO s...
Definition: CouenneDomain.hpp:104