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 Sadowski (Jira)" <ji...@apache.org> on 2023/07/06 18:14:00 UTC
[jira] [Comment Edited] (MATH-1656) Classical multivariate optimizers (gradient descent, Raphson-Newton, BFGS) are missing
[ https://issues.apache.org/jira/browse/MATH-1656?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17740671#comment-17740671 ]
Gilles Sadowski edited comment on MATH-1656 at 7/6/23 6:13 PM:
---------------------------------------------------------------
{quote}please find a patch with a provisional version [...]
{quote}
Thanks!
Here is a (probably non-exhaustive) list of issues from a first look.
# The default build fails. Log excerpt:
{noformat}
[...]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0:test (default-test) on
project commons-math4-legacy:
Please refer to /home/gilles/gilles/devel/java/apache/commons-math/trunk/commons-math-legacy/target/surefire-reports for the individual test results.
Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
There was an error in the forked process
Error occurred in starting fork, check output in log
0
java.lang.SecurityException: 0
at org.apache.commons.math4.test.util.DiffTest$TestSecurityManager.checkExit(DiffTest.java:150)
at java.base/java.lang.Runtime.exit(Runtime.java:114)
at java.base/java.lang.System.exit(System.java:1752)
at org.apache.maven.surefire.booter.ForkedBooter.acknowledgedExit(ForkedBooter.java:381)
at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:178)
at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
[...]
{noformat}
# Files location of
** *source code* is in directory
{noformat}
commons-math-legacy/src/main/java/org/apache/commons/math4/optim/
{noformat}
but should be in
{noformat}
commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/optim/
{noformat}
** *test source code* is in directory
{noformat}
commons-math-legacy/src/test/java/org/apache/commons/math4/optim/
{noformat}
but should be in
{noformat}
commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/
{noformat}
** *(test) resources* are in directory
{noformat}
commons-math-legacy/src/test/resources/org/apache/commons/math4/optim
{noformat}
but should be in
{noformat}
commons-math-legacy/src/test/resources/org/apache/commons/math4/legacy/optim
{noformat}
# Strange (spurious ?) files in resources directories:
** {{stdout.txt}}
** {{stderr.txt}}
** {{status.txt}}
# Additions to the _public_ API need prior discussion (to avoid code bloat), e.g.
** {{DebugMode}}
** {{DoubleData}}
** {{DoubleStrictlyPostiveData}}
** {{ObjectiveFunctionDimension}}
** {{OptimizationStatus}}
** {{SearchRange}}
** {{MinDirectionNorm}}
** {{LinearUtil}}
** ...
# {{LinearUtil}} defines many utilities already present in (or that should belong to) class [{{MathArrays}}|https://github.com/apache/commons-math/blob/master/commons-math-legacy-core/src/main/java/org/apache/commons/math4/legacy/core/MathArrays.java].
# The test infrastructure may be a neat idea (I didn't look at the details) but it completely departs from the existing approach (Junit 4) and the expected upgrade path using Junit 5 features (see e.g. in ["SimplexOptimizerTest.java"|https://github.com/apache/commons-math/blob/master/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/SimplexOptimizerTest.java])
# New _public_ or _protected_ methods (like {{{}initOptimization{}}}) should be discussed.
Other, comparatively smaller, issues:
* We don't use {{@author}} tags.
* All fields and methods (including _private_ ones) must be documented.
* Abbreviated names should be avoided ({{{}initOptimization{}}} for example should be {{{}initializeOptimization{}}}, or perhaps just {{{}initialize{}}}) unless they have become "well-known" (like "BFGS" maybe).
* The "default constructor" should not be explicitly declared.
was (Author: erans):
{quote}please find a patch with a provisional version [...]
{quote}
Thanks!
Here is a (probably non-exhaustive) list of issues from a first look.
# The default build fails. Log excerpt:
{noformat}
[...]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:3.0.0:test (default-test) on
project commons-math4-legacy:
Please refer to /home/gilles/gilles/devel/java/apache/commons-math/trunk/commons-math-legacy/target/surefire-reports for the individual test results.
Please refer to dump files (if any exist) [date].dump, [date]-jvmRun[N].dump and [date].dumpstream.
There was an error in the forked process
Error occurred in starting fork, check output in log
0
java.lang.SecurityException: 0
at org.apache.commons.math4.test.util.DiffTest$TestSecurityManager.checkExit(DiffTest.java:150)
at java.base/java.lang.Runtime.exit(Runtime.java:114)
at java.base/java.lang.System.exit(System.java:1752)
at org.apache.maven.surefire.booter.ForkedBooter.acknowledgedExit(ForkedBooter.java:381)
at org.apache.maven.surefire.booter.ForkedBooter.execute(ForkedBooter.java:178)
at org.apache.maven.surefire.booter.ForkedBooter.run(ForkedBooter.java:507)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:495)
[...]
{noformat}
# Files location of
** *source code* is in directory
{noformat}
commons-math-legacy/src/main/java/org/apache/commons/math4/optim/
{noformat}
but should be in
{noformat}
commons-math-legacy/src/main/java/org/apache/commons/math4/legacy/optim/
{noformat}
** *test source code* is in directory
{noformat}
commons-math-legacy/src/test/java/org/apache/commons/math4/optim/
{noformat}
but should be in
{noformat}
commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/
{noformat}
** *(test) resources* are in directory
{noformat}
commons-math-legacy/src/test/resources/org/apache/commons/math4/optim
{noformat}
but should be in
{noformat}
commons-math-legacy/src/test/resources/org/apache/commons/math4/legacy/optim
{noformat}
# Strange (spurious ?) files in resources directories:
** {{stdout.txt}}
** {{stderr.txt}}
** {{status.txt}}
# Additions to the _public_ API need prior discussion (to avoid code bloat), e.g.
** {{DebugMode}}
** {{DoubleData}}
** {{DoubleStrictlyPostiveData}}
** {{ObjectiveFunctionDimension}}
** {{OptimizationStatus}}
** {{SearchRange}}
** {{MinDirectionNorm}}
** {{LinearUtil}}
** ...
# {{LinearUtil}} defines many utilities already present in (or that should belong to) class [{{MathArrays}}|https://github.com/apache/commons-math/blob/master/commons-math-legacy-core/src/main/java/org/apache/commons/math4/legacy/core/MathArrays.java].
# The test infrastructure may be a neat idea (I didn't look at the details) but since it completely departs from the existing approach (Junit 4) and the expected upgrade path using Junit 5 features (see e.g. in ["SimplexOptimizerTest.java"|https://github.com/apache/commons-math/blob/master/commons-math-legacy/src/test/java/org/apache/commons/math4/legacy/optim/nonlinear/scalar/noderiv/SimplexOptimizerTest.java])
# New _public_ or _protected_ methods (like {{initOptimization}}) should be discussed.
Other, comparatively smaller, issues:
* We don't use {{@author}} tags.
* All fields and methods (including _private_ ones) must be documented.
* Abbreviated names should be avoided ({{initOptimization}} for example should be {{initializeOptimization}}, or perhaps just {{initialize}}) unless they have become "well-known" (like "BFGS" maybe).
* The "default constructor" should not be explicitly declared.
> Classical multivariate optimizers (gradient descent, Raphson-Newton, BFGS) are missing
> --------------------------------------------------------------------------------------
>
> Key: MATH-1656
> URL: https://issues.apache.org/jira/browse/MATH-1656
> Project: Commons Math
> Issue Type: Wish
> Components: legacy
> Affects Versions: 4.0-beta1
> Reporter: François Laferrière
> Priority: Major
> Labels: features
> Attachments: MATH-1658-GradientDescent-Newton-BFGS.patch
>
>
> Some classical multivariate such as
> * gradient descent,
> * Raphson-Newton,
> * BFGS
> are missing.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)