Git Product home page Git Product logo

sdpfw's Introduction

Block factor-width-two and Decomposed cone programs

This repository contains a set of MATLAB scripts that reformulate standard SDPs using structured subsets of the positive semidefinite (PSD) cone. We consider two general classes of structured subsets of the PSD cone

Block factor-width-two program

The function factorwidth.m approximates an SDP in the standard primal vectorized form using block factor-width-two matrices

            minimize 	c'x					
  (1)   subject to	Ax = b,					
                 	x \in K				

where the conic constraint x \in K is cartesian products of the following cones:

  • R^n (free variables)
  • Non-negative orthant
  • Second-order cone
  • Positive semidefinite cone

Only the PSD cones are approximated.

The main function factorwidth.m is called with the syntax

>> [Anew, bnew, cnew, Knew, info] = factorwidth(A,b,c,K,opts);

Input data

  • A, b, c, K are SDP data in seudmi form
  • opts.bfw 1 or 0, block factor-width-two decomposition
  • opts.nop integer, number of blocks in the partion alpha
  • opts.size alternative to nop, number of entries in each block
  • opts.socp 1 or 0, reformualte 2 by 2 PSD cone with a second-order cone
  • opts.dual 1 or 0, whether this should be dual or primal block factorwidth two cone

The output data Anew, bnew, cnew, Knew are new SDP data in sedumi form, which can be passed to SeDuMi directly, i.e.,

>> [Anew, bnew, cnew, Knew, infofw] = factorwidth(A,b,c,K,opts);   % reformulate an SDP using factor-width approximation
>> [xn,yn,info] = sedumi(Anew,bnew,cnew,Knew);                     % solve the new SDP using sedumi

See test_sedumi.m and test_mosek.m for examples.

Decomposed Structured Subsets

The function decomposed_subset.m approximates an SDP in the standard primal vectorized form using general structured subsets.

The arguments to decomposed_subset includes a parameter 'cone' for the approximating subset of the PSD cone. Allowable values are 'dd', 'sdd', 'psd', or an integer k (block factor-width 2 with block size k). 'cone' may also be a cell indicating which approximating cone should be used for each PSD cone (in K.s).

decomposed_recover.m returns the optimum matrix solution X^* given the approximated problem from decomposed_subset.m

basis_change.m performs the Change of Basis algorithm given a model and an initial feasible point. model.basis is the Cholesky basis used for transformation

Related publications

Details can be found in the following papers:

  1. Zheng, Y. Sootla, A., & Papachristodoulou, A. (2019). Block Factor-width-two Matrices and Their Applications to Semidefinite and Sum-of-squares Optimization, under review.
  2. Sootla, A., Zheng, Y., & Papachristodoulou, A. (2019). Block factor-width-two matrices in semidefinite programming. In 2019 18th European Control Conference (ECC) (pp. 1981-1986). IEEE.
  3. Miller, J., Zheng, Y., Sznaier, M., Papachristodoulou, A. (2019). Decomposed Structured Subsets for Semidefinite and Sum-of-Squares Optimization arXiv preprint arXiv:1911.12859

sdpfw's People

Contributors

aivarsoo avatar jarmill avatar zhengy09 avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Forkers

fengyiliao

sdpfw's Issues

Incorrect results for multiple PSD cones

Hi,

Thanks for this insightful work.

I am trying to use factorwidth.m to reformulate my SDPs. I found that an original infeasible problem will be reported as feasible by mosek if factorwidth.m is used.
Example_SDPfw.zip

One guess for this issue is that factorwidth.m works imperfectly with multiple PSD cones, as I noticed that all the examples you gave only have 1 cone. I did notice you have some code dealing with the multiple PSD cones, so this guess might not be correct.

Thanks

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.