View Javadoc
1   /*
2    * Licensed to the Hipparchus project 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 Hipparchus project 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    *      https://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  package org.hipparchus.optim.nonlinear.vector.constrained;
18  
19  import org.hipparchus.linear.Array2DRowRealMatrix;
20  import org.hipparchus.linear.ArrayRealVector;
21  import org.hipparchus.linear.RealMatrix;
22  import org.hipparchus.linear.RealVector;
23  
24  public class HockSchittkowskiFunction72 extends TwiceDifferentiableFunction {
25  
26      @Override
27      public int dim() {
28          return 4;
29      }
30  
31      @Override
32      public double value(RealVector x) {
33          double x1 = x.getEntry(0);
34          double x2 = x.getEntry(1);
35          double x3 = x.getEntry(2);
36          double x4 = x.getEntry(3);
37  
38          //min 1 + x[1] + x[2] + x[3] + x[4]
39          return 1+x1+x2+x3+x4;
40      }
41  
42      @Override
43      public RealVector gradient(RealVector x) {
44          RealVector grad=new ArrayRealVector(x.getDimension());
45  
46          grad.setEntry(0,1.0);
47          grad.setEntry(1,1.0);
48          grad.setEntry(2,1.0);
49           grad.setEntry(3,1.0);
50  
51          return grad;
52      }
53  
54      @Override
55      public RealMatrix hessian(RealVector x) {
56          RealMatrix h=new Array2DRowRealMatrix(x.getDimension(),x.getDimension());
57  
58          h.setEntry(0,0, 0);
59          h.setEntry(0,1, 0);
60          h.setEntry(0,2, 0);
61          h.setEntry(0,3, 0);
62  
63  
64          h.setEntry(1,0, 0);
65          h.setEntry(1,1, 0);
66          h.setEntry(1,2, 0);
67          h.setEntry(1,3, 0);
68  
69  
70          h.setEntry(2,0, 0);
71          h.setEntry(2,1, 0);
72          h.setEntry(2,2,0);
73          h.setEntry(2,3, 0);
74  
75  
76          h.setEntry(3,0, 0);
77          h.setEntry(3,1, 0);
78          h.setEntry(3,2, 0.0);
79          h.setEntry(3,3, 0);
80  
81  
82  
83  
84  
85          return h;
86      }
87  
88  }