oj! Algorithms v44.0.0 Release Notes

Release Date: 2017-09-27 // over 6 years ago
  • ๐Ÿ”„ Changed

    org.ojalgo.access

    • ๐Ÿšš Deprecated AccessUtils. All the various utility methods have been moved to other places - primarily to the Acess1D, Access2D or AccessAnyD interfaces.
    • The generic declaration of the IndexMapper interface has been changed from > to simply , and it is now a nested interface of Structure1D. Similarly there are now nested interfaces RowColumnMapper and ReferenceMapper in Structure2D and StructureAnyD respectively.
    • The ElementView1D interface no longer extends ListIterator, but only Iterator. Instead it now extends Spliterator, and there is now a metod stream(boolean).
    • The Mutate1D interface now declares a method reset() that should reset the mutable structure to an (all zeros) initial state.
    • The Factory_D interfaces now has new variants of the makeZero(...) and makeFilled(...) methods that take Structure_D instances as input.

    org.ojalgo.array

    • ๐Ÿšš Deprecated ArrayUtils. All the various utility methods have been moved to other places - primarily to the new Raw1D, Raw2D or RawAnyD classes. (ArrayUtils was split into Raw1D, Raw2D and RawAnyD.)

    org.ojalgo.concurency

    • The DivideAndConquer class now has a limit on the total number of threads it will create. (If a program had multiple threads that each invoked some multithreaded part of ojAlgo, the total number of threads would multiply and grow out of control.)

    org.ojalgo.constant

    • ๐Ÿ†• New constant GOLDEN_RATIO

    org.ojalgo.finance

    • ๐Ÿ“ฆ This entire package has been moved to the ojAlgo-finance repository/project/artefact !!!
    • ๐Ÿ›  Fixed a bug related to downloading historical data from Google and/or Yahoo Finance. When parsing the initial header line failed it was still translated to an actual data item with all zero values at a default/dummy date.
    • ๐Ÿ†• New version of YahooSymbol that works with Yahoo Finance's changes. (They deliberately changed/broke the previously existing method of downloading.)

    org.ojalgo.matrix

    • ๐Ÿšš org.ojalgo.matrix.task.TaskException has been removed and replaced with org.ojalgo.RecoverableCondition.
    • ๐Ÿšš org.ojalgo.matrix.MatrixError has been removed and replaced with various standard java.lang.RuntimeException subclasses instantiated via factory methods in org.ojalgo.ProgrammingError.
    • ๐Ÿ†• New interface MatrixDecomposition.RankRevealing that define two methods: getRank() and isFullRank(). Several of the existing decompositions now implement this interface. This also caused a review of the implementations of the isSolvable() method of the MatrixDecomposition.Solver interface.
    • ๐Ÿ—„ Deprecated isSquareAndNotSingular() of the LU interface.
    • ๐Ÿ‘Œ Improved the multiplication code of SparseStore, ZeroStore and IdentityStore. In particular sparse matrix multiplication is now parallelised.
    • ๐Ÿšš Moved (deprecated) the matrix size thresholds methods from org.ojalgo.matrix.MatrixUtils to org.ojalgo.matrix.store.operation.MatrixOperation.
    • ๐Ÿ“œ Altered the RowsSupplier and ColumnsSupplier classes to (always) use sparse rows/columns.

    org.ojalgo.netio

    • ๐Ÿšš The parse(String) method of BasicParser now declares to throw a RecoverableCondition. Failure to parse an individual line now just results in that line being skipped, and the process moves on to the next line.
    • ๐Ÿ”จ The ResourceLocator class has been refactored. Essentially it's a URI/URL builder and it is now implemented using the builder pattern. The changes are API breaking this class is rarely used directly. It is mostly used indirectly via GoogleSymbol and YahooSymbol, and those classes' public API:s are intact.

    org.ojalgo.optimisation

    • ๐Ÿ‘Œ Improved the ConvexSolver to better handle cases with not positive definite and/or rank deficient covariance matrices (the quadratic term).
    • ๐Ÿ‘Œ Improved the IntegerSolver to better handle cases with problem parameters with significant magnitude differences (it affected the branching strategy unfavourably).
    • ๐Ÿ›  Fixed a problem with debug printing in the IntegerSolver.
    • ๐Ÿ”จ Refactored major parts of the LinearSolver. Among other things the internal data structures are now sometimes sparse depending on the problem size (and sparsity).
    • ๐Ÿ”จ Refactored parts of the ConvexSolver to make better use of sparsity (and other things).

    org.ojalgo.series

    • ๐Ÿšš The declaration of the resample(...) methods of CalendarDateSeries have been moved to the BasicSeries.NaturallySequenced interface with generalised signatures.
    • ๐Ÿ”ง The TimeSeriesBuilder can now be configured using CalendarDate.Resolution rather than only CalendarDateDuration.

    org.ojalgo.type

    • ๐Ÿ†• New Stopwatch class
    • The CalendarDate constructor with a String argument/parameter now declares to throw a RecoverableCondition.
    • NumberContext now has specific format(double) and format(long) methods, and now formats decimals with a variable number of fraction digits.
    • NumberContext now has new compare(double,double) and compare(float,float) that are alternatives to the compare(...) methods in Double and Float - the only difference is that these return 0 when the two input args are ==.