From 377ff1c7bca007f41d5c5f10d7e1be71a1a2df55 Mon Sep 17 00:00:00 2001 From: Ellis Brown Date: Fri, 16 Jul 2021 22:50:43 -0700 Subject: [PATCH 1/4] rename LCSO -> SeparableOptimization --- .github/workflows/ci.yml | 2 +- CONTRIBUTING.md | 6 +++--- Project.toml | 2 +- README.md | 18 ++++++++-------- docs/Project.toml | 1 + docs/make.jl | 12 +++++------ docs/src/api.md | 26 +++++++++++------------ docs/src/index.md | 10 ++++----- src/{LCSO.jl => SeparableOptimization.jl} | 2 +- src/admm_structs.jl | 2 +- test/runtests.jl | 6 +++--- test/test_admm.jl | 2 +- 12 files changed, 45 insertions(+), 44 deletions(-) rename src/{LCSO.jl => SeparableOptimization.jl} (97%) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b4c18ea..8e6e802 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - version: ['1', 'nightly'] + version: ['1.0', '1', 'nightly'] arch: [x64] os: [ubuntu-latest, windows-latest, macOS-latest] steps: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 98572f8..820b3e7 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -11,7 +11,7 @@ When filing an issue, make sure to answer these five questions: Open an issue. Please include descriptions of the following: - The version of Julia that you are running -- The version of LCSO.jl that you are running +- The version of SeparableOptimization.jl that you are running - Observations - Expectations - Steps to reproduce @@ -48,6 +48,6 @@ Code coverage can be generated locally using the [LocalCoverage.jl](https://gith 2. generate coverage ```julia using LocalCoverage - generate_coverage("LCSO") + generate_coverage("SeparableOptimization") ``` -3. open coverage report html `open_coverage("LCSO")` +3. open coverage report html `open_coverage("SeparableOptimization")` diff --git a/Project.toml b/Project.toml index 9a7cb70..892bf4c 100644 --- a/Project.toml +++ b/Project.toml @@ -1,4 +1,4 @@ -name = "LCSO" +name = "SeparableOptimization" uuid = "b66076ac-575f-47ff-93e2-9c43ffc8d39e" authors = ["Nicholas Moehle", "Ellis Brown", "Mykel J. Kochenderfer"] version = "0.1.0" diff --git a/README.md b/README.md index 41a8b5c..1f8d9de 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ -# LCSO.jl +# SeparableOptimization.jl -[![Build status](https://github.com/JuliaFirstOrder/LCSO.jl/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/JuliaFirstOrder/LCSO.jl/actions?query=workflow%3ACI+branch%3Amain) -[![codecov](https://codecov.io/gh/JuliaFirstOrder/LCSO.jl/branch/main/graph/badge.svg?token=Cz8LGxvzwx)](https://codecov.io/gh/JuliaFirstOrder/LCSO.jl) +[![Build status](https://github.com/JuliaFirstOrder/SeparableOptimization.jl/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/JuliaFirstOrder/SeparableOptimization.jl/actions?query=workflow%3ACI+branch%3Amain) +[![codecov](https://codecov.io/gh/JuliaFirstOrder/SeparableOptimization.jl/branch/main/graph/badge.svg?token=Cz8LGxvzwx)](https://codecov.io/gh/JuliaFirstOrder/SeparableOptimization.jl) -[![](https://img.shields.io/badge/docs-stable-blue.svg)](https://juliafirstorder.github.io/LCSO.jl/stable) -[![](https://img.shields.io/badge/docs-dev-blue.svg)](https://juliafirstorder.github.io/LCSO.jl/dev) +[![](https://img.shields.io/badge/docs-stable-blue.svg)](https://juliafirstorder.github.io/SeparableOptimization.jl/stable) +[![](https://img.shields.io/badge/docs-dev-blue.svg)](https://juliafirstorder.github.io/SeparableOptimization.jl/dev) -**LCSO.jl** is a [Julia](http://julialang.org) package that solves **L**inearly **C**onstrained **S**eparable **O**ptimization Problems. +**SeparableOptimization.jl** is a [Julia](http://julialang.org) package that solves Linearly Constrained Separable Optimization Problems. The package currently supports quadratic-plus-separable problems of the form @@ -39,14 +39,14 @@ This package and [PiecewiseQuadratics.jl](https://github.com/JuliaFirstOrder/Pie Use Julia's builtin package manager [Pkg](https://docs.julialang.org/en/v1/stdlib/Pkg/) to install. From a Julia REPL: ```Julia -] add LCSO +] add SeparableOptimization ``` ## Example -Let's use LCSO to solve an example problem. +Let's use SeparableOptimization to solve an example problem. ```Julia -using LCSO +using SeparableOptimization using PiecewiseQuadratics using LinearAlgebra diff --git a/docs/Project.toml b/docs/Project.toml index 43434aa..942b9be 100644 --- a/docs/Project.toml +++ b/docs/Project.toml @@ -6,5 +6,6 @@ LDLFactorizations = "40e66cde-538c-5869-a4ad-c39174c6795b" LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e" Parameters = "d96e819e-fc66-5662-9728-84c9c7592b0a" PiecewiseQuadratics = "63c5698c-79a9-4248-aa10-bd2a91651b58" +SeparableOptimization = "b66076ac-575f-47ff-93e2-9c43ffc8d39e" SparseArrays = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" diff --git a/docs/make.jl b/docs/make.jl index df6e255..9cedf25 100644 --- a/docs/make.jl +++ b/docs/make.jl @@ -17,18 +17,18 @@ limitations under the License. push!(LOAD_PATH, "../src/") using Documenter -using LCSO +using SeparableOptimization using PiecewiseQuadratics -DocMeta.setdocmeta!(LCSO, :DocTestSetup, :(using LCSO, PiecewiseQuadratics); recursive=true) +DocMeta.setdocmeta!(SeparableOptimization, :DocTestSetup, :(using SeparableOptimization, PiecewiseQuadratics); recursive=true) makedocs( - sitename = "LCSO.jl", + sitename = "SeparableOptimization.jl", authors = "Nick Moehle, Ellis Brown, Mykel Kochenderfer", - repo = "github.com/JuliaFirstOrder/LCSO.jl.git", - modules = [LCSO], + repo = "github.com/JuliaFirstOrder/SeparableOptimization.jl.git", + modules = [SeparableOptimization], format = Documenter.HTML(prettyurls = get(ENV, "CI", nothing) == "true"), pages = [ "index.md", @@ -37,7 +37,7 @@ makedocs( ) deploydocs(; - repo = "github.com/JuliaFirstOrder/LCSO.jl.git", + repo = "github.com/JuliaFirstOrder/SeparableOptimization.jl.git", devbranch = "main", push_preview = true, ) diff --git a/docs/src/api.md b/docs/src/api.md index 53e4d7d..67ac003 100644 --- a/docs/src/api.md +++ b/docs/src/api.md @@ -1,9 +1,9 @@ # API Documentation -Docstrings for LCSO.jl interface members can be [accessed through Julia's built-in documentation system](https://docs.julialang.org/en/v1/manual/documentation/#Accessing-Documentation) or in the list below. +Docstrings for SeparableOptimization.jl interface members can be [accessed through Julia's built-in documentation system](https://docs.julialang.org/en/v1/manual/documentation/#Accessing-Documentation) or in the list below. ```@meta -CurrentModule = LCSO +CurrentModule = SeparableOptimization ``` ## Contents @@ -50,25 +50,25 @@ optimize ## ADMM ```@docs -LCSO.factorize_kkt -LCSO.solve_kkt! -LCSO.admm_step! -LCSO.compute_stats +SeparableOptimization.factorize_kkt +SeparableOptimization.solve_kkt! +SeparableOptimization.admm_step! +SeparableOptimization.compute_stats ``` ## Prox cache ```@docs -LCSO.ProxCache -LCSO.prox_step +SeparableOptimization.ProxCache +SeparableOptimization.prox_step ``` ## Convergence ```@docs -LCSO.get_term_cond_cache -LCSO.check_term_conds! -LCSO.ConvergeTermCache -LCSO.FirstVarsTermCache -LCSO.get_obj_and_res_from_first_vars +SeparableOptimization.get_term_cond_cache +SeparableOptimization.check_term_conds! +SeparableOptimization.ConvergeTermCache +SeparableOptimization.FirstVarsTermCache +SeparableOptimization.get_obj_and_res_from_first_vars ``` diff --git a/docs/src/index.md b/docs/src/index.md index cb608c7..9c454e0 100644 --- a/docs/src/index.md +++ b/docs/src/index.md @@ -1,6 +1,6 @@ -# LCSO.jl +# SeparableOptimization.jl -**LCSO.jl** is a [Julia](http://julialang.org) package that solves **L**inearly **C**onstrained **S**eparable **O**ptimization Problems. +**SeparableOptimization.jl** is a [Julia](http://julialang.org) package that solves Linearly Constrained Separable Optimization Problems. The package currently supports quadratic-plus-separable problems of the form @@ -37,14 +37,14 @@ Depth = 2 Use Julia's builtin package manager [Pkg](https://docs.julialang.org/en/v1/stdlib/Pkg/) to install. From a Julia REPL: ```Julia -] add LCSO +] add SeparableOptimization ``` ## Example -Let's use LCSO to solve an example problem. +Let's use SeparableOptimization to solve an example problem. ```@example 1 -using LCSO +using SeparableOptimization using PiecewiseQuadratics using LinearAlgebra diff --git a/src/LCSO.jl b/src/SeparableOptimization.jl similarity index 97% rename from src/LCSO.jl rename to src/SeparableOptimization.jl index 2bed48a..22dc99b 100644 --- a/src/LCSO.jl +++ b/src/SeparableOptimization.jl @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. =# -module LCSO +module SeparableOptimization using LinearAlgebra using LDLFactorizations diff --git a/src/admm_structs.jl b/src/admm_structs.jl index 813a6f6..cc4dd73 100644 --- a/src/admm_structs.jl +++ b/src/admm_structs.jl @@ -189,7 +189,7 @@ The fields represent: # Notes: * We keep the previous values of `x`, `w`, `z`, `y` in order to check for convergence. -* The actual problem we are solving here is detailed in [`LCSO.factorize_kkt`](@ref) +* The actual problem we are solving here is detailed in [`SeparableOptimization.factorize_kkt`](@ref) * `w` and `y` are used when minimizing the augmented Lagrangian of the original problem (and consequently in ADMM's update rules) """ diff --git a/test/runtests.jl b/test/runtests.jl index 6832ae7..c1fc9ec 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -14,7 +14,7 @@ See the License for the specific language governing permissions and limitations under the License. =# -using LCSO +using SeparableOptimization using PiecewiseQuadratics using LinearAlgebra using SparseArrays @@ -22,9 +22,9 @@ using Documenter using Test @testset "Doctests" begin - DocMeta.setdocmeta!(LCSO, :DocTestSetup, :(using LCSO, PiecewiseQuadratics); + DocMeta.setdocmeta!(SeparableOptimization, :DocTestSetup, :(using SeparableOptimization, PiecewiseQuadratics); recursive=true) - doctest(LCSO) + doctest(SeparableOptimization) end @testset "ADMM Structs" begin diff --git a/test/test_admm.jl b/test/test_admm.jl index c5d0033..410ebc7 100644 --- a/test/test_admm.jl +++ b/test/test_admm.jl @@ -28,7 +28,7 @@ limitations under the License. end @testset "Diag constrained QP" begin - P = spdiagm(1:4) + P = spdiagm(0 => 1:4) q = Vector{Float64}(1:4) A = spzeros(1, 4) .+ 1 b = [1.0] From 483ff8bab84067b3e2aed8b7e08570b5d2bfd7ba Mon Sep 17 00:00:00 2001 From: Ellis Brown Date: Fri, 16 Jul 2021 22:56:56 -0700 Subject: [PATCH 2/4] fix formatting --- test/runtests.jl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/test/runtests.jl b/test/runtests.jl index c1fc9ec..8dc8590 100644 --- a/test/runtests.jl +++ b/test/runtests.jl @@ -22,8 +22,8 @@ using Documenter using Test @testset "Doctests" begin - DocMeta.setdocmeta!(SeparableOptimization, :DocTestSetup, :(using SeparableOptimization, PiecewiseQuadratics); - recursive=true) + DocMeta.setdocmeta!(SeparableOptimization, :DocTestSetup, + :(using SeparableOptimization, PiecewiseQuadratics); recursive=true) doctest(SeparableOptimization) end From a5c16cbeded94ae18d2b2ea6cfad6c6d0016fa31 Mon Sep 17 00:00:00 2001 From: Ellis Brown Date: Fri, 16 Jul 2021 23:13:21 -0700 Subject: [PATCH 3/4] fix tests for julia 1.0 --- test/test_admm.jl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_admm.jl b/test/test_admm.jl index 410ebc7..1894507 100644 --- a/test/test_admm.jl +++ b/test/test_admm.jl @@ -15,7 +15,7 @@ limitations under the License. =# @testset "Identity constrained QP" begin - P = I(4) + P = Diagonal(trues(4)) q = ones(4) A = spzeros(1, 4) b = [1.0] From ddee2d6e3b18304440484df27cef0dc8d941ae08 Mon Sep 17 00:00:00 2001 From: Ellis Brown Date: Fri, 16 Jul 2021 23:19:49 -0700 Subject: [PATCH 4/4] remove 1.0 from ci test matrix --- .github/workflows/ci.yml | 2 +- test/test_admm.jl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 8e6e802..b4c18ea 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - version: ['1.0', '1', 'nightly'] + version: ['1', 'nightly'] arch: [x64] os: [ubuntu-latest, windows-latest, macOS-latest] steps: diff --git a/test/test_admm.jl b/test/test_admm.jl index 1894507..4e8070e 100644 --- a/test/test_admm.jl +++ b/test/test_admm.jl @@ -15,7 +15,7 @@ limitations under the License. =# @testset "Identity constrained QP" begin - P = Diagonal(trues(4)) + P = Diagonal(trues(4)) # === I(4) in 1.2+ q = ones(4) A = spzeros(1, 4) b = [1.0]