ROL
Toggle main menu visibility
Loading...
Searching...
No Matches
src
algorithm
TypeU
bundle
ROL_Bundle_U_TT.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_BUNDLE_U_TT_H
11
#define ROL_BUNDLE_U_TT_H
12
13
#include "
ROL_Bundle_U.hpp
"
14
#include "ROL_LAPACK.hpp"
15
#include "ROL_LinearAlgebra.hpp"
16
#include <vector>
17
23
24
namespace
ROL
{
25
26
template
<
typename
Real>
27
class
Bundle_U_TT
:
public
Bundle_U
<Real> {
28
private
:
29
LAPACK<int, Real>
lapack_
;
// TT
30
31
int
QPStatus_
;
// QP solver status
32
int
maxind_
;
// maximum integer value
33
int
entering_
;
// index of entering item
34
int
LiMax_
;
// index of max element of diag(L)
35
int
LiMin_
;
// index of min element of diag(L)
36
37
unsigned
maxSize_
;
// maximum bundle size
38
unsigned
dependent_
;
// number of lin. dependent items in base
39
unsigned
currSize_
;
// current size of base
40
41
bool
isInitialized_
;
42
bool
optimal_
;
// flag for optimality of restricted solution
43
44
Real
rho_
;
45
Real
lhNorm
;
46
Real
ljNorm
;
47
Real
lhz1_
;
48
Real
lhz2_
;
49
Real
ljz1_
;
50
Real
kappa_
;
// condition number of matrix L ( >= max|L_ii|/min|L_ii| )
51
Real
objval_
;
// value of objective
52
Real
minobjval_
;
// min value of objective (ever reached)
53
Real
deltaLh_
;
// needed in case dependent row becomes independent
54
Real
deltaLj_
;
// needed in case dependent row becomes independent
55
56
std::vector<int>
taboo_
;
// list of "taboo" items
57
std::vector<int>
base_
;
// base
58
59
LA::Matrix<Real>
L_
;
60
LA::Matrix<Real>
Id_
;
61
LA::Vector<Real>
tempv_
;
62
LA::Vector<Real>
tempw1_
;
63
LA::Vector<Real>
tempw2_
;
64
LA::Vector<Real>
lh_
;
65
LA::Vector<Real>
lj_
;
66
LA::Vector<Real>
z1_
;
67
LA::Vector<Real>
z2_
;
68
69
using
Bundle_U
<Real>
::GiGj
;
70
71
public
:
72
Bundle_U_TT
(
const
unsigned
maxSize = 10,
73
const
Real coeff = 0.0,
74
const
Real omega = 2.0,
75
const
unsigned
remSize = 2);
76
77
unsigned
solveDual
(
const
Real t,
const
unsigned
maxit = 1000,
const
Real tol = 1.e-8);
78
79
/***********************************************************************************************/
80
/****************** DUAL CUTTING PLANE SUBPROBLEM ROUTINES *************************************/
81
/***********************************************************************************************/
82
private
:
83
Real
sgn
(
const
Real x)
const
;
84
85
void
swapRowsL
(
unsigned
ind1,
unsigned
ind2,
bool
trans=
false
);
86
87
void
updateK
(
void
);
88
89
void
addSubgradToBase
(
unsigned
ind, Real delta);
90
91
void
deleteSubgradFromBase
(
unsigned
ind, Real tol);
92
93
// TT: solving triangular system for TT algorithm
94
void
solveSystem
(
int
size
,
char
tran, LA::Matrix<Real> &L, LA::Vector<Real> &v);
95
96
// TT: check that inequality constraints are satisfied for dual variables
97
bool
isFeasible
(LA::Vector<Real> &v,
const
Real &tol);
98
99
unsigned
solveDual_TT
(
const
Real t,
const
unsigned
maxit = 1000,
const
Real tol = 1.e-8);
100
101
unsigned
solveDual_arbitrary
(
const
Real t,
const
unsigned
maxit = 1000,
const
Real tol = 1.e-8);
102
103
};
// class Bundle_TT
104
105
}
// namespace ROL
106
107
#include "
ROL_Bundle_U_TT_Def.hpp
"
108
109
#endif
110
ROL_Bundle_U.hpp
ROL_Bundle_U_TT_Def.hpp
ROL::Bundle_U_TT::tempv_
LA::Vector< Real > tempv_
Definition
ROL_Bundle_U_TT.hpp:61
ROL::Bundle_U_TT::objval_
Real objval_
Definition
ROL_Bundle_U_TT.hpp:51
ROL::Bundle_U_TT::isInitialized_
bool isInitialized_
Definition
ROL_Bundle_U_TT.hpp:41
ROL::Bundle_U_TT::lapack_
LAPACK< int, Real > lapack_
Definition
ROL_Bundle_U_TT.hpp:29
ROL::Bundle_U_TT::maxSize_
unsigned maxSize_
Definition
ROL_Bundle_U_TT.hpp:37
ROL::Bundle_U_TT::LiMin_
int LiMin_
Definition
ROL_Bundle_U_TT.hpp:35
ROL::Bundle_U_TT::Bundle_U_TT
Bundle_U_TT(const unsigned maxSize=10, const Real coeff=0.0, const Real omega=2.0, const unsigned remSize=2)
Definition
ROL_Bundle_U_TT_Def.hpp:27
ROL::Bundle_U_TT::rho_
Real rho_
Definition
ROL_Bundle_U_TT.hpp:44
ROL::Bundle_U_TT::lhz1_
Real lhz1_
Definition
ROL_Bundle_U_TT.hpp:47
ROL::Bundle_U_TT::sgn
Real sgn(const Real x) const
Definition
ROL_Bundle_U_TT_Def.hpp:41
ROL::Bundle_U_TT::tempw1_
LA::Vector< Real > tempw1_
Definition
ROL_Bundle_U_TT.hpp:62
ROL::Bundle_U_TT::ljNorm
Real ljNorm
Definition
ROL_Bundle_U_TT.hpp:46
ROL::Bundle_U_TT::addSubgradToBase
void addSubgradToBase(unsigned ind, Real delta)
Definition
ROL_Bundle_U_TT_Def.hpp:110
ROL::Bundle_U_TT::deleteSubgradFromBase
void deleteSubgradFromBase(unsigned ind, Real tol)
Definition
ROL_Bundle_U_TT_Def.hpp:144
ROL::Bundle_U_TT::optimal_
bool optimal_
Definition
ROL_Bundle_U_TT.hpp:42
ROL::Bundle_U_TT::maxind_
int maxind_
Definition
ROL_Bundle_U_TT.hpp:32
ROL::Bundle_U_TT::solveDual_arbitrary
unsigned solveDual_arbitrary(const Real t, const unsigned maxit=1000, const Real tol=1.e-8)
Definition
ROL_Bundle_U_TT_Def.hpp:765
ROL::Bundle_U_TT::isFeasible
bool isFeasible(LA::Vector< Real > &v, const Real &tol)
Definition
ROL_Bundle_U_TT_Def.hpp:386
ROL::Bundle_U_TT::solveSystem
void solveSystem(int size, char tran, LA::Matrix< Real > &L, LA::Vector< Real > &v)
Definition
ROL_Bundle_U_TT_Def.hpp:371
ROL::Bundle_U_TT::Id_
LA::Matrix< Real > Id_
Definition
ROL_Bundle_U_TT.hpp:60
ROL::Bundle_U_TT::minobjval_
Real minobjval_
Definition
ROL_Bundle_U_TT.hpp:52
ROL::Bundle_U_TT::lhNorm
Real lhNorm
Definition
ROL_Bundle_U_TT.hpp:45
ROL::Bundle_U_TT::dependent_
unsigned dependent_
Definition
ROL_Bundle_U_TT.hpp:38
ROL::Bundle_U_TT::tempw2_
LA::Vector< Real > tempw2_
Definition
ROL_Bundle_U_TT.hpp:63
ROL::Bundle_U_TT::z2_
LA::Vector< Real > z2_
Definition
ROL_Bundle_U_TT.hpp:67
ROL::Bundle_U_TT::L_
LA::Matrix< Real > L_
Definition
ROL_Bundle_U_TT.hpp:59
ROL::Bundle_U_TT::swapRowsL
void swapRowsL(unsigned ind1, unsigned ind2, bool trans=false)
Definition
ROL_Bundle_U_TT_Def.hpp:63
ROL::Bundle_U_TT::ljz1_
Real ljz1_
Definition
ROL_Bundle_U_TT.hpp:49
ROL::Bundle_U_TT::entering_
int entering_
Definition
ROL_Bundle_U_TT.hpp:33
ROL::Bundle_U_TT::updateK
void updateK(void)
Definition
ROL_Bundle_U_TT_Def.hpp:88
ROL::Bundle_U_TT::taboo_
std::vector< int > taboo_
Definition
ROL_Bundle_U_TT.hpp:56
ROL::Bundle_U_TT::kappa_
Real kappa_
Definition
ROL_Bundle_U_TT.hpp:50
ROL::Bundle_U_TT::z1_
LA::Vector< Real > z1_
Definition
ROL_Bundle_U_TT.hpp:66
ROL::Bundle_U_TT::deltaLh_
Real deltaLh_
Definition
ROL_Bundle_U_TT.hpp:53
ROL::Bundle_U_TT::lj_
LA::Vector< Real > lj_
Definition
ROL_Bundle_U_TT.hpp:65
ROL::Bundle_U_TT::lh_
LA::Vector< Real > lh_
Definition
ROL_Bundle_U_TT.hpp:64
ROL::Bundle_U_TT::deltaLj_
Real deltaLj_
Definition
ROL_Bundle_U_TT.hpp:54
ROL::Bundle_U_TT::solveDual
unsigned solveDual(const Real t, const unsigned maxit=1000, const Real tol=1.e-8)
Definition
ROL_Bundle_U_TT_Def.hpp:48
ROL::Bundle_U_TT::base_
std::vector< int > base_
Definition
ROL_Bundle_U_TT.hpp:57
ROL::Bundle_U_TT::QPStatus_
int QPStatus_
Definition
ROL_Bundle_U_TT.hpp:31
ROL::Bundle_U_TT::lhz2_
Real lhz2_
Definition
ROL_Bundle_U_TT.hpp:48
ROL::Bundle_U_TT::LiMax_
int LiMax_
Definition
ROL_Bundle_U_TT.hpp:34
ROL::Bundle_U_TT::currSize_
unsigned currSize_
Definition
ROL_Bundle_U_TT.hpp:39
ROL::Bundle_U_TT::solveDual_TT
unsigned solveDual_TT(const Real t, const unsigned maxit=1000, const Real tol=1.e-8)
Definition
ROL_Bundle_U_TT_Def.hpp:397
ROL::Bundle_U::size
unsigned size(void) const
Definition
ROL_Bundle_U_Def.hpp:139
ROL::Bundle_U::Bundle_U
Bundle_U(const unsigned maxSize=10, const Real coeff=0.0, const Real omega=2.0, const unsigned remSize=2)
Definition
ROL_Bundle_U_Def.hpp:52
ROL::Bundle_U::GiGj
const Real GiGj(const unsigned i, const unsigned j) const
Definition
ROL_Bundle_U_Def.hpp:226
ROL
Definition
ROL_ElementwiseVector.hpp:27
Generated by
1.17.0