OptiPack  Version of the Day
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Groups Pages
OptiPack_UnconstrainedOptMeritFunc1D_decl.hpp
1 /*
2 // @HEADER
3 // ***********************************************************************
4 //
5 // OptiPack: Collection of simple Thyra-based Optimization ANAs
6 // Copyright (2009) Sandia Corporation
7 //
8 // Under terms of Contract DE-AC04-94AL85000, there is a non-exclusive
9 // license for use of this work by or on behalf of the U.S. Government.
10 //
11 // Redistribution and use in source and binary forms, with or without
12 // modification, are permitted provided that the following conditions are
13 // met:
14 //
15 // 1. Redistributions of source code must retain the above copyright
16 // notice, this list of conditions and the following disclaimer.
17 //
18 // 2. Redistributions in binary form must reproduce the above copyright
19 // notice, this list of conditions and the following disclaimer in the
20 // documentation and/or other materials provided with the distribution.
21 //
22 // 3. Neither the name of the Corporation nor the names of the
23 // contributors may be used to endorse or promote products derived from
24 // this software without specific prior written permission.
25 //
26 // THIS SOFTWARE IS PROVIDED BY SANDIA CORPORATION "AS IS" AND ANY
27 // EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
28 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
29 // PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL SANDIA CORPORATION OR THE
30 // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
31 // EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
32 // PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
33 // PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
34 // LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
35 // NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
36 // SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
37 //
38 // Questions? Contact Roscoe A. Bartlett (rabartl@sandia.gov)
39 //
40 // ***********************************************************************
41 // @HEADER
42 */
43 
44 #ifndef OPTIPACK_UNCONSTRAINED_OPT_MERIT_FUNC_1D_DECL_HPP
45 #define OPTIPACK_UNCONSTRAINED_OPT_MERIT_FUNC_1D_DECL_HPP
46 
47 
48 #include "OptiPack_Types.hpp"
49 #include "GlobiPack_MeritFunc1DBase.hpp"
50 #include "OptiPack_LineSearchPointEvaluatorBase.hpp"
51 #include "Thyra_OperatorVectorTypes.hpp"
52 
53 
54 namespace OptiPack {
55 
56 
65 template<typename Scalar>
67  : public GlobiPack::MeritFunc1DBase<typename ScalarTraits<Scalar>::magnitudeType>
68 {
69 public:
70 
73 
76 
79 
81  void setModel(
82  const RCP<const Thyra::ModelEvaluator<Scalar> > &model,
83  const int paramIndex,
84  const int responseIndex
85  );
86 
114  const RCP<const LineSearchPointEvaluatorBase<Scalar> > &pointEvaluator,
115  const RCP<Thyra::VectorBase<Scalar> > &p,
116  const RCP<Thyra::VectorBase<Scalar> > &g_vec,
117  const RCP<Thyra::VectorBase<Scalar> > &g_grad_vec
118  );
119 
121 
124 
126  virtual bool supportsDerivEvals() const;
128  virtual void eval( const ScalarMag &alpha, const Ptr<ScalarMag> &phi,
129  const Ptr<ScalarMag> &Dphi ) const;
130 
132 
133 private:
134 
135  // //////////////////////
136  // Private data members
137 
139  int paramIndex_;
140  int responseIndex_;
141 
145  RCP<Thyra::VectorBase<Scalar> > g_grad_vec_;
146 
147 };
148 
149 
154 template<typename Scalar>
157  const RCP<const Thyra::ModelEvaluator<Scalar> > &model,
158  const int paramIndex,
159  const int responseIndex
160  )
161 {
162  const RCP<UnconstrainedOptMeritFunc1D<Scalar> > meritFunc =
164  meritFunc->setModel(model, paramIndex, responseIndex);
165  return meritFunc;
166 }
167 
168 
169 } // namespace OptiPack
170 
171 
172 #endif // OPTIPACK_UNCONSTRAINED_OPT_MERIT_FUNC_1D_DECL_HPP
Concreate subclass for unconstrained optimization objective function.
UnconstrainedOptMeritFunc1D()
Construct with default parameters.
void setModel(const RCP< const Thyra::ModelEvaluator< Scalar > > &model, const int paramIndex, const int responseIndex)
Set the model.
virtual void eval(const ScalarMag &alpha, const Ptr< ScalarMag > &phi, const Ptr< ScalarMag > &Dphi) const
void setEvaluationQuantities(const RCP< const LineSearchPointEvaluatorBase< Scalar > > &pointEvaluator, const RCP< Thyra::VectorBase< Scalar > > &p, const RCP< Thyra::VectorBase< Scalar > > &g_vec, const RCP< Thyra::VectorBase< Scalar > > &g_grad_vec)
Set the evaluation qualities.
TEUCHOS_DEPRECATED RCP< T > rcp(T *p, Dealloc_T dealloc, bool owns_mem)
Base class interface for line search point updates.
const RCP< UnconstrainedOptMeritFunc1D< Scalar > > unconstrainedOptMeritFunc1D(const RCP< const Thyra::ModelEvaluator< Scalar > > &model, const int paramIndex, const int responseIndex)
Nonmember constructor.