Ipopt Documentation  
 
Loading...
Searching...
No Matches
IpLowRankUpdateSymMatrix.hpp
Go to the documentation of this file.
1// Copyright (C) 2005, 2008 International Business Machines and others.
2// All Rights Reserved.
3// This code is published under the Eclipse Public License.
4//
5// Authors: Andreas Waechter IBM 2005-12-25
6
7#ifndef __IPLOWRANKUPDATESYMMATRIX_HPP__
8#define __IPLOWRANKUPDATESYMMATRIX_HPP__
9
10#include "IpUtils.hpp"
11#include "IpSymMatrix.hpp"
13
14namespace Ipopt
15{
16
17/* forward declarations */
18class LowRankUpdateSymMatrixSpace;
19
32{
33public:
36
39 );
40
44
46 void SetDiag(
47 const Vector& D
48 )
49 {
50 D_ = &D;
52 }
53
56 {
57 return D_;
58 }
59
61 void SetV(
62 const MultiVectorMatrix& V
63 )
64 {
65 V_ = &V;
67 }
68
71 {
72 return V_;
73 }
74
76 void SetU(
77 const MultiVectorMatrix& U
78 )
79 {
80 U_ = &U;
82 }
83
86 {
87 return U_;
88 }
89
94
97
101 bool ReducedDiag() const;
102
103protected:
106 virtual void MultVectorImpl(
108 const Vector& x,
109 Number beta,
110 Vector& y
111 ) const;
112
113 virtual bool HasValidNumbersImpl() const;
114
115 virtual void ComputeRowAMaxImpl(
117 bool init
118 ) const;
119
120 virtual void ComputeColAMaxImpl(
122 bool init
123 ) const;
124
125 virtual void PrintImpl(
126 const Journalist& jnlst,
129 const std::string& name,
131 const std::string& prefix
132 ) const;
134
135private:
145
147
151 );
152
156 );
158
161
164
167
170};
171
263
265{
266 return owner_space_->P_LowRank();
267}
268
270{
271 return owner_space_->LowRankVectorSpace();
272}
273
275{
276 return owner_space_->ReducedDiag();
277}
278
279} // namespace Ipopt
280#endif
#define DBG_ASSERT(test)
Definition IpDebug.hpp:27
Templated class which stores one entry for the CachedResult class.
Class responsible for all message output.
This is the matrix space for LowRankUpdateSymMatrix.
SmartPtr< const Matrix > P_LowRank_
Expansion matrix to lift the low-rank approximation into a possibly higher-dimensional space.
SmartPtr< const Matrix > P_LowRank() const
LowRankUpdateSymMatrix * MakeNewLowRankUpdateSymMatrix() const
Method for creating a new matrix of this specific type.
LowRankUpdateSymMatrixSpace(Index dim, SmartPtr< const Matrix > P_LowRank, SmartPtr< const VectorSpace > LowRankVectorSpace, bool reduced_diag)
Constructor, given the dimension of the matrix.
LowRankUpdateSymMatrixSpace()
Default Constructor.
void operator=(const LowRankUpdateSymMatrixSpace &)
Default Assignment Operator.
SmartPtr< const VectorSpace > LowRankVectorSpace() const
bool reduced_diag_
Flag indicating whether the diagonal matrix is nonzero only in the space of V or in the full space.
virtual SymMatrix * MakeNewSymMatrix() const
Pure virtual method for creating a new matrix of this specific type.
SmartPtr< const VectorSpace > lowrank_vector_space_
Vector space for the space in which the low-rank approximation lives.
LowRankUpdateSymMatrixSpace(const LowRankUpdateSymMatrixSpace &)
Copy Constructor.
Class for symmetric matrices, represented as low-rank updates.
SmartPtr< const Matrix > P_LowRank() const
Return the expansion matrix to lift the low-rank update to the higher-dimensional space.
SmartPtr< const Vector > D_
Vector storing the diagonal matrix D.
SmartPtr< const Vector > GetDiag() const
Method for getting the diagonal elements.
SmartPtr< const MultiVectorMatrix > U_
Vector storing the negative low-rank update.
void SetDiag(const Vector &D)
Method for setting the diagonal elements (as a Vector).
SmartPtr< const VectorSpace > LowRankVectorSpace() const
Return the vector space in with the low-rank update vectors live.
virtual void ComputeColAMaxImpl(Vector &cols_norms, bool init) const
Implementation of ComputeColAMaxImpl, which calls ComputeRowAMaxImpl.
SmartPtr< const MultiVectorMatrix > GetU() const
Method for getting the negative low-rank update part.
SmartPtr< const LowRankUpdateSymMatrixSpace > owner_space_
corresponding matrix space
SmartPtr< const MultiVectorMatrix > GetV() const
Method for getting the positive low-rank update part.
virtual bool HasValidNumbersImpl() const
Method for determining if all stored numbers are valid (i.e., no Inf or Nan).
virtual void MultVectorImpl(Number alpha, const Vector &x, Number beta, Vector &y) const
Matrix-vector multiply.
LowRankUpdateSymMatrix()
Default Constructor.
bool ReducedDiag() const
Flag indicating whether the diagonal term lives in the smaller space (from P_LowRank) or in the full ...
LowRankUpdateSymMatrix(const LowRankUpdateSymMatrixSpace *owner_space)
Constructor, given the corresponding matrix space.
void SetU(const MultiVectorMatrix &U)
Method for setting the negative low-rank update part.
virtual void ComputeRowAMaxImpl(Vector &rows_norms, bool init) const
Compute the max-norm of the rows in the matrix.
void SetV(const MultiVectorMatrix &V)
Method for setting the positive low-rank update part.
SmartPtr< const MultiVectorMatrix > V_
Vector storing the positive low-rank update.
~LowRankUpdateSymMatrix()
Destructor.
virtual void PrintImpl(const Journalist &jnlst, EJournalLevel level, EJournalCategory category, const std::string &name, Index indent, const std::string &prefix) const
Print detailed information about the matrix.
void operator=(const LowRankUpdateSymMatrix &)
Default Assignment Operator.
LowRankUpdateSymMatrix(const LowRankUpdateSymMatrix &)
Copy Constructor.
Class for Matrices with few columns that consists of Vectors.
SymMatrixSpace base class, corresponding to the SymMatrix base class.
This is the base class for all derived symmetric matrix types.
void ObjectChanged()
Objects derived from TaggedObject MUST call this method every time their internal state changes to up...
Vector Base Class.
Definition IpVector.hpp:48
This file contains a base class for all exceptions and a set of macros to help with exceptions.
bool IsValid(const SmartPtr< U > &smart_ptr)
ipindex Index
Type of all indices of vectors, matrices etc.
Definition IpTypes.hpp:20
EJournalCategory
Category Selection Enum.
EJournalLevel
Print Level Enum.
ipnumber Number
Type of all numbers.
Definition IpTypes.hpp:17