From 671741c4ae8d216e696c2c56441bdc54fd191fb6 Mon Sep 17 00:00:00 2001 From: "Kai T. Ohlhus" Date: Tue, 15 Jun 2021 17:44:06 +0900 Subject: [PATCH] Prepare for minor 1.3.5 release --- Changelog.md | 169 ++++++++++++++++++++++++++++++++++++++++++++++++++ Changelog.txt | 84 ------------------------- Install.txt | 16 ----- README.md | 92 +++++++++++++++++++++++++-- Readme.txt | 53 ---------------- Version.txt | 2 - sedumi.m | 2 +- 7 files changed, 256 insertions(+), 162 deletions(-) create mode 100644 Changelog.md delete mode 100644 Changelog.txt delete mode 100644 Install.txt delete mode 100644 Readme.txt delete mode 100644 Version.txt diff --git a/Changelog.md b/Changelog.md new file mode 100644 index 0000000..28352c0 --- /dev/null +++ b/Changelog.md @@ -0,0 +1,169 @@ +## SeDuMi 1.3.5 (2021-06-15) + +> https://github.com/sqlp/sedumi/compare/v1.3.4...v1.3.5 + +- Merge of "MEX-free implementation of pretransfo and posttransfo" branch by + Michael C. Grant. +- Improved `install_sedumi.m` function. +- Use GitHub Actions for CI tests. +- Bugs fixed: + - [#64: function handle problem in minpsdeig.m](https://github.com/sqlp/sedumi/issues/64) + - [#18: Typo in eigK.m](https://github.com/sqlp/sedumi/issues/18) + - [#15: results are not apparently deterministic?](https://github.com/sqlp/sedumi/issues/15) + +## SeDuMi 1.3.4 (2020-01-09) + +> https://github.com/sqlp/sedumi/compare/v1.3.2...v1.3.4 +> +> Note: version 1.3.3 was not officially released. + +- Many many bug fixes in seven years. + + +## SeDuMi 1.3.2 (2013-07-24, Michael Grant) + +> https://github.com/sqlp/sedumi/compare/v1.3.1...v1.3.2 + +- Merged changes from CVX and SeDuMi/Octave into the distribution. +- Further changes to suppress Matlab Code Analyzer warnings. +- Removed `matrix.h` dependency from `givens.h` for Octave compatibility; + fixed assertion problem with `givensrot.c`. + + +## SeDuMi 1.3.1 (2013-04-04) + +> https://github.com/sqlp/sedumi/compare/v1.3.0...v1.3.1 + +- Corrected bugs in `sedumi.m` and `getada.m`. +- Updated .m files as per mlint suggestions. +- Commented `length(b)` vs `length(c)` check in pretransfo. +- Recompiled windows mex files, updated `install_sedumi.m` for MATLAB v8 + + +## New features in SeDuMi 1.1 since 1.05R5 + +- 2010-02-15 Fix: global variables are used for some large data structures + (ADA, At). + +- 2010-02-15 Fix: `getada1` and `getada2` have been backported to Matlab, + which actually increases speed, due to parallel BLAS. + +- 2009-11-25 Fix: computation in `getsymbada.m` has been reorganized for speed. + +- 2009-11-15 Fix: the `psdeig`, `psdinvscale`, `psdjmulv`, `psdfactor`, + `psdscale` and `triumtriu` mex files were replaced with a pure Matlab + equivalent. + +- 2009-09-05 Fix: SeDuMi now uses wall clock time instead of cputime, as the + CPU time is misleading in parallel processing environments. + It is reported in `info.walltime`. `info.cpusec` contains the total cpu time, + which may be more than the wall time. + +- 2009-08-05 Fix: Based on feedback from Didier Henrion and others, the rank + and infeasibility detection code has been modified. + +- 2009-05-10 Fix: Michael C. Grant modified some files to compile under 64-bit + versions. + +- 2009-05-10 Fix: A new installer script is provided by Michael C. Grant. + +- 2009-05-10 Fix: Some BLAS calls are fixed in `blkaux.c`. + +- 2008-04-09 Fix: BLAS is used to improve performance. + +- 2008-04-09 Fix: SeDuMi now works on 64-bit operating systems. + +- 2006-10-14 Fix: A bugfix was contributed by Michael C. Grant regarding the + handling of 2-dimensional Lorentz cones. + +- 2006-10-10 Fix: A new, completely rewritten SDPA format reader is provided in + the conversion folder. It is fast and it follows the SDPA standard. + +- 2006-10-10 Fix: Michael Grant corrected a bug in the postprocessing phase. + +- 2006-10-10 Fix: The semidefinite preprocessing assumed that there are no + free variables. + +- 2006-10-10 Fix: Matlab R2006b does not support `fprintf` with `fid=0`, + (i.e., no output). A workaround is provided. Thanks to Johan Löfberg. + +- 2006-10-10 Fix: The solutions were incorrect if the error measures were turned on. + +- 2006-07-12 Fix: A bug was discovered by Paul Tseng when using free variables + together with rotated Lorentz cones. + +- 2005-06-22 Fix: A bug about free variable handling has been reported by + Johan Löfberg, the fixed version is now posted. + +- 2005-06-21 Fix: A bug about complex variables has been reported by + Michael C. Grant, the correct version is now available. + +- 2005-06-10 Fix: `&&` and `||` were replaced by `&` and `|` to make the + package compatible with Matlab 6.0 (R12). + +- 2005-05-10 Feature: The binaries are now built from Matlab, see `Install.txt` + for details. + +- 2005-03-02 Fix: The `'See also'` references at the end of the help portions + are now clickable. + +- 2005-03-02 Fix: If ADA is actually dense then the symbolic Cholesky + factorization and the minimum degree ordering are not performed. + Also in this case `SYMBADA` is created directly as a fully dense matrix of + ones stored as sparse. + +- 2005-03-02 Feature: Included a simple heuristic to turn step-differentiation on/off. + +- 2005-03-02 Feature: New options to control preprocessing: `pars.free`, `pars.sdp`. + +- 2005-03-02 Feature: Preprocessing routines are now included. + Diagonal SDP blocks are converted into nonnegative variables. + Free variables are handled in a quadratic cone, + split free variables are detected in the linear part. + The sparsity structure of A is corrected at the end of preprocessing. + +- 2005-03-02 Fix: New default values. + `pars.eps = 1e-8`, `pars.stepdif = 2`, `pars.cg.qprec = 1`. + +- 2005-02-02 Feature: If `pars.errors=1` then SeDuMi outputs the six errors + measures defined in the 7th DIMACS challenge paper that is available at + . + These are in `info.err1`, ..., `info.err6`. + +- 2005-01-20 Fix: Minor speed improvement in the `sdmaux*` files (loop unrolling). + +- 2005-01-10 Fix: Minor speed improvement in `popK.m`. + +- 2005-01-10 Fix: `blkchol` is now invoked directly from `SeDuMi.m` without + `sparchol`. + +- 2005-01-10 Fix: A small change in `Amul.m` resulted in drastic speed + improvement for middle-sized problems. + Additionally, `sum(c.*x)` is much faster than `c'*x` if `c` and `x` are sparse. + The moral is that taking the transpose of a sparse matrix is slow. + +- 2004-01-03 Fix: Fixed a small bug in `wregion.m` concerning division by zero. + (Johan Löfberg) + +- 2004-11-29 Fix: Many if-then statements checking for data validity in the C + code were replaced by `mxAssert` statements. + The only exceptions are memory failure checks. + +- 2004-11-29 Feature: Timing is changed. + So far SeDuMi reported the CPU time spent in the main IPM loop. + Now `info.timing` is a vector containing the time spent in the preprocessing, + IPM and postprocessing, respectively. + The old `info.cpusec` contains the total time of the algorithm. + This does not make much difference now, since 99% of the time is spent in + the IPM loop, but if more stuff is added to the pre- and postprocessing, + this can be an issue. + +- 2004-11-11 Fix: Cleaned up the code with M-Lint. + All unused variables and never used assignments are removed. + All `|` and `&` are replaced with `||` and `&&` whenever it was possible. + This speeds up conditional statements in the preprocessing phase. + Unused .m and .c files are removed from the distribution. + +- 2004-11-03 Feature: pars.stopat can now be a vector. + The algorithm enters debug mode at each iteration specified in `pars.stopat`. + The order does not matter, invalid values are ignored. diff --git a/Changelog.txt b/Changelog.txt deleted file mode 100644 index 75f3ff8..0000000 --- a/Changelog.txt +++ /dev/null @@ -1,84 +0,0 @@ -New features in SeDuMi 1.1 since 1.05R5 - -20041103 Feature: pars.stopat can now be a vector. The algorithm enters debug mode at each iteration specified in pars.stopat. The order does not matter, invalid values are ignored. - -20041111 Fix: Cleaned up the code with M-Lint. All unused variables and never used assignments are removed. All | and & are replaced with || and && whenever it was possible. This speeds up conditional statements in the preprocessing phase. Unused .m and .c files are removed from the distribution. - -20041129 Feature: Timing is changed. So far SeDuMi reported the CPU time spent in the main IPM loop. Now info.timing is a vector containing the time spent in the preprocessing, IPM and postprocessing, respectively. The old info.cpusec contains the total time of the algorithm. This does not make much difference now, since 99% of the time is spent in the IPM loop, but if more stuff is added to the pre- and postprocessing, this can be an issue. - -20041129 Fix: Many if-then statements checking for data validity in the C code were replaced by mxAssert statements. The only exceptions are memory failure checks. - -20040103 Fix: Fixed a small bug in wregion.m concerning division by zero. (Johan Lofberg) - -20050110 Fix: A small change in Amul.m resulted in drastic speed improvement for middle-sized problems. Additionally, sum(c.*x) is much faster than c'*x if c and x are sparse. The moral is that taking the transpose of a sparse matrix is slow. - -20050110 Fix: blkchol is now invoked directly from SeDuMi.m without sparchol. - -20050110 Fix: Minor speed improvement in popK.m. - -20050120 Fix: Minor speed improvement in the sdmaux* files (loop unrolling). - -20050202 Feature: If pars.errors=1 then SeDuMi outputs the six errors measures defined in the 7th DIMACS challenge -paper that is available at http://plato.asu.edu/dimacs/node3.html. These are in info.err1, ...info.err6. - -20050302 Fix: New default values. pars.eps=1e-8, pars.stepdif=2, pars.cg.qprec=1. - -20050302 Feature: Preprocessing routines are now included. Diagonal SDP bolcks are converted into nonnegative variables. Free variables are handled in a quadratic cone, split free veriables are detected in the linear part. The sparsity structure of A is corrected at the end of preprocessing. - -20050302 Feature: New options to control preprocessing: pars.free, pars.sdp - -20050302 Feature: Included a simple heuristic to turn step-differentiation on/off. - -20050302 Fix: If ADA is actually dense then the symbolic Cholesky factorization and the minimum degree ordering are not performed. Also in this case SYMBADA is created directly as a fully dense matrix of ones stored as sparse. - -20050302 Fix: The 'See also' references at the end of the help portions are now clickable. - -20050510 Feature: The binaries are now built from Matlab, see Install.txt for details. - -20050610 Fix: && and || were replaced by & and | to make the package compatible with Matlab 6.0 (R12) - -20050621 Fix: A bug about complex variables has been reported by Michael C. Grant, the correct version is now available. - -20050622 Fix: A bug about free variable handling has been reported by Johan Löfberg, the fixed version is now posted. - -20060712 Fix: A bug was discovered by Paul Tseng when using free variables together with rotated Lorentz cones. - -20061010 Fix: The solutions were incorrect if the error measures were turned on. - -20061010 Fix: Matlab R2006B does not support fprintf with fid=0, (i.e., no output). a Workaround is provided. (Thanks to Johan Löfberg) - -20061010 Fix: The semidefinite preprocessing assumed that there are no free variables. - -20061010 Fix: Michael Grant corrected a bug in the postprocessing phase. - -20061010 Fix: A new, completely rewritten SDPA format reader is provided in the conversion folder. It is fast and it follows the SDPA standard. - -20061014 Fix: A bugfix was contributed by Michael Grant regarding the handling of 2-dimensional Lorentz cones. - -20080409 Fix: SeDuMi now works on 64bit operating systems. - -20080409 Fix: BLAS is used to improve performance. - -20090510 Fix: Some BLAS calls are fixed in blkaux.c - -20090510 Fix: A new installer script is provided by Michael Grant. - -20090510 Fix: Michael Grant modified some files to compile under 64 bit versions. - -20090805 Fix: Based on feedback from Didier Henrion and others, the rank and infeasibility detection code has been modified. - -20090905 Fix: SeDuMi now uses wall clock time instead of cputime, as the CPU time is misleading in parallel processing environments. It is reported in info.walltime. Info.cpusec contains the total cpu time, which may be more than the walltime. - -20091115 Fix: the psdeig, psdinvscale, psdjmul, psdfactor, psdscale and triumtriu mex files were replaced with a pure matlab equivalent - -20091125 Fix: computation in getsymbada.m has been reorganized for speed - -20100215 Fix: getada1 and getada2 have been backported to matlab, which actually increases speed, due to parallel BLAS - -20100215 Fix: global variables are used for some large data structures (ADA, At) - -20130404 Fix: Updated to v1.31, corrected bugs in sedumi.m and getada.m, updated .m files as per mlint suggestions, commented length(b) vs length(c) check in pretransfo, recompiled windows mex files, updated install_sedumi.m for MATLAB v8 - -20130722 Update (Michael Grant): Merged changes from CVX and SeDuMi/Octave into the distribution. -Further changes to suppress Matlab Code Analyzer warnings. Removed "matrix.h" dependency from givens.h -for Octave compatibility; fixed assertion problem with givensrot.c. diff --git a/Install.txt b/Install.txt deleted file mode 100644 index 4ecd529..0000000 --- a/Install.txt +++ /dev/null @@ -1,16 +0,0 @@ -SeDuMi 1.3 -Installation instructions - -This version of SeDuMi comes with binaries for recent (tested up to Matlab 2009b) versions of Matlab in both -32 bit and 64 bit flavour under Windows, Linux and Mac OS. In case the binaries don't work for your system, -try to run install_sedumi. Note that you may have to install a compiler for Matlab first. - -If you encounter any bugs or other code-related issues, you can submit a report to the GitHub issues page: - https://github.com/sedumi/sedumi/issues - -For more information about SeDuMi, including documentation and technical papers, please visit: - http://sedumi.ie.lehigh.edu/ - -Regards, -Your SeDuMi maintainers - diff --git a/README.md b/README.md index 83c9c09..4b1a5b8 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,91 @@ -## SeDuMi: Optimization over symmetric cones +# SeDuMi: Optimization over symmetric cones -SeDuMi is a Matlab package for solving convex optimization problems involving linear equations and inequalities, second-order cone constraints, and semidefinite constraints (linear matrix inequalities). The original version was developed by Jos. F. Sturm, who sadly passed away in 2003. Development continued under the direction of [Prof. Tamás Terlaky](http://coral.ise.lehigh.edu/terlaky/) by former Ph.D. students Imre Pólik and Oleksandr Romanko. +**SeDuMi (Self-Dual-Minimization)** is a Matlab/GNU Octave package for solving +convex optimization problems involving linear equations and inequalities, +second-order cone constraints, and semidefinite constraints (linear matrix +inequalities). -Of course, like many open-source projects, it has benefited considerably from contributions by others, including the developers of [YALMIP](https://yalmip.github.io/) and [CVX](http://cvxr.com), two modeling frameworks for optimization that use SeDuMi as a solver. The authors of these packages co-administer this repo, along with [Jonathan Currie](http://www.i2c2.aut.ac.nz/) from AUT University. +Please note that this is an *unofficial* repository for SeDuMi. +The [official SeDuMi site](https://sedumi.ie.lehigh.edu/) is hosted by the +[CORAL Lab](https://coral.ise.lehigh.edu/) at the +[Department of Industrial and Systems Engineering](https://engineering.lehigh.edu/ise) +at [Lehigh University](https://www.lehigh.edu/). +This repository was originally not intended to remain a permanent fork +from the last official SeDuMi release. +However, this repository contains a still maintained versions of SeDuMi. -Please note that this is an *unofficial* repository for SeDuMi. The [official SeDuMi site](https://sedumi.ie.lehigh.edu/) is hosted by the [CORAL Lab](https://coral.ise.lehigh.edu/) at the [Department of Industrial and Systems Engineering](https://engineering.lehigh.edu/ise) at [Lehigh University](https://www.lehigh.edu/). *We do not intend for this repository to remain a permanent fork from the official SeDuMi release.* All improvements that we make here are communicated to the official SeDuMi maintainers for inclusion in the official release. +This version of SeDuMi is distributed under the +[GNU General Public License 2.0](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html). -You are welcome to submit bug reports on the [GitHub issue page](https://github.com/sqlp/sedumi/issues). We cannot guarantee that they will be addressed in a timely fashion, we will do our best. -This version of SeDuMi is distributed under the [GNU General Public License 2.0](https://www.gnu.org/licenses/old-licenses/gpl-2.0.en.html). +## Installation instructions + +Download and add the extracted SeDuMi directory to the Matlab load path +and run + + install_sedumi + +This version of SeDuMi comes with pre-compiled binaries for Matlab (MS Windows, +Linux, and macOS). In case the binaries don't work for your system, +try to run + + install_sedumi -rebuild + +Note that you may have to install a compiler for Matlab first. +Using GNU Octave, the binaries are compiled automatically. + + +## Development History + +The original version was developed by Jos. F. Sturm, who sadly passed away +in 2003. Development continued under the direction of +[Prof. Tamás Terlaky](https://coral.ise.lehigh.edu/terlaky/) by former +Ph.D. students Imre Pólik and Oleksandr Romanko. + +Of course, like many open-source projects, it has benefited considerably from +contributions by others, including the developers of +[YALMIP](https://yalmip.github.io/) and [CVX](http://cvxr.com), +two modeling frameworks for optimization that use SeDuMi as a solver. +The authors of these packages co-administer this repo, +along with [Jonathan Currie](http://www.i2c2.aut.ac.nz/) from AUT University. + +For a list of changes for each SeDuMi version, check the file +[Changelog.md](https://github.com/sqlp/sedumi/blob/master/Changelog.md). + + +## Citation + +If you find this software useful, please cite it in your publication as follows: + +``` +@article{doi:10.1080/10556789908805766, + author = {Sturm, Jos F.}, + title = {Using SeDuMi 1.02, A {MATLAB} toolbox for optimization over symmetric cones}, + journal = {Optimization Methods and Software}, + volume = {11}, + number = {1-4}, + pages = {625-653}, + year = {1999}, + doi = {10.1080/10556789908805766}, + URL = {https://doi.org/10.1080/10556789908805766} +} +``` + +Account of original sources: + +The files `ordmmd.c` and `symfct.c` are C-versions of Fortran modules by +Esmond G. Ng and Barry W. Peyton, Oak Ridge National Laboratory, 1994, +from which large parts are based on SPARSPAK-A RELEASE III by Joseph W.H. Liu, +University of Waterloo, 1984. + +All other files in this distribution are by Jos F. Sturm, Tilburg University, +2001, updated and further developed by Imre Polik, McMaster University, +Hamilton, Canada. + + +## Report problems + +You are welcome to submit bug reports or request for help on the +[GitHub issue page](https://github.com/sqlp/sedumi/issues). +We cannot guarantee that they will be addressed in a timely fashion, +we will do our best. diff --git a/Readme.txt b/Readme.txt deleted file mode 100644 index 5dfbb0c..0000000 --- a/Readme.txt +++ /dev/null @@ -1,53 +0,0 @@ -Welcome to SeDuMi 1.3 - -SeDuMi is a Matlab Toolbox for Linear, Second order, Semidefinite or mixed -problems. It can handle free variables and complex data as well. - -To obtain the latest version of SeDuMi, see - - http://sedumi.ie.lehigh.edu - -Installation instructions can be found in the file - - Install.txt - -After you installed the binaries please type - - help sedumi - -in Matlab to get more information. Example problems can be found -in the folder /examples, documentation is in /doc. - -For a list of changes check the file Changelog.txt. - - --------------------------------------------------------------------- - - -This product is made available under the GNU General Public License, see -the file COPYING for details. - -Account of original sources: -The files ordmmd.c and symfct.c are C-versions of Fortran modules by -Esmond G. Ng and Barry W. Peyton, Oak Ridge National Laboratory, 1994, -from which large parts are based on SPARSPAK-A RELEASE III by Joseph W.H. Liu, -University of Waterloo, 1984. -All other files in this distribution are by Jos F. Sturm, Tilburg -University, 2001, updated and further developed by Imre Polik, -McMaster University, Hamilton, Canada. - - -* CITATION INFORMATION ** CITATION INFORMATION ** CITATION INFORMATION * -If you find this software useful, please cite it in your publication as -follows: -@Article{S98guide, - author = {Sturm, J.F.}, - title = {Using {SeDuMi} 1.02, a {MATLAB} toolbox for optimization over symmetric cones}, - journal = {Optimization Methods and Software}, - year = 1999, - volume = {11--12}, - pages = {625--653}, - note = {Version 1.05 available from {\texttt{http://fewcal.kub.nl/sturm}}} -} - -Bethlehem, PA, USA, April 6, 2010 diff --git a/Version.txt b/Version.txt deleted file mode 100644 index 2e5a6e7..0000000 --- a/Version.txt +++ /dev/null @@ -1,2 +0,0 @@ -1.3.4 -20190724 diff --git a/sedumi.m b/sedumi.m index 9c7be54..3c21049 100644 --- a/sedumi.m +++ b/sedumi.m @@ -311,7 +311,7 @@ % ---------------------------------------- % Print welcome % ---------------------------------------- -my_fprintf(pars.fid,'SeDuMi 1.3.4 by AdvOL, 2005-2008 and Jos F. Sturm, 1998-2003.\n'); +my_fprintf(pars.fid,'SeDuMi 1.3.5 by AdvOL, 2005-2008 and Jos F. Sturm, 1998-2003.\n'); % ---------------------------------------- % Print statistics of cone-problem % ----------------------------------------