oj! Algorithms v51.4.1 Release Notes

Release Date: 2022-08-26 // 9 months ago
  • ๐Ÿ›  Fixed


    • ๐Ÿ›  Fixed a problem with the IntegerSolver where you could get an ArrayIndexOutOfBoundsException when concurrently solving multiple problem instances sharing the same IntegerStrategy.


    • ๐Ÿ›  Fixed a regression with RandomNumber where it was no longer possible to set a seed for the underlying java.util.Random instance.

Previous changes from v51.4.0

  • Last version to target Java 8!

    โž• Added


    • ๐Ÿ†• New class org.ojalgo.data.domain.finance.series.FinanceDataReader that implements both FinanceData and DataFetcher. Instead of fetching data from some (web) service it reads and and parses files. Already had some parsers, and since it implements both FinanceData and DataFetcher, it can be used with much of the existing code. In particular DataSource has been updated to include this reader option.
    • ๐Ÿ†• New alternatives to calculate correlations and covariance matrices in DataProcessors.


    • AggregatorFunction gained a new method filter(PredicateFunction) that allows to define a filter for which values will be considered in the aggregation.


    • ๐Ÿ†• New methods in BasicLogger to handle logging of exceptions with stacktrace.
    • ๐Ÿ— With a TextLineWriter it is now possible to instantiate a CSV line/row builder to help create "text lines" that are delimited data.


    • ๐Ÿ†• New package org.ojalgo.random.scedasticity containing ARCH and GARCH models as well as stochatstic processes based on those.


    • ๐Ÿ†• New class SimpleSeries that is the simplest possible BasicSeries implementation.
    • โž• Added capabilities to do things like quotients, log and differences on a CoordinatedSet (of PrimitiveSeries) as well as possibility to get a correlations or cocariance matrix directly.

    ๐Ÿ”„ Changed


    • ๐Ÿ”จ Refactoring of the org.ojalgo.data.domain.finance.series package. This package very much depends on org.ojalgo.series which is extensively refactored.
    • FinanceData is now generic and the getHistoricalPrices() method is now declared to contain a specified subclass of DatePrice.
    • ๐Ÿ—„ DatePrice now implements EntryPair.KeyedPrimitive rather than the deprecated KeyValue interface. The public key field has been renamed date (the date is the key). All DatePrice subclasses are now immutable.
    • The getPriceSeries() method of FinanceData changed the return type from BasicSeries<LocalDate, Double> to BasicSeries<LocalDate, PrimitiveNumber> and the BasicSeries implementation used is also changed.


    • ๐Ÿšš The Process1D class is now final. It used to have some subclasses that had been depreceted for a while, they're now removed.


    • ๐Ÿ”จ Extensive refactoring of all BasicSeries subinterfaces and implementations, including some breaking name changes. The BasicSeries.NaturallySequenced interface still exists, but is not really used for anything. All the useful stuff is in BasicSeries. All methods that used long keys to interact with entries are removed.


    • The interface CalendarDate.Resolution now also extends Structure1D.IndexMapper and defines a method to adjustInto for CalendarDate.

    ๐Ÿ›  Fixed


    • ๐Ÿ›  Fixed problems related to extracting eigenpairs and calculating generalised Eigenvalue decompositions for complex matrices (ComplexNumber elements).