source: src/main/java/agents/anac/y2019/harddealer/math3/analysis/solvers/AbstractUnivariateDifferentiableSolver.java

Last change on this file was 204, checked in by Katsuhide Fujita, 5 years ago

Fixed errors of ANAC2019 agents

  • Property svn:executable set to *
File size: 3.1 KB
Line 
1/*
2 * Licensed to the Apache Software Foundation (ASF) under one or more
3 * contributor license agreements. See the NOTICE file distributed with
4 * this work for additional information regarding copyright ownership.
5 * The ASF licenses this file to You under the Apache License, Version 2.0
6 * (the "License"); you may not use this file except in compliance with
7 * the License. You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17
18package agents.anac.y2019.harddealer.math3.analysis.solvers;
19
20import agents.anac.y2019.harddealer.math3.analysis.differentiation.DerivativeStructure;
21import agents.anac.y2019.harddealer.math3.analysis.differentiation.UnivariateDifferentiableFunction;
22import agents.anac.y2019.harddealer.math3.exception.TooManyEvaluationsException;
23
24/**
25 * Provide a default implementation for several functions useful to generic
26 * solvers.
27 *
28 * @since 3.1
29 */
30public abstract class AbstractUnivariateDifferentiableSolver
31 extends BaseAbstractUnivariateSolver<UnivariateDifferentiableFunction>
32 implements UnivariateDifferentiableSolver {
33
34 /** Function to solve. */
35 private UnivariateDifferentiableFunction function;
36
37 /**
38 * Construct a solver with given absolute accuracy.
39 *
40 * @param absoluteAccuracy Maximum absolute error.
41 */
42 protected AbstractUnivariateDifferentiableSolver(final double absoluteAccuracy) {
43 super(absoluteAccuracy);
44 }
45
46 /**
47 * Construct a solver with given accuracies.
48 *
49 * @param relativeAccuracy Maximum relative error.
50 * @param absoluteAccuracy Maximum absolute error.
51 * @param functionValueAccuracy Maximum function value error.
52 */
53 protected AbstractUnivariateDifferentiableSolver(final double relativeAccuracy,
54 final double absoluteAccuracy,
55 final double functionValueAccuracy) {
56 super(relativeAccuracy, absoluteAccuracy, functionValueAccuracy);
57 }
58
59 /**
60 * Compute the objective function value.
61 *
62 * @param point Point at which the objective function must be evaluated.
63 * @return the objective function value and derivative at specified point.
64 * @throws TooManyEvaluationsException
65 * if the maximal number of evaluations is exceeded.
66 */
67 protected DerivativeStructure computeObjectiveValueAndDerivative(double point)
68 throws TooManyEvaluationsException {
69 incrementEvaluationCount();
70 return function.value(new DerivativeStructure(1, 1, 0, point));
71 }
72
73 /**
74 * {@inheritDoc}
75 */
76 @Override
77 protected void setup(int maxEval, UnivariateDifferentiableFunction f,
78 double min, double max, double startValue) {
79 super.setup(maxEval, f, min, max, startValue);
80 function = f;
81 }
82}
Note: See TracBrowser for help on using the repository browser.