ConstrainedOptPack: C++ Tools for Constrained (and Unconstrained) Optimization  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
ConstrainedOptPack_QPInitFixedFreeStd.hpp
1 // @HEADER
2 // ***********************************************************************
3 //
4 // Moocho: Multi-functional Object-Oriented arCHitecture for Optimization
5 // Copyright (2003) Sandia Corporation
6 //
7 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
8 // license for use of this work by or on behalf of the U.S. Government.
9 //
10 // Redistribution and use in source and binary forms, with or without
11 // modification, are permitted provided that the following conditions are
12 // met:
13 //
14 // 1. Redistributions of source code must retain the above copyright
15 // notice, this list of conditions and the following disclaimer.
16 //
17 // 2. Redistributions in binary form must reproduce the above copyright
18 // notice, this list of conditions and the following disclaimer in the
19 // documentation and/or other materials provided with the distribution.
20 //
21 // 3. Neither the name of the Corporation nor the names of the
22 // contributors may be used to endorse or promote products derived from
23 // this software without specific prior written permission.
24 //
25 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
26 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
27 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
28 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
29 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
30 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
31 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
32 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
33 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
34 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
35 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
36 //
37 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov)
38 //
39 // ***********************************************************************
40 // @HEADER
41 
42 #ifndef QP_INIT_FIXED_FREE_STD_H
43 #define QP_INIT_FIXED_FREE_STD_H
44 
45 #include "ConstrainedOptPack_QPSchur.hpp"
46 
47 namespace ConstrainedOptPack {
48 namespace QPSchurPack {
49 
58 class QPInitFixedFreeStd : public QP {
59 public:
60 
63 
130  void initialize(
131  const DVectorSlice &g
132  ,const MatrixSymOp &G
133  ,const MatrixOp *A
134  ,size_type n_R
135  ,const size_type i_x_free[]
136  ,const size_type i_x_fixed[]
137  ,const EBounds bnd_fixed[]
138  ,const DVectorSlice &b_X
139  ,const MatrixSymOpNonsing &Ko
140  ,const DVectorSlice &fo
142  ,std::ostream *out = NULL
143  ,bool test_setup = false
144  ,value_type warning_tol = 1e-10
145  ,value_type error_tol = 1e-5
146  ,bool print_all_warnings = false
147  );
148 
151 
153  size_type n() const;
155  size_type m() const;
157  const DVectorSlice g() const;
159  const MatrixSymOp& G() const;
161  const MatrixOp& A() const;
163  size_type n_R() const;
165  const x_init_t& x_init() const;
167  const l_x_X_map_t& l_x_X_map() const;
169  const i_x_X_map_t& i_x_X_map() const;
171  const DVectorSlice b_X() const;
173  const GenPermMatrixSlice& Q_R() const;
175  const GenPermMatrixSlice& Q_X() const;
177  const MatrixSymOpNonsing& Ko() const;
179  const DVectorSlice fo() const;
183  const Constraints& constraints() const;
184 
186 
187 private:
188 
189  // ///////////////////////////////////
190  // Private types
191 
192  typedef std::vector<size_type> row_i_t;
193  typedef std::vector<size_type> col_j_t;
194 
195  // ///////////////////////////////////
196  // Private data members
197 
198 
199  size_type n_;
200  size_type n_R_;
201  size_type m_;
202  DVectorSlice g_; // will not be modified!
203  const MatrixSymOp *G_;
204  const MatrixOp *A_; // If NULL not no equalities in Ko
205  x_init_t x_init_;
206  l_x_X_map_t l_x_X_map_;
207  i_x_X_map_t i_x_X_map_;
208  DVectorSlice b_X_; // will not be modified!
209  GenPermMatrixSlice Q_R_;
210  row_i_t Q_R_row_i_;
211  col_j_t Q_R_col_j_;
212  GenPermMatrixSlice Q_X_;
213  row_i_t Q_X_row_i_;
214  col_j_t Q_X_col_j_;
215  const MatrixSymOpNonsing
216  *Ko_;
217  DVectorSlice fo_; // will not be modified
218  Constraints *constraints_;
219 
220  // Private member function
221  void assert_initialized() const;
222 
223 }; // end class QPInitFixedFreeStd
224 
225 } // end namespace QPSchurPack
226 } // end namespace ConstrainedOptPack
227 
228 #endif // QP_INIT_FIXED_FREE_STD_H
void initialize(const DVectorSlice &g, const MatrixSymOp &G, const MatrixOp *A, size_type n_R, const size_type i_x_free[], const size_type i_x_fixed[], const EBounds bnd_fixed[], const DVectorSlice &b_X, const MatrixSymOpNonsing &Ko, const DVectorSlice &fo, Constraints *constraints, std::ostream *out=NULL, bool test_setup=false, value_type warning_tol=1e-10, value_type error_tol=1e-5, bool print_all_warnings=false)
Initialize.
vector_one_based_checked< size_type > l_x_X_map_t
Represents the QP to be solved by QPSchur {abstract}.
size_t size_type
General (and flexible) implementation class for a QPSchur QP problem.
Represents the extra constraints in the QP to be satisfied by the schur complement QP solver QPSchur ...