<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>