commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From l..@apache.org
Subject svn commit: r567080 - /commons/proper/math/trunk/src/java/org/apache/commons/math/estimation/SimpleEstimationProblem.java
Date Fri, 17 Aug 2007 16:26:54 GMT
Author: luc
Date: Fri Aug 17 09:26:45 2007
New Revision: 567080

URL: http://svn.apache.org/viewvc?view=rev&rev=567080
Log:
[MATH-165] basic implementation of a SimpleEstimationProblem

Added:
    commons/proper/math/trunk/src/java/org/apache/commons/math/estimation/SimpleEstimationProblem.java
  (with props)

Added: commons/proper/math/trunk/src/java/org/apache/commons/math/estimation/SimpleEstimationProblem.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/java/org/apache/commons/math/estimation/SimpleEstimationProblem.java?view=auto&rev=567080
==============================================================================
--- commons/proper/math/trunk/src/java/org/apache/commons/math/estimation/SimpleEstimationProblem.java
(added)
+++ commons/proper/math/trunk/src/java/org/apache/commons/math/estimation/SimpleEstimationProblem.java
Fri Aug 17 09:26:45 2007
@@ -0,0 +1,72 @@
+package org.apache.commons.math.estimation;
+
+import java.util.ArrayList;
+import java.util.Iterator;
+
+/**
+ * Simple implementation of the {@link EstimationProblem
+ * EstimationProblem} interface for boilerplate data handling.
+ * <p>This class <em>only</em> handles parameters and measurements
+ * storage and unbound parameters filtering. It does not compute
+ * anything by itself. It should either be used with measurements
+ * implementation that are smart enough to know about the
+ * various parameters in order to compute the partial derivatives
+ * appropriately. Since the problem-specific logic is mainly related to
+ * the various measurements models, the simplest way to use this class
+ * is by extending it and using one internal class extending
+ * {@link WeightedMeasurement WeightedMeasurement} for each measurement
+ * type. The instances of the internal classes would have access to the
+ * various parameters and their current estimate.</p>
+ */
+public class SimpleEstimationProblem implements EstimationProblem {
+
+    /**
+     * Build an empty instance without parameters nor measurements.
+     */
+    public SimpleEstimationProblem() {
+        parameters = new ArrayList();
+    }
+
+    public EstimatedParameter[] getAllParameters() {
+        return (EstimatedParameter[]) parameters.toArray(new EstimatedParameter[parameters.size()]);
+    }
+
+    public EstimatedParameter[] getUnboundParameters() {
+
+        // filter the unbound parameters
+        ArrayList unbound = new ArrayList(parameters.size());
+        for (Iterator iterator = parameters.iterator(); iterator.hasNext();) {
+            EstimatedParameter p = (EstimatedParameter) iterator.next();
+            if (! p.isBound()) {
+                unbound.add(p);
+            }
+        }
+
+        // convert to an array
+        return (EstimatedParameter[]) unbound.toArray(new EstimatedParameter[unbound.size()]);
+        
+    }
+
+    public WeightedMeasurement[] getMeasurements() {
+        return (WeightedMeasurement[]) measurements.toArray(new WeightedMeasurement[measurements.size()]);
+    }
+
+    protected void addParameter(EstimatedParameter p) {
+        parameters.add(p);
+    }
+
+    /**
+     * Add a new measurement to the set.
+     * @param m measurement to add
+     */
+    protected void addMeasurement(WeightedMeasurement m) {
+        measurements.add(m);
+    }
+
+    /** Estimated parameters. */
+    private ArrayList parameters;
+
+    /** Measurements. */
+    private ArrayList measurements;
+
+}

Propchange: commons/proper/math/trunk/src/java/org/apache/commons/math/estimation/SimpleEstimationProblem.java
------------------------------------------------------------------------------
    svn:eol-style = native



Mime
View raw message