You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Gilles (JIRA)" <ji...@apache.org> on 2016/02/09 16:58:18 UTC

[jira] [Resolved] (MATH-1321) SimplexOptimizer returns wrong values

     [ https://issues.apache.org/jira/browse/MATH-1321?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Gilles resolved MATH-1321.
--------------------------
    Resolution: Not A Problem

Thanks for the feedback.

> SimplexOptimizer returns wrong values
> -------------------------------------
>
>                 Key: MATH-1321
>                 URL: https://issues.apache.org/jira/browse/MATH-1321
>             Project: Commons Math
>          Issue Type: Bug
>    Affects Versions: 3.6
>         Environment: Fedora 23,
> java version "1.8.0_51"
> Java(TM) SE Runtime Environment (build 1.8.0_51-b16)
> Java HotSpot(TM) 64-Bit Server VM (build 25.51-b03, mixed mode)
>            Reporter: Pavol Loffay
>            Priority: Blocker
>
> Hello I'm trying to minimize MSE of double exponential smoothing and get optimal parameters alpha and beta. 
> https://www.otexts.org/fpp/7/2
> During the minimization the output shows values of alpha and beta which differs from alpha, and beta returned from SimplexOptimizer.optimize().
> {code:title=output|borderStyle=solid}
> ...
> Nelder MSE = 0.007226473669598979, alpha=0.896283, beta=0.228161
> Nelder MSE = 0.0069843320509952005, alpha=0.913694, beta=0.190210 # returned minimum
> Nelder MSE = 0.008577342645261695, alpha=0.931617, beta=0.131448
> Nelder MSE = 0.00743296945818598, alpha=0.918018, beta=0.166808
> Nelder MSE = 0.007818891499431175, alpha=0.936768, beta=0.136053
> Nelder MSE = 0.007293932014855209, alpha=0.927010, beta=0.155973
> Nelder MSE = 0.007319455298330941, alpha=0.923120, beta=0.178180
> Nelder MSE = 0.007110221641945739, alpha=0.921873, beta=0.175281
> Nelder MSE = 0.007271067724068611, alpha=0.907713, beta=0.212689
> Nelder MSE = 0.007084561548618076, alpha=0.912928, beta=0.197226
> Nelder MSE = 0.007072487763137581, alpha=0.903911, beta=0.213540
> Nelder -> key = [2.3595947265625, -1.44864501953125], fce minimum= 0.00698433205099520050
> {code}
> {code:title=Test.java|borderStyle=solid}
> @Test
>     public void testOptimization() throws IOException {
>         int maxEval = 1000;
>         int maxIter = 1000;
>         // Nelder-Mead Simplex
>         SimplexOptimizer nelderSimplexOptimizer = new SimplexOptimizer(0.0001, 0.0001);
>         PointValuePair nelderResult = nelderSimplexOptimizer.optimize(
>                 GoalType.MINIMIZE, new MaxIter(maxIter), new MaxEval(maxEval),
>                 new InitialGuess(new double[]{0.4, 0.1}), new ObjectiveFunction(optimizationFn("Nelder")),
>                 new NelderMeadSimplex(2));
>  System.out.format("\nNelder (%d eval) -> key = %s, fce minimum= %.20f", nelderSimplexOptimizer.getEvaluations(),
>                 Arrays.toString(nelderResult.getKey()), nelderResult.getValue());
> }
> private MultivariateFunction optimizationFn(String algorithm) {
>         final List<DataPoint> testData = metricData.subList(0, 50);
>         // func for minimization
>         MultivariateFunction multivariateFunction = point -> {
>             double alpha = point[0];
>             double beta = point[1];
>             DoubleExponentialSmoothing doubleExponentialSmoothing = new DoubleExponentialSmoothing(alpha, beta);
>             AccuracyStatistics accuracyStatistics = doubleExponentialSmoothing.init(testData);
>             System.out.format("%s MSE = %s, alpha=%f, beta=%f\n", algorithm, accuracyStatistics.getMse(), alpha, beta);
>             return accuracyStatistics.getMse();
>         };
>         MultivariateFunctionMappingAdapter multivariateFunctionMappingAdapter =
>                 new MultivariateFunctionMappingAdapter(multivariateFunction,
>                         new double[]{0.0, 0.0}, new double[]{1, 1});
>         return multivariateFunctionMappingAdapter;
>     }
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)