You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by er...@apache.org on 2012/10/13 03:12:59 UTC
svn commit: r1397759 - in
/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/optimization/direct:
AbstractSimplex.java SimplexOptimizer.java
Author: erans
Date: Sat Oct 13 01:12:58 2012
New Revision: 1397759
URL: http://svn.apache.org/viewvc?rev=1397759&view=rev
Log:
MATH-874
New API allows to pass the simplex as an argument to "optimize".
Modified:
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/optimization/direct/AbstractSimplex.java
commons/proper/math/trunk/src/main/java/org/apache/commons/math3/optimization/direct/SimplexOptimizer.java
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/optimization/direct/AbstractSimplex.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/optimization/direct/AbstractSimplex.java?rev=1397759&r1=1397758&r2=1397759&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/optimization/direct/AbstractSimplex.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/optimization/direct/AbstractSimplex.java Sat Oct 13 01:12:58 2012
@@ -29,6 +29,7 @@ import org.apache.commons.math3.exceptio
import org.apache.commons.math3.exception.MathIllegalArgumentException;
import org.apache.commons.math3.exception.util.LocalizedFormats;
import org.apache.commons.math3.optimization.PointValuePair;
+import org.apache.commons.math3.optimization.OptimizationData;
/**
* This class implements the simplex concept.
@@ -47,7 +48,7 @@ import org.apache.commons.math3.optimiza
* @version $Id$
* @since 3.0
*/
-public abstract class AbstractSimplex {
+public abstract class AbstractSimplex implements OptimizationData {
/** Simplex. */
private PointValuePair[] simplex;
/** Start simplex configuration. */
Modified: commons/proper/math/trunk/src/main/java/org/apache/commons/math3/optimization/direct/SimplexOptimizer.java
URL: http://svn.apache.org/viewvc/commons/proper/math/trunk/src/main/java/org/apache/commons/math3/optimization/direct/SimplexOptimizer.java?rev=1397759&r1=1397758&r2=1397759&view=diff
==============================================================================
--- commons/proper/math/trunk/src/main/java/org/apache/commons/math3/optimization/direct/SimplexOptimizer.java (original)
+++ commons/proper/math/trunk/src/main/java/org/apache/commons/math3/optimization/direct/SimplexOptimizer.java Sat Oct 13 01:12:58 2012
@@ -26,6 +26,7 @@ import org.apache.commons.math3.optimiza
import org.apache.commons.math3.optimization.PointValuePair;
import org.apache.commons.math3.optimization.SimpleValueChecker;
import org.apache.commons.math3.optimization.MultivariateOptimizer;
+import org.apache.commons.math3.optimization.OptimizationData;
/**
* This class implements simplex-based direct search optimization.
@@ -118,9 +119,59 @@ public class SimplexOptimizer
* Set the simplex algorithm.
*
* @param simplex Simplex.
+ * @deprecated As of 3.1. The initial simplex can now be passed as an
+ * argument of the {@link #optimize(int,MultivariateFunction,GoalType,OptimizationData[])}
+ * method.
*/
+ @Deprecated
public void setSimplex(AbstractSimplex simplex) {
- this.simplex = simplex;
+ parseOptimizationData(simplex);
+ }
+
+ /**
+ * Optimize an objective function.
+ *
+ * @param maxEval Allowed number of evaluations of the objective function.
+ * @param f Objective function.
+ * @param goalType Optimization type.
+ * @param optData Optimization data. The following data will be looked for:
+ * <ul>
+ * <li>{@link org.apache.commons.math3.optimization.InitialGuess InitialGuess}</li>
+ * <li>{@link AbstractSimplex}</li>
+ * </ul>
+ * @return the point/value pair giving the optimal value for objective
+ * function.
+ */
+ @Override
+ protected PointValuePair optimizeInternal(int maxEval, MultivariateFunction f,
+ GoalType goalType,
+ OptimizationData... optData) {
+ // Scan "optData" for the input specific to this optimizer.
+ parseOptimizationData(optData);
+
+ // The parent's method will retrieve the common parameters from
+ // "optData" and call "doOptimize".
+ return super.optimizeInternal(maxEval, f, goalType, optData);
+ }
+
+ /**
+ * Scans the list of (required and optional) optimization data that
+ * characterize the problem.
+ *
+ * @param optData Optimization data. The following data will be looked for:
+ * <ul>
+ * <li>{@link AbstractSimplex}</li>
+ * </ul>
+ */
+ private void parseOptimizationData(OptimizationData... optData) {
+ // The existing values (as set by the previous call) are reused if
+ // not provided in the argument list.
+ for (OptimizationData data : optData) {
+ if (data instanceof AbstractSimplex) {
+ simplex = (AbstractSimplex) data;
+ continue;
+ }
+ }
}
/** {@inheritDoc} */