All Versions
46
Latest Version
Avg Release Cycle
41 days
Latest Release
609 days ago

Changelog History
Page 3

  • v48.3.1 Changes

    October 01, 2020

    ๐Ÿ”„ Changed

    org.ojalgo.optimisation

    • Minor internal change to SimplexSolver regarding when phase 1 is regarded done.

    ๐Ÿ›  Fixed

    org.ojalgo.function

    • Aggregator.MAXIMUM was initialised/reset incorrectly which caused wrong results with negative numbers

    org.ojalgo.optimisation

    • ConvexSolver results now include the Lagrange multipliers.
  • v48.3.0 Changes

    September 03, 2020

    โž• Added

    org.ojalgo.ann

    • ๐Ÿ‘Œ Support for float.
    • Possible to "get" all individual parameters of the network
    • Possibility to save trained networks to disk (and then later read them back)
    • ๐Ÿ— Separate between building, training and invoking the network - 3 different classes to do that.
    • Possible to have several network invokers used in different threads.
    • ๐Ÿ‘Œ Support for dropouts as well as L1 and L2 regularisation when training the network.

    ๐Ÿ”„ Changed

    org.ojalgo.ann

    • ๐Ÿ—„ The NetworkBuilder has been split into a NetworkBuilder and a NetworkTrainer. Most of the previous API is still in place, but deprecated, and in many of those cases old code referencing NetworkBuilder needs to instead use the new NetworkTrainer. The new NetworkBuilder primarily enables a better way to construct the network. Most of the previously existing stuff is in the new NetworkTrainer;

    ๐Ÿ—„ Deprecated

    org.ojalgo.ann

    • ๐Ÿ— Several things regarding how to build/train and invoke a neural network has been redesigned resulting in deprecations of specific methods.
  • v48.2.0 Changes

    June 22, 2020

    โž• Added

    org.ojalgo.function

    • ๐Ÿ†• New atan2 approximation that is about 10x faster than the ordinary Math.atan2
    • The lower/upper incomplete Gamma functions

    org.ojalgo.random

    • Implemented the ChiSquare distribution
    • Implemented the T distribution

    org.ojalgo.structure

    • ๐Ÿ†• New method repeat(int,int) in Structure2D.Logical implemented in MatrixStore.LogicalBuilder and BasicMatrix.LogicalBuilder.

    org.ojalgo.type

    • ๐Ÿ†• New array builder and (type) converter class named FloatingPointReceptacle.
    • PrimitiveNumber implementations for all primitive number types.
    • ๐Ÿ†• New classes EntryPair, EntryList, EntrySet and IndexedMap to deal with key-value pairs in various ways.

    ๐Ÿ”„ Changed

    org.ojalgo.optimisation

    • ๐Ÿ”„ Changed how the IntegerSolver instantiates its ForkJoinPool; using Java 9's more expressive constructor if it's available.
    • Modifications to the parameter scaling functionality of ExpressionsBasedModel

    ๐Ÿ—„ Deprecated

    org.ojalgo.type

    • ๐Ÿ“ฆ Everything, previously existing, in the org.ojalgo.type.keyvalue package has been deprecated. Instead there is a new interface EntryPair, as well as a collection of implementations, that replace it. The functionality of the old and new stuff only partially overlap. There are also matching classes EntryList, EntrySet and others.

    ๐Ÿ›  Fixed

    org.ojalgo.matrix

    • ๐Ÿ›  Fixed a problem in SparseStore when concurrently adding different elements
    • ๐Ÿ›  Reviewed and potentially fixed various problems regarding matrix multiplication with more Than Integer.MAX_VALUE elements.

    org.ojalgo.optimisation

    • Fixed a problem where time_abort would be ignored if the solver had found a feasible solution. (In that case it would only check time_suffice.)

    โœ‚ Removed

    org.ojalgo.structure

    • The all int version of the Structure2D.index(...) method. With larger 2D structures this would overflow.
  • v48.1.0 Changes

    January 15, 2020

    ๐Ÿ”„ Changed

    • ๐Ÿšš A number of minor changes to improve interoperability with other JVM languages. Essentially tried to remove all cases with public methods declared in non-public abstract classes.

    org.ojalgo.array

    • Reviewed equals() and hashCode() implementations for most classes
    • Explicitly/correctly implemented doubleValue(long) and floatValue(long) methods in more classes

    org.ojalgo.type

    • It is now possible to "stop" and "reset" the Stopwatch with a single method call.

    ๐Ÿ›  Fixed

    org.ojalgo.array

    • A case of infinitite loop with (some) fillOne(...) methods
  • v48.0.0 Changes

    November 24, 2019

    โž• Added

    • ๐Ÿ‘Œ Improved support for float throughout the library, and specifically added matrices with float elements.

    org.ojalgo.algebra

    • ๐Ÿ‘ ScalarOperation has been extended with support for float arguments.

    org.ojalgo.function

    • ๐Ÿ†• New special functions: beta (complete, incomplete and regularized), gamma (logarithmic), Hypergeometric and Pochhammer symbol. Inluding complex valued variants where applicable. The complete gamma function existed previously, and the upper/lower incomplete gamma functions are only implemented for the integer case.
    • All the function interaces now have float specific methods.

    org.ojalgo.matrix

    • There is a new float based matrix store implementation, Primitive32Store.

    org.ojalgo.random

    • The getDistribution() method in the TDistribution is now implemented for the general case. Previously it was only implemented for a few distinct degrees of freedom.

    ๐Ÿ”„ Changed

    • โšก๏ธ Generic declarations in interfaces and abstract classes (everywhere) that used to be <N extends Number> are now <N extends Comparable<N>>. Code that extends/implements ojAlgo classes and interaces will most likely need to be updated. Simple usage may not require any changes at all. Please note that java.lang.Number is NOT Comparable but all the speciic subclasses are.
    • Everything (classes/interfaces, constants...) named "Primitive" -something now separates between "Primitive32" and "Primitive64".

    org.ojalgo.matrix

    • PrimitiveDenseStore has been renamed Primitive64Store (and there is now also a Primitive32Store). GenericDenseStore was also renamed GenericStore. Likewise PrimitiveMatrix is repalced by Primitive64Matrix and Primitive32Matrix.

    org.ojalgo.scalar

    • ComplexNumber and Quaternion are now final. That means there are no longer special normalised subclasses (no Versor).

    org.ojalgo.structure

    • The methods in the Mutate*D.Fillable interaces that take a NullaryFunction as input has changed the generic declaration from NullaryFunction<N> to NullaryFunction<?>.
    • Reftactoring of the Factory*D interfaces.
  • v47.3.1 Changes

    September 29, 2019

    โž• Added

    org.ojalgo.function

    • ๐Ÿ†• New special function utility class PowerOf2. It replaces what was in PrimitiveMath, made some improvements and addition and added support or 'int' (used to be only 'long').

    ๐Ÿ”„ Changed

    org.ojalgo.matrix

    • ๐Ÿšš The multithreaded implementations of aggregateAll in PrimkitiveDenseStoree and GenericDenseStore are removed.

    org.ojalgo.optimisation

    • The iterative version of the ActiveSetSolver now enforce an iterations limit on its internal subsolver.

    org.ojalgo.structure

    • ๐Ÿ—„ The stream(boolean) methods of ElementView, RowView and ColumnView are deprecated and replaced with a simple stream() method. You no longer have the option to use parallel streams.

    ๐Ÿ—„ Deprecated

    org.ojalgo.function

    • ๐Ÿ”€ The merge functionality of AggregatorFunction is deprecated.
    • Everything related to "power of 2" has been deprecetd in PrimitiveMath.
    • ๐Ÿšš FunctionUtils has been deprecated. Everything in it has been moved elsewhere โ€“ mostly to MissingMath.

    ๐Ÿ›  Fixed

    • The compareTo method of CalendarDateDuration didn't work when the unit of either instances was "nanos".
  • v47.3.0 Changes

    August 08, 2019

    ๐Ÿ”„ Changed

    org.ojalgo

    • The OjAlgoUtils.ENVIRONMENT can now be modified to limit the parallelism of ojAlgo.

    org.ojalgo.algebra

    • โž• Added a power(int) method to the Operation.Multiplication interface.

    org.ojalgo.array

    • ๐Ÿ“ฆ The package org.ojalgo.array.blas has been renamed org.ojalgo.array.operation
    • ๐Ÿ“ฆ The utility classes Raw1D, Raw2D and RawAnyD have been removed and their contents moved to various classes in the new package org.ojalgo.array.operation
    • ๐Ÿšš Everything in org.ojalgo.matrix.store.operation has been moved to org.ojalgo.array.operation

    org.ojalgo.data

    • โž• Added a variant of the covariances method in DataProcessors that take double[]... as input.

    org.ojalgo.function

    • ๐Ÿ”จ Refactoring in the org.ojalgo.function.multiary package including (api-breaking) name changes to some interfaces and classes. The previous QuadraticFunction has been renamed PureQuadraticFunction, and CompoundFunction renamed QuadraticFunction. Further there is now both a LinearFunction and an AffineFunction.

    org.ojalgo.matrix

    • ๐Ÿ—„ Various deprecations in MatrixStore.LogicalBuilder and the corresponding LogicalBuilder:s of PrimitiveMatrix, ComplexMatrix & RationalMatrix. Everything in the LogicalBuilder:s are now either defined in org.ojalgo.structure.Structure2D.Logical or deprecated.
    • ๐Ÿ‘‰ Tweaked the isSolvable() method implementations of the Cholesky decompositions to return true slightly less often.
    • ๐ŸŒฒ The debug logging of the iterative solvers now output the relative error at each iteration.
    • Implemented the power(int) method defined in Operation.Multiplication.
    • ๐Ÿ†• New method getCovariance in the SingularValue interface
    • Q1 and Q2 in the SingularValue decomposition have been renamed U and V to match denominations commonly used elsewhere. In Bidiagonal Q1 and Q2 have been renamed LQ and RQ.
    • ๐Ÿ†• New MatrixStore implementation DiagonalStore to be used for diagonal, bidiagonal and tridiagonal matrices. Replaces two different previous (package private) implementations.
    • MatrixStore.Factory has a new method makeDiagonal(...)
    • MatrixStore.LogicalBuilder has new implementations for the diagonal(), bidiagonal(boolean) and tridiagonal() methods.
    • Some improvements to TransposedStore โ€“ more efficient use of the underlying store. Particular in the case when it is a RawStore.
    • ๐Ÿ”จ Some general cleanup/refactoring among the Eigenvalue related code.
    • โž• Added support for generalised eigenvalue problems.
    • ๐Ÿ›  Fixed a bug in RawStore - visitRow/Column were interchanged
    • ๐Ÿšš Everything in org.ojalgo.matrix.store.operation has been moved to org.ojalgo.array.operation

    org.ojalgo.optimisation

    • Minor rounding/precision related change to how ExpressionsBasedModel receives the solution from the solver and then returns it. The options.solution property is now enforced.
    • ๐Ÿ”จ Internal refactoring of ConvexSolver and its subclasses. This includes changes in behaviour (handling of not-so-convex or otherwise difficult problems).
    • 0๏ธโƒฃ The IntegerSolver now uses its own ForkJoinPool instance rather than the default commonPool(). The parallelism is derived from OjAlgoUtils.ENVIRONMENT.
    • ๐Ÿ”จ Internal refactoring related to the LinearSolver.Builder as well as the ConvexSolver.Builder.

    org.ojalgo.random

    • SampleSet can now swap in a double[]

    org.ojalgo.scalar

    • Implemented the power(int) method defined in Operation.Multiplication.

    org.ojalgo.structure

    • โž• Additions to Structure2D.Logical (Moved definitions from MatrixStore.LogicalBuilder to here).
    • ๐Ÿ”จ Refactoring to Factory1D, Factory2D and FactoryAnyD โ€“ makeZero(...) is renamed make(...) and everything else is moved to a nested subinterface Dense.
  • v47.2.0 Changes

    May 03, 2019

    ๐Ÿ”„ Changed

    org.ojalgo.data

    • ๐Ÿ“‡ Renamed DataPreprocessors to DataProcessors, and added methods to create a covariance matrix from an SVD.

    org.ojalgo.function

    • โž• Added a couple more utilities to MissingMath

    org.ojalgo.matrix

    • ๐Ÿ†• New LU decomposition implementation that is faster for small matrices.
    • ๐Ÿ›  Fixed a bug related to solving equation systems and inverting matrices using SingularValue at certain matrix sizes.
    • ๐Ÿ“‡ Renamed checkAndCompute to checkAndDecompose in the MatrixDecomposition.Hermitian interface
    • Extended the MatrixStore.LogicalBuilder rows() and columns() methods to allow for negative indexes that refer to all zero rows/columns.
    • ๐Ÿ†• New more efficient implementation of MatrixStore.LogicalBuilder.diagonal() data structure.
    • The MatrixDecomposition interface now extends Structure2D so that you can get the size/shape of the original matrix.
    • โž• Additions to the MatrixDecomposition.RankRevealing interface. It is now possible to estimate the rank using a custom threshold. Also reworked all code related to estimating rank (in all implementations of that interface).

    org.ojalgo.netio

    • ๐Ÿ†• New funcion to generate random strings of ASCII characters, of specified length.

    org.ojalgo.optimisation

    • The optimisation model parameter scaling functionality has been tweaked to be more in line with the improved "rank revealing" of matrices.
    • Minor improvements to ConvexSolver

    org.ojalgo.structure

    • The Stream2D interface now has methods operateOnColumns(...) and operateOnRows(...)
  • v47.1.2 Changes

    April 23, 2019

    ๐Ÿ”„ Changed

    org.ojalgo.matrix

    • ๐Ÿ›  Fixed bug related to LDL โ€“ stackoverflow if you called isSolvable() on some LDL instances.
    • Various tweaks and cleanup with MatrixDecompostion:s
  • v47.1.1 Changes

    April 12, 2019

    ๐Ÿ”„ Changed

    org.ojalgo.constant

    • โšก๏ธ The stuff that was deprecated with v47.1.0 are now removed. (Keeping it around may cause problems with some IDE:s) Just update your import statements to org.ojalgo.function.constant rather than org.ojalgo.constant.

    org.ojalgo.data

    • โž• Additions and improvements to DataPreprocessors, but they're now column oriented only.

    org.ojalgo.matrix

    • The ElementsConsumer interface has been renamed TransformableRegion. This is an intermediate definitions interface - subinterfaces and concrete implementations are not affected other than with their implements and extends declarations.

    org.ojalgo.structure

    • ๐Ÿšš The interfaces Mutate1D.Transformable, Mutate2D.Transformable and MutateAnyD.Transformable introduced with v47.1.0 are removed again โ€“ bad idea.
    • The Stream1D, Stream2D and StreamAnyD each got a new method named operateOnAny that takes a Transformation?D as input.
    • The Mutate1D.ModifiableReceiver, Mutate2D.ModifiableReceiver and MutateAnyD.ModifiableReceiver each got a new method named modifyAny that takes a Transformation?D as input.