ROL
Loading...
Searching...
No Matches
ROL_PolyhedralProjection.hpp
Go to the documentation of this file.
1// @HEADER
2// *****************************************************************************
3// Rapid Optimization Library (ROL) Package
4//
5// Copyright 2014 NTESS and the ROL contributors.
6// SPDX-License-Identifier: BSD-3-Clause
7// *****************************************************************************
8// @HEADER
9
10#ifndef ROL_POLYHEDRALPROJECTION_H
11#define ROL_POLYHEDRALPROJECTION_H
12
14#include "ROL_Constraint.hpp"
16#include "ROL_Projection.hpp"
18#include <iostream>
19
20namespace ROL {
21
22template<typename Real>
23class PolyhedralProjection : public Projection<Real> {
24protected:
25 const Ptr<BoundConstraint<Real>> bnd_;
26 const Ptr<Constraint<Real>> con_;
27 Ptr<ReducedLinearConstraint<Real>> rcon_; // con_ restricted to current active variables
28 Ptr<NullSpaceOperator<Real>> ns_; // null space projection onto reduced equality constraint
29 Ptr<Vector<Real>> xprim_, xdual_, mul_, res_;
30
31public:
33
35
37 const Vector<Real> &xdual,
38 const Ptr<BoundConstraint<Real>> &bnd,
39 const Ptr<Constraint<Real>> &con,
40 const Vector<Real> &mul,
41 const Vector<Real> &res);
42
43 virtual void project(Vector<Real> &x, std::ostream &stream = std::cout);
44
45 virtual void applyJacobian(Vector<Real> &v, const Vector<Real> &x);
46
47 const Ptr<Constraint<Real>> getLinearConstraint(void) const;
48
49 const Ptr<BoundConstraint<Real>> getBoundConstraint(void) const;
50
51 const Ptr<Vector<Real>> getMultiplier(void) const;
52
53 const Ptr<Vector<Real>> getResidual(void) const;
54
55}; // class PolyhedralProjection
56
57} // namespace ROL
58
60
61#endif
Provides the interface to apply upper and lower bound constraints.
Defines the general constraint operator interface.
Ptr< ReducedLinearConstraint< Real > > rcon_
const Ptr< BoundConstraint< Real > > getBoundConstraint(void) const
const Ptr< Constraint< Real > > con_
const Ptr< BoundConstraint< Real > > bnd_
virtual void project(Vector< Real > &x, std::ostream &stream=std::cout)
const Ptr< Vector< Real > > getResidual(void) const
const Ptr< Vector< Real > > getMultiplier(void) const
virtual void applyJacobian(Vector< Real > &v, const Vector< Real > &x)
Ptr< NullSpaceOperator< Real > > ns_
const Ptr< Constraint< Real > > getLinearConstraint(void) const
Defines the linear algebra or vector space interface.