Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Double check nuclear norm LMO / add capped SDP cone #214

Open
2 of 3 tasks
pokutta opened this issue Jul 11, 2021 · 0 comments
Open
2 of 3 tasks

Double check nuclear norm LMO / add capped SDP cone #214

pokutta opened this issue Jul 11, 2021 · 0 comments
Assignees
Labels
bug Something isn't working Code improvements Code improvements

Comments

@pokutta
Copy link
Member

pokutta commented Jul 11, 2021

TODO

  • validate nuclear norm LMO and add clean unit tests (add also various versions: ARPACK, iterative solvers, etc)
  • add capped SDP cone from CGSDP.jl
  • add block-LMO from SDP cone

specifics:

Nuclear norm LMO implementation needs to be checked and also:

  • support various implementations of the svds: ARPACK / iterative solvers just to name two

Baseline / working function for the nuclear norm:

###############################
# nuclear norm


function compute_lmo_factor_nuclear_norm(M, tol=1e-8)
    # println("M: $M")
    Z = Arpack.svds(M, nsv=1, tol=tol)[1]
    # println("Z.U: $(Z.U)")
    # println("Z.V: $(Z.V)")
    # println("Z.Vt: $(Z.Vt)")
    u = view(Z.U, :)
    rank_one_v = FrankWolfe.RankOneMatrix(u, - Z.Vt[:])
    # println("Rank-1 factor: $rank_one_v")    

    return rank_one_v
end

Unit test that should work

M = [2 0; 0 1]
F = compute_lmo_factor_nuclear_norm(M)
println(eigvals(Matrix(F)))

M = [0 0 1; 2 0 0; 0 -3 0]
F = compute_lmo_factor_nuclear_norm(M)
println(eigvals(Matrix(F)))

And add capped SDP cone. Should also support ARPACK and iterative solvers etc. in particular we should use LOBPCG for this one as these are psd matrices. See also CGSDP.jl for three implementations that we should move into the main package.

@pokutta pokutta added bug Something isn't working Code improvements Code improvements labels Jul 11, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working Code improvements Code improvements
Projects
None yet
Development

No branches or pull requests

2 participants