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 [EMAIL PROTECTED] 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
+ * [EMAIL PROTECTED] 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


Reply via email to