This is a fairly big release as we wrap the ADMM algorithm into a safeguarded Anderson Acceleration method. The accelerators are provided by COSMOAccelerators.jl. This should improve the convergence to higher accuracy solution.
We change the default settings to reflect this. The default accuracies eps_abs and eps_rel are set to 1e-5, we now check convergence every 25 iterations, and increased max_iter to 5000. Acceleration can be switched off by using: COSMO.Settings(accelerator = EmptyAccelerator). When the algorithm is safeguarded (safeguard = true), extra ADMM-iteration called safeguarding_iter might occur which are also reported to the user. The returned number of iterations in the result object always refers to the total number of ADMM-iterations, which includes the safeguarding_iters. Refer to the docs for more configuration options.
fb51a41Add Compat entry for Reexport2624a50Bump version: 0.7.9 → 0.8.058cc506Update examples/ to newest JuMP APIab67ddcFix bug in ResulType constructor5ac07e9Merge branch 'mg/accelerated_algorithm'
This is intended as the last release containing all changes before the accelerated version of the solver is merged.
a8f2724Merge pull request #129 from oxfordcontrol/mg/fix_slow_moi_merging527c5d2Increase max_iter and decrease eps_prim_infb4ea038Change Int64 --> Int in clique graph test0744299[#124] Covering more cases in CI69d8e4fExport CGIndirectKKTSolver and MINRESIndirectKKTSolver1ef8ca7Update Documenter version7e1e0b0Excludesolve_farkas_interval_upperfrom MOI unittests19f43ec👷 Switch CI to Github actions
f0070a1Bump DataStructures.jl to support v0.18 (#119)fd5b2b5Add doc for model updates316e328Fix bracket bug in cost computationef731a4Rename update!(strategy,...) to update_strategy!(strategy,...)cbe6cc3Add update!-model to docs04283c2Handle the model state more precisely5db323fFix slow Pardiso KKT solver
Fixes bugs in the interface functions for the Python interface.
This version adds some interface functions specifically for the Python interface: cosmo-python.
-
This version implements the reduced clique graph merge strategy which fixes some edge cases that occurred in the previous merge strategy. It also makes this COSMO version compatible with the latest MathOptInterface release v0.9.16
-
95dbdf9<#116> Make COSMO compatible with MOI v0.9.16 -
8d869f5Fix wrong bracket in Box support function check -
91bb113Free clique graph related memory after the merging -
9729d3cClean-up reduced clique graph code -
09eb9e5Make ParCh strategy work with sets -
381db30Implement reduced clique graph merge
-
This version mostly contains minor changes and small bug fixes as well as some updates to the documentation.
-
6626c6d[#114] Restrict dependencies less -
2dcf4a8Print correct number of sets in verbose output -
58ef719Untrack Manifest.toml -
9cdd856Fix sign error in logistic regression example -
5ea43c7Update Documenter to latest version -
ce6a10aFix navigation bar error -
732f76cMove Logistic regression to Documentation -
14e3182Change logo in docs
-
We significantly improved the solver performance in this release. This is mainly achieved by direct assembly of the KKT matrix in CSC format, faster permutation and getting rid of some function overhead related to the
SplitVectortype. Moreover, we now made the solver precision type-agnostic, which means you can use any AbstractFloat type, e.g.BigFloatfor your problem data (some limitations apply, see docs) and COSMO will solve the problem with that type. -
0b0f3b3Always timeiter_start -
6ff52a8Make chordal decomposition code type agnostic -
3692d49Make the MOI-wrapper precision-type-agnostic -
ae43c04Add more strongly typed arguments -
4801bebMake solver work for ArbitraryFloat data -
8237358🎨 Print result status in color -
8277eb0Add minor performance improvements -
4a79217Add fast lower triangle KKT assembly function -
906b9a0Removed asserts. Direct access to SplitVector data. Removed CSC matrix casts. Removed some zipped calls. -
a6aa495isolate triu KKT build for speed -
921e927minor loop rewrites -
ae21123fast triu csc assembly -
0184138faster scalings and sqrt -
2a1d43aisolated Box scaling function -
b3c15edfaster norms and l/r scaling -
55f4511faster qdldl
-
We now handle the optional dependencies of external linear solver packages
PardisoandIterativeSolversby using theRequires.jlpackage. Furthermore, we improve convergence of problems with box constraints in many cases. We also allow an automatic adaptive rho interval option, like in OSQP, which can be activated by settingadaptive_rho_interval = 0(automatic). -
The main commits in this new version are:
-
ecef91d🤝 Improve handling of optional dependencies -
70c6067Merge branch 'mg/adaptive_rho_intervall' -
64dbcc1🚀 Scale rho-value of loose, active box constraints -
9b50f17Print first iteration -
44ada54Allow adaptive rho interval determination -
2dcc593Make deepcopy of settings object -
41f82f3🔮 Enable code literacy -
9ea6dc2Update newest Julia version in travis
264294dAdd precompile statements (#109)1b8c58cPrint decomposition info only when decomposingd8dfe26Prevent decomposition from mutating settings
-
This release adds support for indirect linear system solver from the
IterativeSolvers.jlpackage. We also drop support of PsdConeSquare constraints ins MOI. By default MOI will bridge them to PSDTriangle constraints. We further fixed a number of bugs related to the compact transformation for decomposable SDPs. Another change is that when used withverbose_timing = true, COSMO will now measure the initial factorisation time and the time for refactorisations separately. The major commits are listed here: -
439f218Return NearlyFeasible status code if max_iter reached -
fda29e1Fix problem with empty columns in compact_transform -
4324560Drop support for MOI.PSDConeSquare -
f0a99fe⏲ Add more detailed timing to solver -
92aa32cStore rho-updates in result variable -
eb0be3bAssemble dual variable like in Grone's Theorem -
14e862eMake Cholmod (SuiteSparse) default KKT solver -
e64cfc9Fix bug with CGIndirectKKTSolver and MINRESIndirectKKTSolver -
f514caaMerge pull request #106 from oxfordcontrol/pg/pardiso_fix -
6290cbefixes minres -
b2a0e49fix pardiso default options -
5ed8a9c[ci skip] Add info about custom linear solvers -
cfa6f76Merge pull request #92 from oxfordcontrol/cg
We add smart clique merging and fix a number of bugs in COSMO and the MOIWrapper.
94babdeAdd Documentation for Chordal Decomposition3ba43ddRenaming merge concepts, adding docstrings96e9c1cImplementation of a SparseCoLO like transformation752117bAdd unit test for psd completion with clique merge975f87a🔧 Fix bug about recovering the dual variablee524b59Working recomputation of clique tree09dc024Implement clique mergingf90cc62<#96> Map var idxs when processing MOI constraints9f1b5ff<#97> Loop over all MOI-Attributes during copy_to59f0480Add unit test for 1d psd projectionab821d8Fix bug in 1D PSD cone projection857bf18Merge pull request #98 from rschwarz/rs/moi095969cb2bFix MOI tests "result_count".c3d0263Exclude MOI unit test "number_threads".ed25b4b[#94] Fix bug related to DualExpCone problems7f91e71💾 Implement memory-efficient infeasibility checksdc75bc5🔧 Code refactoringa754b0cImplement memory-efficient residual computation020ada4[#94] Merge pull request #94 from oxfordcontrol/check_psd_clean4b8396dUse (faster) in-place versions for in_pos_def()5565fa9Remove sparse version of is_pos_def!()dceea67Avoids eigendecomposition in psd tests.340ecdeAssemble entry selector matrix more efficient
8986827Update to support MOI v0.9
b514287Fix memory issue in MOI's interface (PR #87)cc32a30Remove parameter printing for setsd31e501Code refactoring in chordal decomposition128b409Remove num of elem in A and size of b from headerb267b1cRemove eigendecomposition of P in MOI wrapper21eb8daMove PowerCone to typed set in MOI wrapper test
We add the exponential cone, the power cone and their dual cones. Furthermore, we offer the option to use different linear system solvers. The most important changes are listed here:
eb7cb68Add power cone and dual exp and pow conef3b5c2fAdd a logistic regression example44cc8b3Implement exponential cone constraints4c3428cMerge pull request #65 from oxfordcontrol/pg/lin_solvers863168a<#65> Support custom linear system solver
This is a major upgrad since it adds the chordal decomposition functionality. The most important changes are listed here:
8dd70ebMake sure graphs are connectedb44364cAdd chordal decomp info to header printing5acaf73Move PSDTriangle memory allocation after decomp25593b4Remove graph computationa115196Add DensePsdCones to handle non-decomposable conesdbe70bcAdd PSD completion4262bfeAdd chordal decomposition algorithm and unit testsbdebbc5🔧 Fix bug in scaling of MOI-PSDTriangle constraint726d03b<#55> Implement set merging in MOI Wrapper2a3957f🤫 Add support for MOI.Silentd0f0e44Fix bugs in warm startingf5bd31b32 bit BLAS supportaeab91cCheck positive semidefiniteness of P in MOIWrapper9ad8f36Fix bug in MOI termination codes34ebb89Add deepcopy step for convex sets in set!()
The most important changes are listed below:
- (
023f517) Fix printing of rho - (
cb2a483) Memory efficient projections in BLAS - (
c582f83) Remove lower-triangle legacy code in MOI wrapper - (
6b89271) Dont export Model and convex sets - (
d98c7ea) Bug fix in norm computation - (
0ad53d6) Add Aox constraint type - (
360ca0f) Handle edge cases forP,qinassemble!
- The optional arguments
settings,x0,y0,s0are now keyword arguments (breaks backward compatibility), seed0f22aab - Some smaller bug fixes and function renaming
- Documentation via Documenter.jl
- Support warm starting of primal and dual variables in MOI / JuMP interface
- Fix a bug when printing the header
- Improve unit test coverage
First public release of COSMO solver
- Add MOI / JuMP support