|
Change Log
ojAlgo currently targets Java 5 (1.5). A very old version – Version 8 – that was developed against Java 1.4 is still availbale for download.
Do NOT use anything deprecated - it will be removed very soon! Most of what was deprecated at the time of the last release has already been removed.
Version 24 (latest release)
Version 23
- The methods combineRows(...) and combineColumns(...) in Array2Dim (that was added with version 22) have been removed. Having rotateLeft(...) and rotateRight(...) in PhysicalStore is enough. Further there are a couple of deprecations in Array2Dim and ArrayAnyDim.
- The entire package org.ojalgo.array.visitor i removed. Corresponding functionality does of course still exist. Look in the org ojalgo.function.aggregator package. The NORM implementations in BigFunction, ComplexFunction & PrimitiveFunction are removed. Instead there is an AggregatorFunction named NORM.
- The PreconfiguredParameterFunction class has been renamed PreconfiguredParameter and PreconfiguredBinaryFunction has been replaced with PreconfiguredFirst and PreconfiguredSecond.
- MultiaryFunction has been modified - one deprecation and several addition. Further the get/setQuadraticWeight and get/setLinearWeight methods in CompoundFunction has been deprecated.
- The LagrangeSolver is adapted to, when necessary, use a SingularValueDecomposition to solve the generated equation system. Before it always used an LUDecomposition. The actual code change is in the various BasicMatrix implementations - this change affects everyone calling BasicMatrix#solve(BasicMatrix), and of course this also affects the ActiveSetSolver. Generally this change makes the quadratic solvers much more stable and forgiving.
- Deprecated one constructor and added another in each of the PolynomialFunction implementations.
- Just about all constructors in the BasicMatrix implementations are deprecated. You really should use MatrixFactory! ...and if you already did this change does not affect you.
- MatrixFactory has been redesigned and extended. Everything that worked before still works. There are also several additions and a couple of deprecation in PhysicalFactory.
- The classes ConcurrentDecomposition and Result has been deprecated and replaced with DecomposeAndSolve.
- Lots of additions/deprecations/improvements in the MatrixStore hierarchy. PermutationStore, SuperimposedColumnStore, SuperimposedElementStore, SuperimposedEyeStore, SuperimposedRowStore, are deprecated. IdentityStore and SuperimposedMatrixStore are new. ConjugatedStore no longer extends TransposedStore. Instead they both extend a new, package private, class.
- PhysicalStore's toArray() method has been deprecated.
- Lots of changes/additions/deprecations/improvements in the org.ojago.optimisation.* packages. The work to "tidy" the optimisation code started a couple of versions ago (atleast one) and is not finished yet... There has been a series of bug reports related to ActiveSetSolver. All of them have been fixed.
- Some changes and additions to the org.ojalgo.series package. There is now a TimeSeries interface and time series implementations based on both the Date and Calendar classes. The CoordinationSet class has been redesigned. If you used this; you're code is broken now (easy to fix).
- All methods in the org.ojalgo.matrix.jama.Jama* classes that should return either a MatrixStore or a BasicMatrix now actually returns a JamaMatrix. (JamaMatrix implements both MatrixStore and BasicMatrix.)
- The CVS modules ExtPriDE and ExtWicket has been deleted. The code they contained had little to do with ojAlgo (and there really wasn't much there).
Version 22
Version 21
- Drastically changed the org.ojalgo.array.* package. The BasicArray interface has been removed... If you have code that directly accessed BasicArray (or anything else in org.ojalgo.array.*) it is probably broken now, but should be easy to fix. Array3Dim and Array4Dim are also removed. The classes Array1Dim, Array2Dim and ArrayAnyDim are all you need/have now. The fact that BasicArray has been removed affects large parts of ojAlgo - constructor and method signatures have changed in many places. Most notably one of the factory methods in MatrixFactory changed (and therefore also the mathching constructor signature in the BasicMatrix implementations).
- Reintroduced the subclasses BigCholesky, BigLU, BigQR, ComplexCholesky, ComplexLU, ComplexQR, PrimitiveCholesky, PrimitiveLU and PrimitiveQR. New interfaces CholeskyStore, LUStore and QRStore to be used internally by the corresponding decomposition implementations to do in place decompositions. The methods _computeCholesky(), _computeLU() and _computeQR() have, as a result, been removed from PhysicalStore.
- The methods substituteBackward/Forward and applyHouseholder in PhysicalStore have been generalised to take a MatrixStore rather than PhysicalStore as input.
- Further tuned the LU decomposition code. There are now two - PrimitiveDenseLU and PrimitiveRawLU - native ojAlgo LU decomposition classes that work with doubles.
- Added a method in MatrixDecomposition that calls compute() and solve() in turn, in a separate thread. The task is added to an executor queue and dealt with on any available CPU (core). If you have many (a constant flow of) equation systems to solve and a machine with more than one CPU this can speed things up significantly. Roughly speaking you can do one compute/solve per available CPU simultaneously. There's also ConcurrentDecomposition to be used separately.
- Altered the Scalar interface. The changes are significant but I suspect not many users are affected. The classes org.ojalgo.ComplexNumber and org.ojalgo.scalar.ComplexScalar has been merged to org.ojalgo.scalar.ComplexNumber. If you used to use ComplexNumber; all you have to do now is change your import statements. If you used to use ComplexScalar you may have to do things slightly differently. RationalScalar has been renamed RationalNumber.
- Worked some on the TypeContext package and associated classes.
- Built utilities for working with sql types.
- Cleaned and extended the constants in BigMath and PrimitiveMath.
- A new cvs module/subproject ExtJFree containing code to read and write Excel-files.
- Some other things...
Version 20
There are no deprecations with this release, and everything that was deprecated previously has been removed. None of the new changes made for this release has resulted in any deprecateions (although normally they would). This release is NOT binary compitable with the previous. Depending on which parts of ojAlgo you use this may or may not affect you... (There are no new changes to the BasicMatrix interface with this release!)
Version 19
- Changed the implementations of modifyMatching() in BasicArray. Methods in PhysicalStore that delegate to that method are now almost twice as fast. Also added duplicate modify-methods for binary functions - one that takes a double and one that takes Number as parameter.
- Optimised the Cholesky decomposition algorithm including both the compute() and solve() methods.
- Optimised the LU decomposition algorithm including both the compute() and solve() methods.
- Optimised the QR decomposition algorithm including both the compute() and solve() methods.
- Deprecated everything in the MatrixDecomposition hierarchy that deals with BasicMatrix. In the fiture decompositions will only work with MatrixStore.
- Created a new package org.ojalgo.netio that loosely corresponds to (extends) the packages: java.io.*, java.nio.*, java.net.* and sun.net.*. What was previously in org.ojalgo.io.* has been moved here. Built a ResourceLocator. It's very basic and very general. It's all that was required to add code to fetch financial data from Yahoo Finance.
- Refactored the BlackLittermanModel, and wrote some unit tests for it. If you use this class you may have to change your code a bit, but everything is still there. It is now possible to add views in a couple of different ways. Also removed the rounding that occurred internnally.
- Created new packages org.ojalgo.type.* that will contain various type meta data classes and formatters. Renamed/moved org.ojalgo.NumericTypeContext to org.ojalgo.type.context.NumberContext. This change "touched" a large part of all code that use ojAlgo. You will also need to change your code before the next release.
- Added an isEconomySize() method/parameter for all matrix decompositions as well as isFullRank(), isSingular() and others where appropriate.
Version 18
- Changed the project structure and contents (again). What was in the CVS modules ExtAMPL and ExtJama have moved to the main module DevProj. What was in ExtColt and ExtJampack is no longer part of ojAlgo. Eventually the CVS modules ExtAMPL, ExtColt, ExtJama and ExtJampack will be removed. Currently they are just not used. In terms of the built and packaged download this means that:
- The Colt and Jampack stuff is removed.
- Everything you want is in the ojalgo-?.?.jar. The optimatika-?.?.jar is only for those using JFreeChart, PriDE, Wicket...
- Performance tweaking in PhysicalStore. In particular the multiplyLeft/Right methods are significantly faster now.
- Cleaned the Scalar implementations from methods not specified by the interface. Also added a new method named "dot".
- org.ojalgo.matrix.store.*
- Added support for charts (interfaces only) and removed ExtWicket's and ExtWebObject's dependencies on ExtJFree. They now only depend on ojAlgo.
- All MatrixDecomposition implementations now have a getStore?() method for each getMatrix?() method that existed before. There were already compute() and solve() methods that work with MatrixStore rather than BasicMatrix. Also wrote tests to meassure the performance of the various decomposition computations. The performance of the Cholesky and QR decompositions need improvement. (Alreday worked a bit on Cholesky.)
- All constructors in the BasicArray hierarchy are now protected. To construct instances you should use the static factory methods in the Array?Dim classes or some PhysicalFactory instance. There used to be a package private class ArrayUtils. It is now removed and its functionality moved to the BasicArray hierarchy.
- The methods divideLeft/Right() and invert() in BasicMatrix have been deprecated. Instead you should use solve(). There's a couple of minor deprecations in addiotion to that.
- Have modified the methods in MatrixUtils to work with generic types. What was in DecompositionUtils have been moved to MatrixUtils and I added a number of equals() methods to compare various decompositions with matrices.
|