ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/OpenMD/branches/development/src/optimization/LineSearch.cpp
Revision: 1853
Committed: Wed Mar 6 16:24:08 2013 UTC (12 years, 1 month ago) by gezelter
File size: 1909 byte(s)
Log Message:
Linux compilation fixes (missing cstdio)

File Contents

# Content
1 /* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2
3 /*
4 Copyright (C) 2001, 2002, 2003 Nicolas Di Césaré
5
6 This file is part of QuantLib, a free-software/open-source library
7 for financial quantitative analysts and developers - http://quantlib.org/
8
9 QuantLib is free software: you can redistribute it and/or modify it
10 under the terms of the QuantLib license. You should have received a
11 copy of the license along with this program; if not, please email
12 <quantlib-dev@lists.sf.net>. The license is also available online at
13 <http://quantlib.org/license.shtml>.
14
15 This program is distributed in the hope that it will be useful, but WITHOUT
16 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
17 FOR A PARTICULAR PURPOSE. See the license for more details.
18 */
19
20 #include "optimization/LineSearch.hpp"
21 #include "optimization/Problem.hpp"
22 #include "optimization/Constraint.hpp"
23 #include "utils/simError.h"
24 #include <cstdio>
25
26 namespace QuantLib {
27
28 RealType LineSearch::update(DynamicVector<RealType>& params,
29 const DynamicVector<RealType>& direction,
30 RealType beta,
31 const Constraint& constraint) {
32
33 RealType diff=beta;
34 DynamicVector<RealType> newParams = params + diff*direction;
35 bool valid = constraint.test(newParams);
36 int icount = 0;
37 while (!valid) {
38 if (icount > 200) {
39 sprintf(painCave.errMsg, "can't update linesearch\n");
40 painCave.isFatal = 1;
41 painCave.severity = OPENMD_ERROR;
42 simError();
43 }
44 diff *= 0.5;
45 icount ++;
46 newParams = params + diff*direction;
47 valid = constraint.test(newParams);
48 }
49 params += diff*direction;
50 return diff;
51 }
52
53 }

Properties

Name Value
svn:eol-style native