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
38 const LowRankUpdateSymMatrixSpace* owner_space
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(
107 Number alpha,
108 const Vector& x,
109 Number beta,
110 Vector& y
111 ) const;
112
113 virtual bool HasValidNumbersImpl() const;
114
115 virtual void ComputeRowAMaxImpl(
116 Vector& rows_norms,
117 bool init
118 ) const;
119
120 virtual void ComputeColAMaxImpl(
121 Vector& cols_norms,
122 bool init
123 ) const;
124
125 virtual void PrintImpl(
126 const Journalist& jnlst,
127 EJournalLevel level,
128 EJournalCategory category,
129 const std::string& name,
130 Index indent,
131 const std::string& prefix
132 ) const;
134
135private:
145
147
151 );
152
156 );
158
161
164
167
170};
171
174{
175public:
178
180 Index dim,
183 bool reduced_diag
184 )
185 : SymMatrixSpace(dim),
188 reduced_diag_(reduced_diag)
189 {
191 }
192
195 { }
197
199 {
201 }
202
205 {
206 return new LowRankUpdateSymMatrix(this);
207 }
208
210 {
211 return P_LowRank_;
212 }
213
215 {
217 }
218
219 bool ReducedDiag() const
220 {
221 return reduced_diag_;
222 }
223
224private:
234
236
240 );
241
245 );
247
254
257
262};
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
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.
Template class for Smart Pointers.
Definition: IpSmartPtr.hpp:165
SymMatrixSpace base class, corresponding to the SymMatrix base class.
Definition: IpSymMatrix.hpp:86
This is the base class for all derived symmetric matrix types.
Definition: IpSymMatrix.hpp:21
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)
Definition: IpSmartPtr.hpp:672
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