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

Changelog History
Page 2

  • v49.2.0 Changes

    October 05, 2021

    ๐Ÿ”„ Changed

    org.ojalgo.optimisation

    • ๐Ÿ”„ Changed what alternatives (method signatures) are available to copy and/or relax optimisation models. These are API (behaviour) breaking changes, but of features primarily used within ojAlgo (when writing test cases and such). If you've used methods named copy, relax, snapshot or simplify in ExpressionsBasedModel then be aware. Even if your code still compiles it may not do exactly what it did before.
    • ๐Ÿ”จ Refactoring of ExpressionsBasedModel primarily affecting how presolving deals with integer variables - increased the number of cases when integer rounding will actually occur.

    ๐Ÿ›  Fixed

    org.ojalgo.optimisation

    • ๐Ÿ›  Fixed problem with progress/debug logging of IntegerSolver. The node id and count were not correct. (Only an issue with log output.)
  • v49.1.0 Changes

    September 19, 2021

    ๐Ÿ”„ Changed

    org.ojalgo.matrix

    • Slight change in how shifting is done when calculating the EvD for non-symmetric. Not strictly a bug fix but this solved GitHub issue 366 (there is a chance this may introduce problems for other cases).

    org.ojalgo.optimisation

    • ๐Ÿ”จ The hierarchy of solver builders have been refactored. The most important change is that there are now 2 different LinearSolver builders โ€“ StandardBuilder and GeneralBuilder.
    • ๐Ÿšš Some very very small inequality parameters used to be removed (rounded to 0.0) when instantiating ConvexSolver. This is no longer done.
    • The ActiveSetSolver (ConvexSolver) no longer makes use of Lagrange multipliers obtained when finding an initial feasible solution (they're mostly 0.0 anyway).
    • ๐Ÿ”จ Refactoring to reduce copying (memory garbage) when initialising solvers
    • ๐Ÿ”„ Changed the default behaviour when Optimisation.Options.sparse is not set. If you don't set this the dense LinearSolver and the iterative ConvexSolver will be used.

    ๐Ÿ—„ Deprecated

    org.ojalgo.optimisation

    • ๐Ÿ”จ The solver builders have been refactored. All previous public constructors and factory methods are now deprecated. What you should do now is call ConvexSolver.newBuilder, LinearSolver.newStandardBuilder or LinearSolver.newGeneralBuilder. The only thing you absolutely have to change now is if you explicitly/directly called the LinearSolver.Builder constructor. That needs to be replaced by LinearSolver.StandardBuilder. Don't forget! The recommendation is to use ExpressionsBasedModel and let it instantiate the solvers for you. In that case you do not need to worry about any of these changes.
  • v49.0.3 Changes

    September 05, 2021

    ๐Ÿ”„ Changed

    org.ojalgo.optimisation

    • ๐Ÿ”„ Changed how the ConvexSolver (with inequality constraints) finds a first feasible solution. It should be both faster and more resilient now.
  • v49.0.2 Changes

    August 24, 2021

    ๐Ÿ”„ Changed

    org.ojalgo.tensor

    • ๐Ÿ”„ Changed the TensorFactory API a bit. (This package contains new functionality that may see more changes before the API stabilizes.)

    ๐Ÿ›  Fixed

    org.ojalgo.matrix

    • Continued operations on a transposed ElementsSupplier in some cases reversed the transposition.
  • v49.0.1 Changes

    August 11, 2021

    ๐Ÿ›  Fixed

    org.ojalgo.matrix

  • v49.0.0 Changes

    August 07, 2021
    • ๐Ÿšš Many things that have been deprecated for a while are now actually removed. Not all are mentioned specifically below.

    โž• Added

    org.ojalgo.ann

    • Now possible to train and invoke/evaluate neural networks in batches.

    org.ojalgo.array

    • Array2D and ArrayAnyD are now reshapable

    org.ojalgo.concurrent

    • โž• Additions to DaemonPoolExecutor: A ThreadFactory factory method, as well as a set of ExecutorService factory methods that makes use of that.
    • ๐Ÿ†• New utility ProcessingService standardise/simplify some ExecutorService usage.

    org.ojalgo.data

    • ๐Ÿ†• New DataBatch class. It's a resuable component to help collect 1D data in a 2D structure. Can be used with neural networks (and other things) to batch data.

    org.ojalgo.matrix

    • ๐Ÿ†• New interface Matrix2D common to both BasicMatrix (implements it) and MatrixStore (extends it).
    • โž• Additional matrix multiplication variants implemented.

    org.ojalgo.structure

    • A few additions to Structure2D.Logical like symmetric(...) and superimpose(...)
    • ๐Ÿ†• New interface Structure2D.Reshapable and StructureAnyD.Reshapable
    • AccessAnyD is now vector-terable in the same way it was already matrix-iterable โ€“ it now has a method vectors() and there is a new utility class VectorView.
    • Structure2D now directlty define the int valued getRowDim(), getColDim(), getMinDim() and getMaxDim() methods.

    org.ojalgo.tensor

    • ๐Ÿ“ฆ This package existed before but didn't really contain anything functional/useful โ€“ now it does. Now it contains 1D, 2D, and AnyD tensor implementations. These are not just (multi dimensional) arrays, but mathematical tensors as used by physicists and engineers. They are instatiated via special factories that implement various tensor products and direct sums. Further these factories are implemented as wrappers of (they delegate to) other 1D, 2D or AnyD factories. This means that just about any other data structure in ojAlgo can be created using the tensor product or direct sum implemenatations of these factories.

    ๐Ÿ”„ Changed

    org.ojalgo.ann

    • ๐ŸŽ Internal refactoring to ArtificialNeuralNetwork primarily to improve performance.
    • ๐Ÿ—„ The activator RECTIFIER has been deprecated/renamed RELU which is more in line with what users expect.

    org.ojalgo.concurrent

    • ๐Ÿ”„ Changed the Parallelism enum. Changed which instances are available but increased flexibility by implemention the new ParallelismSupplier interface.

    org.ojalgo.matrix

    • ElementsSupplier no longer extends Supplier<MatrixStore<N>> and no longer defines the method PhysicalStore.Factory<N, ?> physical(). Instead subinterfaces/implementors define corresponding functionality as needed.
    • ๐Ÿ“„ According to the docs ShadingStore:s (LogicalStore:s that shade some elements) are not allowed to alter the size/shape of the matrix they shade, but several implementations did that anyway. This is now corrected. Some matrix decomposition implementations relied on that faulty behaviour when constructing various component matrices. That had to be changed as well.
    • ๐Ÿ”„ Changed, re-tuned, the matrix multiplication concurrency thresholds.

    org.ojalgo.structure

    • The nested interfaces Mutate1D.ModifiableReceiver, Mutate2D.ModifiableReceiver and MutateAnyD.ModifiableReceiver now also extend Access*D which makes them aligned with the requirements of the Transformation*D interfaces.

    ๐Ÿ›  Fixed

    org.ojalgo.ann

    • Some ArtificialNeuralNetwork input would cause matrix calculation problems. The input is typed as Access1D<Double> which essentially means any ojAlgo data structure. In the case where the actual/specific type used mached the internal types, but with wrong shape (transposed), there would be matrix multiplication problems. This no longer happens.

    โœ‚ Removed

    org.ojalgo.function

    • ๐Ÿšš FunctionUtils, that only contained deprecated (moved) utility functions, has been deleted.

    org.ojalgo.matrix

    • ๐Ÿ”จ The entire package org.ojalgo.matrix.geometry has been removed. Not deprecated, removed directly. It was never finished, not tested, and now it was in the way of refactoring other matrix stuff. Anything it did can just as well be done with the normal matrix classes.
    • ๐Ÿšš MatrixUtils, that only contained deprecated (moved) utility functions, has been deleted.

    org.ojalgo.random

    • ๐Ÿšš RandomUtils, that only contained deprecated (moved) utility functions, has been deleted.

    org.ojalgo.structure

    • ๐Ÿšš The interfaces Stream*D have been removed โ€“ they were redundant. The Operate*D interfaces replace them.
  • v48.4.2 Changes

    April 22, 2021

    โž• Added

    org.ojalgo.function

    • โž• Additional default methods for primitive arguments

    ๐Ÿ—„ Deprecated

    org.ojalgo.structure

    • ๐Ÿ—„ The various operateOn*(...) methods have been deprecated and replaced by simply on*(...)

    ๐Ÿ›  Fixed

    org.ojalgo.matrix

    • ๐Ÿ›  Fixed bug in LowerTriangularStore and UpperTriangularStore regarding shape/range information: https://github.com/optimatika/ojAlgo/issues/330
    • ๐Ÿ›  Fixed problem regarding extraction of the Q and R matrices from QR decomposition for fat matrices. (One of the QR decomposition implementations had this problem.)
  • v48.4.1 Changes

    March 18, 2021

    โž• Added

    • โž• Added (moved here) JMH benchmarks

    ๐Ÿ”„ Changed

    • Project layout change to match standard Maven
    • โšก๏ธ Update copyright statement to cover 2021

    ๐Ÿ›  Fixed

    org.ojalgo.optimisation

    • ExpressionsBasedModel now calls dispose on solvers it created, when done
    • โœ… Optimisation model on file, for test, are now loaded using getResourceAsStream which makes it easier to access these from the ojAlgo-test jar
  • v48.4.0 Changes

    December 27, 2020

    โž• Added

    org.ojalgo.optimisation

    • ๐Ÿ‘ Better support for building optimisation model with primitive valued parameters - overloaded methods for long and double values.
    • Various minor additions and changes.

    ๐Ÿ”„ Changed

    org.ojalgo.optimisation

    • ๐Ÿ”„ Changed the default mip_gap from 1E-4 to 1E-6
    • โšก๏ธ Major rewrite/update to the presolver functionality of ExpressionsBasedModel which greatly affects the IntegerSolver.

    org.ojalgo.structure

    • ๐Ÿšš The add methods of the Mutate1D, Mutate2D and MutateAnyD interfaces have been moved to Mutate1D.Modifiable, Mutate2D.Modifiable and MutateAnyD.Modifiable respectively. With most hgher level interfaces or implemenattions this makes no difference as they typically extend or implement both these interfaces.
    • In Access1D the axpy method had an element of its signture (one of the input parameters) changed from Mutate1D to Mutate1D.Modifiable<?>.

    ๐Ÿ—„ Deprecated

    org.ojalgo.equation

    • The public constructors of Equation are replaced by various factory methods.

    โœ‚ Removed

    org.ojalgo.array

    • ๐Ÿšš The NumberList class had the add methods (the ones with a long index parameter) previously specified in the Mutate1D removed.

    org.ojalgo.type

    • ๐Ÿšš The IndexedMap class had the add methods previously specified in the Mutate1D removed.
  • v48.3.2 Changes

    December 05, 2020

    โž• Added

    org.ojalgo.concurrent

    • ๐Ÿ†• New set of standard levels of parallelism defined in enum Parallelism.

    org.ojalgo.function

    • โž• Additions to PowerOf2 utilities

    ๐Ÿ”„ Changed

    org.ojalgo.matrix

    • ๐Ÿ‘Œ Improved the copying to internal representation for iterative equation system solvers (IterativeSolverTask).

    org.ojalgo.netio

    • Password now encrypts using SHA-512 rather than MD5 (existing passwords need to be reset)

    org.ojalgo.optimisation

    • Slight changes to parameter scaling (presolver functionality in ExpressionsBasedModel)
    • Minor numerical tweaks to both LinearSolver and ConvexSolver

    ๐Ÿ—„ Deprecated

    org.ojalgo.optimisation

    • ๐Ÿ—„ MathProgSysModel is deprecated - direct usage of that class. Instead there is a parse(File) method in ExpressionsBasedModel

    org.ojalgo.type.context

    • ๐Ÿ—„ Clean up of constructors and factories in NumberContext. Almost all of them are deprecated and replaced by new alternatives.

    ๐Ÿ›  Fixed

    org.ojalgo.optimisation