Home | History | Annotate | Download | only in optimization
      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 
     18 package org.apache.commons.math.optimization;
     19 
     20 import java.io.Serializable;
     21 
     22 /**
     23  * This class holds a point and the vectorial value of an objective function at this point.
     24  * <p>This is a simple immutable container.</p>
     25  * @see RealPointValuePair
     26  * @see org.apache.commons.math.analysis.MultivariateVectorialFunction
     27  * @version $Revision: 980981 $ $Date: 2010-07-31 00:03:04 +0200 (sam. 31 juil. 2010) $
     28  * @since 2.0
     29  */
     30 public class VectorialPointValuePair implements Serializable {
     31 
     32     /** Serializable version identifier. */
     33     private static final long serialVersionUID = 1003888396256744753L;
     34 
     35     /** Point coordinates. */
     36     private final double[] point;
     37 
     38     /** Vectorial value of the objective function at the point. */
     39     private final double[] value;
     40 
     41     /** Build a point/objective function value pair.
     42      * @param point point coordinates (the built instance will store
     43      * a copy of the array, not the array passed as argument)
     44      * @param value value of an objective function at the point
     45      */
     46     public VectorialPointValuePair(final double[] point, final double[] value) {
     47         this.point = (point == null) ? null : point.clone();
     48         this.value = (value == null) ? null : value.clone();
     49     }
     50 
     51     /** Build a point/objective function value pair.
     52      * @param point point coordinates (the built instance will store
     53      * a copy of the array, not the array passed as argument)
     54      * @param value value of an objective function at the point
     55      * @param copyArray if true, the input arrays will be copied, otherwise
     56      * they will be referenced
     57      */
     58     public VectorialPointValuePair(final double[] point, final double[] value,
     59                                    final boolean copyArray) {
     60         this.point = copyArray ?
     61                       ((point == null) ? null : point.clone()) :
     62                       point;
     63         this.value = copyArray ?
     64                       ((value == null) ? null : value.clone()) :
     65                       value;
     66     }
     67 
     68     /** Get the point.
     69      * @return a copy of the stored point
     70      */
     71     public double[] getPoint() {
     72         return (point == null) ? null : point.clone();
     73     }
     74 
     75     /** Get a reference to the point.
     76      * <p>This method is provided as a convenience to avoid copying
     77      * the array, the elements of the array should <em>not</em> be modified.</p>
     78      * @return a reference to the internal array storing the point
     79      */
     80     public double[] getPointRef() {
     81         return point;
     82     }
     83 
     84     /** Get the value of the objective function.
     85      * @return a copy of the stored value of the objective function
     86      */
     87     public double[] getValue() {
     88         return (value == null) ? null : value.clone();
     89     }
     90 
     91     /** Get a reference to the value of the objective function.
     92      * <p>This method is provided as a convenience to avoid copying
     93      * the array, the elements of the array should <em>not</em> be modified.</p>
     94      * @return a reference to the internal array storing the value of the objective function
     95      */
     96     public double[] getValueRef() {
     97         return value;
     98     }
     99 
    100 }
    101