<div dir="ltr">Hi,<div><br></div><div>As being both a Gurobi and scip user, my first question to you would be if you have tried to scale your matrix yourself.</div><div>Gurobi has internal scaling strategies but you know your model best and you may be able to scale the input data alot better than a solver does.<br></div><div><br></div><div>Peter</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Fri, 27 Sept 2024 at 11:41, Wang Wenyuan <<a href="mailto:wenyuan.wang@naist.ac.jp">wenyuan.wang@naist.ac.jp</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Dear Soplex developers,<br>
<br>
This is Wenyuan (Mike) Wang, currently working as an Associate Professor <br>
in Information Science at Nara Institute of Science and Technology in <br>
Japan. I work on quantum information (especially quantum cryptography) <br>
and in our field we often run into linear programming or <br>
semidefinite-programming problems that require numerical solvers.<br>
<br>
Previously we mainly used Gurobi for LP problems and Mosek for SDP (and <br>
some LP), which are rather fast and work reasonably accurately. However, <br>
recently we are visiting some more numerically challenging LP problems. <br>
Particularly, say in the form of Ax<=B, A can have a size as large as <br>
2000x2000, and the largest vs smallest coefficients in A can have as <br>
many as 15 orders-of-magnitude differences. This makes Gurobi struggle a <br>
lot with reaching an accurate solution. Therefore, we are hoping to find <br>
some solvers with even higher precision (such as quad-precision, <br>
arbitrary-precision, or even rational exact solvers) to see if they <br>
might help with our problem.<br>
<br>
I have followed the README and INSTALL instructions in the soplex <br>
package (version 711) and have successfully compiled it in Linux <br>
environment (AMD x86_64 CPU with Windows WSL Ubuntu) and macos <br>
environment (M2 Max with Rosetta emulated x86). I compiled with makefile <br>
flags such as GMP=true, QUADMATH=true/false, MPFR=true (quadmath option <br>
is not available for Apple Silicon, while gmp and mpfr works on both <br>
platforms). With dependencies including gmp, boost::quadmath, zlib set <br>
up, I was also able to link Soplex to my C++ project (CLion) and run the <br>
simple real number and rational number test programs in <br>
<a href="https://soplex.zib.de/doc/html/example_8cpp_source.php" rel="noreferrer" target="_blank">https://soplex.zib.de/doc/html/example_8cpp_source.php</a>.<br>
<br>
However, my question is, when using the library, how should I turn on <br>
the 80-bit (or float_128 in quadmath?) quad precision as described in <br>
the Soplex main page? I looked through the parameter list, but it seems <br>
there is no option for switching the internal precision, and while in <br>
the changelog <a href="https://soplex.zib.de/doc-7.1.1/html/CHANGELOG.php" rel="noreferrer" target="_blank">https://soplex.zib.de/doc-7.1.1/html/CHANGELOG.php</a> it <br>
mentions that there're two run-time command line options "solvemode" and <br>
"arithmetic", unfortunately they seem to only work in standalone mode <br>
but do not seem to be available for the library with the setIntParam <br>
API.<br>
<br>
The only parameters I can find that relate to precision seem to be <br>
ADAPT_TOLS_TO_MULTIPRECISION, PRECISION_BOOSTING, MULTIPRECISION_LIMIT, <br>
and PRECISION_BOOSTING_FACTOR. However, they seem to be related to MPFR <br>
(since when I set e.g. PRECISION_BOOSTING to true, the program will <br>
automatically output a warning if mpfr is not installed) but not <br>
boost::quadmath.<br>
<br>
May I ask if there is any specific argument to enable quadmath (or does <br>
linking to the Soplex library compiled with quadmath=true automatically <br>
enable it)? Or, is the quad-precision option already deprecated? Also, <br>
if one instead hopes to use the arbitrary-precision MPFR instead, may I <br>
ask what might be the recommended settings for the above four <br>
precision-related parameters, and is setting up those parameters at the <br>
beginning of the program all one needs to do (without any API function <br>
call change)?<br>
<br>
Looking forward to your kind suggestions. Many thanks for your kind help <br>
in advance.<br>
<br>
Regards,<br>
Mike<br>
_______________________________________________<br>
SoPlex mailing list<br>
<a href="mailto:SoPlex@zib.de" target="_blank">SoPlex@zib.de</a><br>
<a href="https://listserv.zib.de/mailman/listinfo/soplex" rel="noreferrer" target="_blank">https://listserv.zib.de/mailman/listinfo/soplex</a><br>
</blockquote></div>