Skip to content

madeleineudell/MultiConvex.jl

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MultiConvex

Build Status

MultiConvex.jl is a Julia package for disciplined multi-convex programming. MultiConvex.jl can detect and (heuristically) solve multi-convex problems using alternating minimization. It solves the subproblems it encounters using Convex.jl and so can use any solver supported by Convex.jl, including Mosek, Gurobi, ECOS, SCS, GLPK, through the MathProgBase interface.

More resources:

Installation: Clone the MultiConvex repository, and install Convex.

julia> Pkg.clone("https://github.com/madeleineudell/MultiConvex.jl.git")
julia> Pkg.add("Convex")

Quick Example

Here's a quick example of code that solves a nonnegative matrix factorization problem

# Let us first make the Convex and MultiConvex modules available
using Convex, MultiConvex

# initialize nonconvex problem
n, k = 10, 1
A = rand(n, k) * rand(k, n)
x = Variable(n, k)
y = Variable(k, n)
problem = minimize(sum_squares(A - x*y), x>=0, y>=0)

# perform alternating minimization on the problem by calling altmin!
altmin!(problem)

# Check the status of the last subproblem solved
problem.status # :Optimal, :Infeasible, :Unbounded etc.

# Get the objective value
problem.optval

Citing this package

If you use MultiConvex.jl for published work, we encourage you to cite the software using the following BibTeX citation:

@article{shen2016disciplined,
  title={Disciplined Multi-Convex Programming},
  author={Shen, Xinyue and Diamond, Steven and Udell, Madeleine and Gu, Yuantao and Boyd, Stephen},
  journal={arXiv preprint arXiv:1609.03285},
  year={2016}
}

About

Extension of Convex.jl for disciplined multiconvex optimization

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages