[SCIP] MPS Read and Write and Structure Detection
"Büsing, Henrik"
h.buesing at fz-juelich.de
Tue Jun 18 09:12:59 CEST 2019
Dear Gregor,
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.
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.
Best,
Henrik
[1]
SCIP_VAR** vars;
vars = SCIPgetVars(scip);
SCIP_SOL* sol;
sol = SCIPgetBestSol(scip);
for (int i=0; i<3; ++i)
{
cout << "Solution: " << SCIPgetSolVal(scip, sol, vars[i]) << endl;
}
Von: Scip [mailto:scip-bounces at zib.de] Im Auftrag von Gregor Hendel
Gesendet: Montag, 17. Juni 2019 12:44
An: scip at zib.de
Betreff: Re: [SCIP] MPS Read and Write and Structure Detection
Hi Henrik,
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):
/** @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;
The result of SCIPgetVars() is a 1D-Array, which you should indeed **not**
access by a 2D-index.
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.
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.
Cheers,
Gregor
Am 17.06.19 um 11:01 schrieb "Büsing, Henrik":
Dear SCIP users,
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].
Could you point out what I am doing wrong while trying to write the
MPS-file?
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.
Finally, is there an example on how to use the structure detection of GCG?
Thank you very much for your help!
Best,
Henrik
[1]
Program received signal SIGSEGV, Segmentation fault.
SCIPreaderGetData (reader=reader at entry=0x0)
at /home/henrik/Code/scipoptsuite-6.0.1/scip/src/scip/reader.c:488
488 return reader->readerdata;
[2]
// Derived from Queens example by Cornelius Schwarz
#include <scip/scip.h>
#include <scip/scipdefplugins.h>
#include "scip_exception.hpp"
#include <iostream>
using namespace std;
/** main function **/
int
main()
{
// Define scip pointer and filename
SCIP* scip;
SCIP_READER* reader;
const char* filename="/home/henrik/JSC/FINE_exampleMpsFiles/toy.MPS";
cout << filename << endl;
SCIP_RESULT* result;
result = new SCIP_RESULT[3];
// Create scip environment
SCIP_CALL_EXC(SCIPcreate(& scip));
// Load desired plugins
SCIP_CALL_EXC(SCIPincludeDefaultPlugins(scip));
// disable scip output to stdout
SCIPmessagehdlrSetQuiet(SCIPgetMessagehdlr(scip), TRUE);
// Read in *.MPS file
SCIPreadMps(scip, reader, filename, result,
NULL,NULL,
NULL,NULL,
NULL,NULL
);
// Solve
SCIP_CALL_EXC(SCIPsolve(scip));
// Display solution
SCIP_VAR** vars;
vars = SCIPgetVars(scip);
SCIP_SOL* sol;
sol = SCIPgetBestSol(scip);
for (int i=0; i<3; ++i)
for (int j=0; j<3; ++j)
{
cout << "Solution: " << SCIPgetSolVal(scip, sol, &vars[i][j]) << endl;
}
int nvars = SCIPgetNVars(scip);
int nbinvars = SCIPgetNBinVars(scip);
int nintvars = SCIPgetNIntVars(scip);
int nimplvars = SCIPgetNImplVars(scip);
int ncontvars = SCIPgetNContVars(scip);
SCIP_Real objscale = 1.0;
SCIP_Real objoffset = 0.0;
SCIP_VAR** fixedvars = SCIPgetFixedVars(scip);
int nfixedvars = SCIPgetNFixedVars(scip);
SCIP_CONS** conss = SCIPgetConss(scip);
int nconss = SCIPgetNConss(scip);
const char* name="Toy";
SCIPwriteMps(scip, reader, NULL, name, FALSE, SCIP_OBJSENSE_MINIMIZE,
objscale, objoffset, vars, nvars, nbinvars,
nintvars,
nimplvars, ncontvars, fixedvars, nfixedvars,
conss,
nconss, result
);
return EXIT_SUCCESS;
}
--
Dipl.-Math. Henrik Büsing
Jülich Supercomputing Centre
Institute for Advanced Simulation
Forschungszentrum Jülich
Wilhelm-Johnen-Straße
52425 Jülich, Germany
Phone: +49-2461-61-9884
Fax: +49-2461-61-6656
E-Mail: H.Buesing at fz-juelich.de <mailto:H.Buesing at fz-juelich.de>
WWW: http://www.fz-juelich.de/ias/jsc
----------------------------------------------------------------------------
---------
----------------------------------------------------------------------------
---------
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Volker Rieke
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt
----------------------------------------------------------------------------
---------
----------------------------------------------------------------------------
---------
_______________________________________________
Scip mailing list
Scip at zib.de <mailto:Scip at zib.de>
https://listserv.zib.de/mailman/listinfo/scip
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.zib.de/pipermail/scip/attachments/20190618/2e3f357b/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 7628 bytes
Desc: not available
URL: <http://listserv.zib.de/pipermail/scip/attachments/20190618/2e3f357b/attachment.p7s>
More information about the Scip
mailing list