<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Good morning Henrik,<br>
<br>
may I introduce you to <a moz-do-not-send="true"
href="https://scip.zib.de/doc/html/group__PublicSolutionMethods.php#ga3bd6c0f66c0179c77cf4c708ee2bef45">SCIPprintSol()</a>,
a reliable little helper in such situations.<br>
<br>
The SCIP documentation is in general a good place to search for
information. You should make yourself familiar with the <a
moz-do-not-send="true"
href="https://scip.zib.de/doc/html/group__PublicSolutionMethods.php">methods
available</a> for the SCIP_SOL* structure.<br>
<br>
Happy printing,<br>
Gregor<br>
<br>
<div class="moz-cite-prefix">Am 18.06.19 um 09:12 schrieb "Büsing,
Henrik":<br>
</div>
<blockquote type="cite"
cite="mid:204209652940AD48AF06EE2459C2124E02B5698A@MBX2010-E01.ad.fz-juelich.de">
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
<meta name="Generator" content="Microsoft Word 15 (filtered
medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
{font-family:Consolas;
panose-1:2 11 6 9 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
color:black;
mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
pre
{mso-style-priority:99;
mso-style-link:"HTML Vorformatiert Zchn";
margin:0cm;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";
color:black;}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
mso-margin-top-alt:auto;
margin-right:0cm;
mso-margin-bottom-alt:auto;
margin-left:0cm;
font-size:12.0pt;
font-family:"Times New Roman",serif;
color:black;}
span.HTMLVorformatiertZchn
{mso-style-name:"HTML Vorformatiert Zchn";
mso-style-priority:99;
mso-style-link:"HTML Vorformatiert";
font-family:"Consolas",serif;
color:black;}
span.E-MailFormatvorlage20
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:windowtext;}
span.E-MailFormatvorlage21
{mso-style-type:personal;
font-family:"Calibri",sans-serif;
color:#1F497D;}
span.E-MailFormatvorlage22
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:612.0pt 792.0pt;
margin:70.85pt 70.85pt 2.0cm 70.85pt;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
<div class="WordSection1">
<p class="MsoNormal"><span style="color:#1F497D">Dear Gregor, <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US">Thank
you for your answer! I am still unsure how to display the
solution correctly. I am using the code [1], but this only
gives the first value of the solution three times. <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US">Regarding
what we would like to do: Our aim is to use hardware with
distributed memory to solve LPs and MIPs. I have problems in
MPS-format and would like to detect a block-structure
automatically to solve the different blocks in parallel. <o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US"><br>
Best, <br>
Henrik<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US">[1]<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US">
SCIP_VAR** vars;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US">
vars = SCIPgetVars(scip);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US">
SCIP_SOL* sol;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US">
sol = SCIPgetBestSol(scip);<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US">
for (int i=0; i<3; ++i)<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US">
{<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US">
cout << "Solution: " << SCIPgetSolVal(scip, sol,
vars[i]) << endl;<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US">
}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:#1F497D" lang="EN-US"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1
1.0pt;padding:3.0pt 0cm 0cm 0cm">
<p class="MsoNormal"><b><span
style="color:windowtext;mso-fareast-language:DE">Von:</span></b><span
style="color:windowtext;mso-fareast-language:DE"> Scip
[<a class="moz-txt-link-freetext" href="mailto:scip-bounces@zib.de">mailto:scip-bounces@zib.de</a>] <b>Im Auftrag von </b>Gregor
Hendel<br>
<b>Gesendet:</b> Montag, 17. Juni 2019 12:44<br>
<b>An:</b> <a class="moz-txt-link-abbreviated" href="mailto:scip@zib.de">scip@zib.de</a><br>
<b>Betreff:</b> Re: [SCIP] MPS Read and Write and
Structure Detection<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal" style="margin-bottom:12.0pt">Hi Henrik,<br>
<br>
the queens example (introd)uses a data structure
"QueensSolver" that stores variables in a 2D array, which is a
very intuitive representation of an n-by-n checkers board.
Make sure you read the comments when you start working with an
example (queens.hpp):<span
style="font-size:12.0pt;mso-fareast-language:DE"><o:p></o:p></span></p>
<pre> /** @brief one binary variable for each field (i,j) on the chess bord<o:p></o:p></pre>
<pre> *<o:p></o:p></pre>
<pre> * To access variable information (objective value, bounds,<o:p></o:p></pre>
<pre> * etc.) use the SCIP_VAR * pointer. Since we want to know the<o:p></o:p></pre>
<pre> * value of each variable in the solution, we have to store<o:p></o:p></pre>
<pre> * these pointers.<o:p></o:p></pre>
<pre> */<o:p></o:p></pre>
<pre> std::vector<std::vector<SCIP_VAR *> > _vars;<o:p></o:p></pre>
<p class="MsoNormal" style="margin-bottom:12.0pt"><br>
The result of SCIPgetVars() is a 1D-Array, which you should
indeed **not** access by a 2D-index.<span
style="color:#1F497D"><o:p></o:p></span></p>
<p class="MsoNormal" style="margin-bottom:12.0pt"><span
lang="EN-US">Regarding your question about detection: The
mps-format does not preserve decomposition label
information. </span>A detected arrowhead structure will be
lost. SCIP in its current version does not support reading
decompositions.<br>
It would be good if you could elaborate a little bit more on
what you are trying to achieve, so that the SCIP and GCG team
can give you a better suggestion how to pursue that.<br>
<br>
Cheers,<br>
Gregor<br>
<br>
<br>
<o:p></o:p></p>
<div>
<p class="MsoNormal">Am 17.06.19 um 11:01 schrieb "Büsing,
Henrik":<o:p></o:p></p>
</div>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal">Dear SCIP users, <o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">I would like to read
in an MPS-file, detect a possible arrowhead structure via
dec_hcgpartition.cpp and then write the MPS-file with the
new structure. I was able to read in an MPS-file and solve
it, but I get a segmentation fault while writing the
MPS-file (see [2] for the code). When running in debugger
I get error [1].</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">Could you point out
what I am doing wrong while trying to write the MPS-file?
<br>
Additionally, why is vars two-dimensional? Should this not
be just a long array with all the variables in it? How do
I print the solution in a correct way? A nested loop over
i and j does not honor the sparse structure of the
constraint matrix A. </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">Finally, is there an
example on how to use the structure detection of GCG? </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">Thank you very much
for your help! <br>
<br>
Best, <br>
Henrik</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">[1]</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">Program received
signal SIGSEGV, Segmentation fault.</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">SCIPreaderGetData
(reader=reader@entry=0x0)</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> at
/home/henrik/Code/scipoptsuite-6.0.1/scip/src/scip/reader.c:488</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">488 return
reader->readerdata;</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">[2]</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">// Derived from Queens
example by Cornelius Schwarz</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">#include
<scip/scip.h></span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">#include
<scip/scipdefplugins.h></span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">#include
"scip_exception.hpp"</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">#include
<iostream></span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">using namespace std;</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">/** main function **/</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">int</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">main()</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">{</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> // Define scip
pointer and filename</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP* scip;</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_READER*
reader;</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> const char*
filename="/home/henrik/JSC/FINE_exampleMpsFiles/toy.MPS";</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> cout <<
filename << endl;</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_RESULT*
result;</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> result = new
SCIP_RESULT[3];</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> // Create scip
environment</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">
SCIP_CALL_EXC(SCIPcreate(& scip));</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> // Load desired
plugins</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">
SCIP_CALL_EXC(SCIPincludeDefaultPlugins(scip));</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> // disable scip
output to stdout</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">
SCIPmessagehdlrSetQuiet(SCIPgetMessagehdlr(scip), TRUE);</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> // Read in *.MPS
file</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> SCIPreadMps(scip,
reader, filename, result, </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span>NULL,NULL,<o:p></o:p></p>
<p class="MsoNormal"> NULL,NULL, <o:p></o:p></p>
<p class="MsoNormal"> NULL,NULL<o:p></o:p></p>
<p class="MsoNormal"> <span lang="EN-US">);</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> // Solve</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">
SCIP_CALL_EXC(SCIPsolve(scip));</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> // Display solution</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_VAR** vars;</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> vars =
SCIPgetVars(scip);</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_SOL* sol;</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> sol =
SCIPgetBestSol(scip);</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> for (int i=0;
i<3; ++i)</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> for (int j=0;
j<3; ++j)</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> {</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> cout <<
"Solution: " << SCIPgetSolVal(scip, sol,
&vars[i][j]) << endl;</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> }</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> int nvars =
SCIPgetNVars(scip); </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> int nbinvars =
SCIPgetNBinVars(scip);</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> int nintvars =
SCIPgetNIntVars(scip);</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> int nimplvars =
SCIPgetNImplVars(scip); </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> int ncontvars =
SCIPgetNContVars(scip);</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_Real objscale
= 1.0;</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_Real objoffset
= 0.0;</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_VAR**
fixedvars = SCIPgetFixedVars(scip);</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> int nfixedvars =
SCIPgetNFixedVars(scip);</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_CONS** conss =
SCIPgetConss(scip);</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> int nconss =
SCIPgetNConss(scip); </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> const char*
name="Toy"; </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> SCIPwriteMps(scip,
reader, NULL, name, FALSE, SCIP_OBJSENSE_MINIMIZE,</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">
objscale, objoffset, vars, nvars, nbinvars, nintvars,</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">
nimplvars, ncontvars, fixedvars, nfixedvars, conss,</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">
nconss, result</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> );</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> return
EXIT_SUCCESS;</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">}</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">-- </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">Dipl.-Math. Henrik
Büsing</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">Jülich Supercomputing
Centre</span><o:p></o:p></p>
<p class="MsoNormal">Institute for Advanced Simulation<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal">Forschungszentrum Jülich<o:p></o:p></p>
<p class="MsoNormal">Wilhelm-Johnen-Straße<o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">52425 Jülich, Germany</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US"> </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">Phone:
+49-2461-61-9884</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">Fax:
+49-2461-61-6656</span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">E-Mail: <a
href="mailto:H.Buesing@fz-juelich.de"
moz-do-not-send="true">H.Buesing@fz-juelich.de</a></span><o:p></o:p></p>
<p class="MsoNormal"><span lang="EN-US">WWW: <a
href="http://www.fz-juelich.de/ias/jsc"
moz-do-not-send="true">http://www.fz-juelich.de/ias/jsc</a></span><o:p></o:p></p>
<p class="MsoNormal">-------------------------------------------------------------------------------------<o:p></o:p></p>
<p class="MsoNormal">-------------------------------------------------------------------------------------<o:p></o:p></p>
<p class="MsoNormal">Forschungszentrum Juelich GmbH<o:p></o:p></p>
<p class="MsoNormal">52425 Juelich<o:p></o:p></p>
<p class="MsoNormal">Sitz der Gesellschaft: Juelich<o:p></o:p></p>
<p class="MsoNormal">Eingetragen im Handelsregister des
Amtsgerichts Dueren Nr. HR B 3498<o:p></o:p></p>
<p class="MsoNormal">Vorsitzender des Aufsichtsrats: MinDir
Volker Rieke<o:p></o:p></p>
<p class="MsoNormal">Geschaeftsfuehrung: Prof. Dr.-Ing.
Wolfgang Marquardt (Vorsitzender),<o:p></o:p></p>
<p class="MsoNormal">Karsten Beneke (stellv. Vorsitzender),
Prof. Dr.-Ing. Harald Bolt,<o:p></o:p></p>
<p class="MsoNormal">Prof. Dr. Sebastian M. Schmidt<o:p></o:p></p>
<p class="MsoNormal">-------------------------------------------------------------------------------------<o:p></o:p></p>
<p class="MsoNormal">-------------------------------------------------------------------------------------<o:p></o:p></p>
<p class="MsoNormal"> <o:p></o:p></p>
<p class="MsoNormal"><span
style="font-size:12.0pt;font-family:"Times New
Roman",serif;mso-fareast-language:DE"><br>
<br>
<o:p></o:p></span></p>
<pre>_______________________________________________<o:p></o:p></pre>
<pre>Scip mailing list<o:p></o:p></pre>
<pre><a href="mailto:Scip@zib.de" moz-do-not-send="true">Scip@zib.de</a><o:p></o:p></pre>
<pre><a href="https://listserv.zib.de/mailman/listinfo/scip" moz-do-not-send="true">https://listserv.zib.de/mailman/listinfo/scip</a><o:p></o:p></pre>
</blockquote>
<p class="MsoNormal"><span
style="font-size:12.0pt;font-family:"Times New
Roman",serif;mso-fareast-language:DE"><o:p> </o:p></span></p>
</div>
</blockquote>
<br>
</body>
</html>