%%***************************************************************************** %% Convert file in PENLIB format to SDPA format %% %% pen2sdpa(pen, fname) %% %% Input: pen...structure with data arrays in PENLIB format %% %% Output: fname...name of the file containing SDP data in SDPA format %% %% Copyright (c) 2002 by M. Kocvara and M. Stingl, PENOPT GbR %% Version 17/06/2002 %%***************************************************************************** function pen2sdpa(pen, fname) fid = fopen(fname,'wt'); %fprintf(fid,'kokokoko\n'); fprintf(fid,'%d\n',pen.vars); mm = pen.mconstr; if pen.constr ~= 0 mm = pen.mconstr + 1; end fprintf(fid,'%d\n',mm); mm = [pen.msizes]; if pen.constr ~= 0 mm = [pen.msizes,-pen.constr]; end fprintf(fid,'%5d',mm);fprintf(fid,'\n'); fprintf(fid,'%10g',pen.fobj);fprintf(fid,'\n'); izs = 1; icong = 0; for i = 1:pen.mconstr nc = pen.ai_dim(i); for icon = 1:nc imat = pen.ai_idx(icong+icon); if imat == 0 isig = 1; else isig = -1; end nzs = pen.ai_nzs(icong+icon); for iel = 1:nzs fprintf(fid,'%5d %5d %5d %5d %16f\n',imat,i,pen.ai_row(izs)+1,pen.ai_col(izs)+1,isig*pen.ai_val(izs)); izs = izs + 1; end end icong = icong + nc; end for i=1:pen.constr imat = 0; ibl = pen.mconstr + 1; fprintf(fid,'%5d %5d %5d %5d %16f\n',imat,ibl,i,i,-pen.ci(i)); end jj = 0; for i=1:pen.constr for j=1:pen.bi_dim(i) jn = jj + j; imat = pen.bi_idx(jn) + 1; ibl = pen.mconstr + 1; fprintf(fid,'%5d %5d %5d %5d %16f\n',imat,ibl,i,i,-pen.bi_val(jn)); end jj = jj + pen.bi_dim(i); end fclose(fid);