<html>
<head>
<meta http-equiv="Content-Type" content="text/html;
charset=windows-1252">
</head>
<body text="#000000" bgcolor="#FFFFFF">
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):<br>
<br>
<pre> /** @brief one binary variable for each field (i,j) on the chess bord
*
* To access variable information (objective value, bounds,
* etc.) use the SCIP_VAR * pointer. Since we want to know the
* value of each variable in the solution, we have to store
* these pointers.
*/
std::vector<std::vector<SCIP_VAR *> > _vars;
</pre>
<br>
The result of SCIPgetVars() is a 1D-Array, which you should indeed
**not** access by a 2D-index.<br>
<br>
Regarding your question about detection: The mps-format does not
preserve decomposition label information. 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>
<br>
<div class="moz-cite-prefix">Am 17.06.19 um 11:01 schrieb "Büsing,
Henrik":<br>
</div>
<blockquote type="cite"
cite="mid:204209652940AD48AF06EE2459C2124E02B558CE@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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0cm;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;
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;}
span.E-MailFormatvorlage17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;
mso-fareast-language:EN-US;}
@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">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].<o:p></o:p></span></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. <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Finally, is there an
example on how to use the structure detection of GCG? <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Thank you very much for
your help! <br>
<br>
Best, <br>
Henrik<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">[1]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Program received signal
SIGSEGV, Segmentation fault.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">SCIPreaderGetData
(reader=reader@entry=0x0)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> at
/home/henrik/Code/scipoptsuite-6.0.1/scip/src/scip/reader.c:488<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">488 return
reader->readerdata;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">[2]<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">// Derived from Queens
example by Cornelius Schwarz<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#include
<scip/scip.h><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#include
<scip/scipdefplugins.h><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#include
"scip_exception.hpp"<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">#include
<iostream><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">using namespace std;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">/** main function **/<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">int<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">main()<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">{<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> // Define scip
pointer and filename<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP* scip;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_READER* reader;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> const char*
filename="/home/henrik/JSC/FINE_exampleMpsFiles/toy.MPS";<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> cout <<
filename << endl;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_RESULT* result;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> result = new
SCIP_RESULT[3];<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> // Create scip
environment<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">
SCIP_CALL_EXC(SCIPcreate(& scip));<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> // Load desired
plugins<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">
SCIP_CALL_EXC(SCIPincludeDefaultPlugins(scip));<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> // disable scip
output to stdout<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">
SCIPmessagehdlrSetQuiet(SCIPgetMessagehdlr(scip), TRUE);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> // Read in *.MPS file<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> SCIPreadMps(scip,
reader, filename, result, <o:p></o:p></span></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">);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> // Solve<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">
SCIP_CALL_EXC(SCIPsolve(scip));<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> // Display solution<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_VAR** vars;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> vars =
SCIPgetVars(scip);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_SOL* sol;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> sol =
SCIPgetBestSol(scip);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> for (int i=0; i<3;
++i)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> for (int j=0;
j<3; ++j)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> {<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> cout <<
"Solution: " << SCIPgetSolVal(scip, sol,
&vars[i][j]) << endl;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> }<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> int nvars =
SCIPgetNVars(scip); <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> int nbinvars =
SCIPgetNBinVars(scip);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> int nintvars =
SCIPgetNIntVars(scip);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> int nimplvars =
SCIPgetNImplVars(scip); <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> int ncontvars =
SCIPgetNContVars(scip);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_Real objscale =
1.0;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_Real objoffset =
0.0;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_VAR** fixedvars
= SCIPgetFixedVars(scip);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> int nfixedvars =
SCIPgetNFixedVars(scip);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> SCIP_CONS** conss =
SCIPgetConss(scip);<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> int nconss =
SCIPgetNConss(scip); <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> const char*
name="Toy"; <o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> SCIPwriteMps(scip,
reader, NULL, name, FALSE, SCIP_OBJSENSE_MINIMIZE,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">
objscale, objoffset, vars, nvars, nbinvars, nintvars,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">
nimplvars, ncontvars, fixedvars, nfixedvars, conss,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">
nconss, result<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> );<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"> return EXIT_SUCCESS;<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">}<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE" lang="EN-US">-- <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE" lang="EN-US">Dipl.-Math.
Henrik Büsing<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE" lang="EN-US">Jülich
Supercomputing Centre<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">Institute for Advanced
Simulation<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">Forschungszentrum Jülich<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">Wilhelm-Johnen-Straße<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE" lang="EN-US">52425
Jülich, Germany<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE" lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE" lang="EN-US">Phone:
+49-2461-61-9884<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE" lang="EN-US">Fax:
+49-2461-61-6656<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE" lang="EN-US">E-Mail:
<a class="moz-txt-link-abbreviated" href="mailto:H.Buesing@fz-juelich.de">H.Buesing@fz-juelich.de</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE" lang="EN-US">WWW:
<a class="moz-txt-link-freetext" href="http://www.fz-juelich.de/ias/jsc">http://www.fz-juelich.de/ias/jsc</a><o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">-------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">-------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">Forschungszentrum Juelich
GmbH<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">52425 Juelich<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">Sitz der Gesellschaft:
Juelich<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">Eingetragen im
Handelsregister des Amtsgerichts Dueren Nr. HR B 3498<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">Vorsitzender des
Aufsichtsrats: MinDir Volker Rieke<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">Geschaeftsfuehrung: Prof.
Dr.-Ing. Wolfgang Marquardt (Vorsitzender),<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">Karsten Beneke (stellv.
Vorsitzender), Prof. Dr.-Ing. Harald Bolt,<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">Prof. Dr. Sebastian M.
Schmidt<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">-------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-family:"Courier
New";mso-fareast-language:DE">-------------------------------------------------------------------------------------<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<pre class="moz-quote-pre" wrap="">_______________________________________________
Scip mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Scip@zib.de">Scip@zib.de</a>
<a class="moz-txt-link-freetext" href="https://listserv.zib.de/mailman/listinfo/scip">https://listserv.zib.de/mailman/listinfo/scip</a>
</pre>
</blockquote>
<br>
</body>
</html>