<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space;" class="">
Well, the reordering logic is necessary for two reasons. For one, CVX allows the cone variables to be in any order whatsover, while SeDuMi expects the free variables first, followed by the nonnegative, second-order cone, and then SDP variables. For another,
 CVX's SDP basis differs from the basis used by some solvers by an elementwise scaling.
<div class=""><br class="">
</div>
<div class="">In fact, SeDuMI's <i class="">solver</i> doesn't handle free variables, either, but its
<i class="">interface </i>does.&nbsp;It accepts free variables as input, and <i class="">
internally </i>converts them to its standard form. It also converts rotated Lorentz cones to un-rotated form, and a few other conversions as well. The user is not expected to concern himself with such matters. I find it unfortunate that CSDP requires calling
 external code to perform the conversion; perhaps it would be a worthwhile investment of your time to build a &quot;wrapper&quot; around CSDP's interface that extends its calling sequence to include free variables.<br class="">
<div class=""><br class="">
</div>
<div class="">I would suggest, by the way, using CVX 3.0 beta for your shim development if you're going to do this. The shims are not back compatible, so it would be a shame for you to waste the work. And on the positive side, the shims are a lot simpler, because
 I've moved a lot of solver-agnostic conversion logic out of the shims themselves, so the shim can focus on handling solver-specific rearrangements.<br class="">
<div class=""><br class="">
<div>
<blockquote type="cite" class="">
<div class="">On Oct 20, 2014, at 9:28 AM, Jose Lopez &lt;<a href="mailto:lopez.jo@husky.neu.edu" class="">lopez.jo@husky.neu.edu</a>&gt; wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div dir="ltr" class="">Hi Michael,
<div class=""><br class="">
</div>
<div class="">Thanks for your reply. I am trying to use the Sedumi calling sequence. I'm actually modifying the Sedumi shim file but as CSDP does not accept free variables I have to convert the free variables to non-negative variables using an M function that
 comes with the CSDP solver -- and as far as I can tell, with the problems I work with (ones without SOCP constraints) the conversion does not result in a much larger problem at all. It does however change the dimensions of some of the matrices (A and c) and
 when the solution comes back the &quot;reord&quot; variables in the Sedumi shim file are no longer size-compatible and the shim logic breaks. I don't know what the reordering logic is all about in &quot;cvx_sedumi.m&quot;.</div>
<div class=""><br class="">
</div>
<div class="">Jose</div>
<div class=""><br class="">
</div>
</div>
<div class="gmail_extra"><br class="">
<div class="gmail_quote">On Mon, Oct 20, 2014 at 10:12 AM, Michael C. Grant <span dir="ltr" class="">
&lt;<a href="mailto:mcg@cvxr.com" target="_blank" class="">mcg@cvxr.com</a>&gt;</span> wrote:<br class="">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div style="word-wrap:break-word" class="">I certainly do support the development of shims for fully free solvers. CSDP fits into that category nicely. However, I’ve not supported CSDP to date because it doesn’t provide native support for SOCP cones. It’s really
 not practical for CVX to support solvers that can’t handle SOCP natively. &nbsp;
<div class="">
<div class=""><br class="">
</div>
<div class="">It is true that SOCP constraints can always be represented using SDP. But a naïve conversion of SOCP to SDP squares the number of variables; and the most efficient approach (in terms of the number of variables) multiplies them by a factor of 6
 or so. And both conversions add quite a few equality constraints as well. I have no idea how either of those conversions impacts accuracy, nor have I examined the empirical performance loss. It’s simply not something I can afford the time to investigate or
 explore. Someone else can do it, but I really cannot support it.</div>
<div class=""><br class="">
</div>
<div class="">I’m not sure I understand the free variable issue. SeDuMi converts free variables to constrained variables internally as well, but the SeDuMi calling sequence accepts them just fine. Why not use the SeDuMi-compatible calling sequence for CSDP,
 and let CSDP’s own facilities handle the conversion?</div>
<div class="">
<div class="h5">
<div class=""><br class="">
</div>
<div class="">
<div class="">
<div class="">
<div class="">
<blockquote type="cite" class="">
<div class="">On Oct 20, 2014, at 8:46 AM, Brian Borchers &lt;<a href="mailto:borchers@nmt.edu" target="_blank" class="">borchers@nmt.edu</a>&gt; wrote:</div>
<br class="">
<div class="">
<div dir="ltr" class="">Jose; I believe that CVX requires a solver than can solve second order cone programming problems (SOCP) as well as SDP.&nbsp; You could transform SOCP's into SDP's and solve them in that form using CSDP, but the performance would be poor
 in comparison with a code that directly solves SOCP.&nbsp;
<div class=""><br class="">
</div>
<div class="">I've included Michael Grant in this reply.&nbsp; Michael; do you have anything to add?&nbsp;
<div class=""><br class="">
</div>
</div>
</div>
<div class="gmail_extra"><br class="">
<div class="gmail_quote">On Mon, Oct 20, 2014 at 7:34 AM, Jose Lopez <span dir="ltr" class="">
&lt;<a href="mailto:lopez.jo@husky.neu.edu" target="_blank" class="">lopez.jo@husky.neu.edu</a>&gt;</span> wrote:<br class="">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div dir="ltr" class="">Hi list,
<div class=""><br class="">
</div>
<div class="">I'm a new member to the CSDP list. My name's Jose I'm an EE grad student at Northeastern in Boston. I'm writing to ask if anyone has written a CVX &quot;solver shim&quot; for CSDP so that it can be called from CVX? (CVX encourages users to make solver interfaces
 so long as the solver is free.) I took a stab at it using the Sedumi solver shim as a starting point but as I'm not that familiar with the internals of SDP solvers I get tripped up when handling the free variables; which as you all know CSDP doesn't accept.
 I know CSDP has a utility to convert free variable problems but I get tripped up when converting the solution back to Sedumi form. Anyway, if someone has a solver shim I would be really, really, grateful if you shared it. =)</div>
<div class=""><br class="">
</div>
<div class="">Have a great Monday, list.</div>
<span class=""><font color="#888888" class="">
<div class=""><br class="">
</div>
<div class="">Jose</div>
</font></span></div>
<br class="">
_______________________________________________<br class="">
Csdp mailing list<br class="">
<a href="mailto:Csdp@list.coin-or.org" target="_blank" class="">Csdp@list.coin-or.org</a><br class="">
<a href="http://list.coin-or.org/mailman/listinfo/csdp" target="_blank" class="">http://list.coin-or.org/mailman/listinfo/csdp</a><br class="">
<br class="">
</blockquote>
</div>
<br class="">
<br clear="all" class="">
<div class=""><br class="">
</div>
-- <br class="">
Brian Borchers &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;<a href="mailto:borchers@nmt.edu" target="_blank" class="">borchers@nmt.edu</a><br class="">
Department of Mathematics &nbsp; &nbsp; &nbsp;<a href="http://www.nmt.edu/~borchers/" target="_blank" class="">http://www.nmt.edu/~borchers/</a><br class="">
New Mexico Tech &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Phone: <a href="tel:%28575%29%20322-2592" value="&#43;15753222592" target="_blank" class="">
(575) 322-2592</a><br class="">
Socorro, NM 87801 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; FAX: <a href="tel:%28575%29%20835-5366" value="&#43;15758355366" target="_blank" class="">
(575) 835-5366</a> </div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</blockquote>
</div>
<br class="">
</div>
</div>
</div>
</body>
</html>