[SCIP] SCIProwGetObjParallelism assert query

James Cussens james.cussens at bristol.ac.uk
Mon Jun 26 11:44:45 CEST 2023


Hi Marc,

Thanks for the explanation. I did as you suggested and now I get:

gobnilp: src/scip/lp.c:710: checkRowSqrnorm: Assertion `ABS(sqrnorm - row->sqrnorm) < 1e-06 * MAX(1.0,sqrnorm)' failed.

so something has gone wrong with the computation of row norms. I'll track down why this is happening (when I get the time!).

James

James Cussens
Room MVB 3.26
Dept of Computer Science, University of Bristol
Phone: +44 (0)117 455 8723
https://jcussens.github.io/
Funded PhDs available in Bristol in the following areas: Data Science<http://www.bristol.ac.uk/cdt/compass/>, Interactive AI<http://www.bristol.ac.uk/cdt/interactive-ai/>, Cyber Security<http://www.bristol.ac.uk/cdt/cyber-security/> or Digital Health<http://www.bristol.ac.uk/cdt/digital-health/>.
________________________________
From: Scip <scip-bounces at zib.de> on behalf of Marc Pfetsch <pfetsch at mathematik.tu-darmstadt.de>
Sent: 23 June 2023 17:16
To: scip at zib.de <scip at zib.de>
Subject: Re: [SCIP] SCIProwGetObjParallelism assert query



Hi James,

in exact arithmetic parallelism should be at most 1. If this is not the
case, this might signify an error. This is why there is an assert. Or
the problem might occur because of numerical problems (you numbers look
quite big). In any case, the issue will be ignored in optimized mode.

If you want to enable some additional checks, you can add "#define
SCIP_MORE_DEBUG" at the top of lp.c, recompile and run. SCIP will then
check whether the values use in the function below are reasonably close
to the ones that it would get by recomputing the values. Note that this
will slow down execution.

Best

Marc



On 23/06/2023 16:55, James Cussens wrote:
> Hi all,
>
> I'm getting the following assert error when running in OPT=dbg mode
> (everything else default compilation options):
>
> gobnilp: src/scip/lp.c:7820: SCIProwGetObjParallelism: Assertion
> `SCIPsetIsSumLE(set, parallelism, 1.0)' failed.
>
> The relevant code from lp.c is:
>
>     parallelism = SCIPsetIsPositive(set, prod) ? REALABS(row->objprod) /
> SQRT(prod) : 0.0;
>     assert(SCIPsetIsSumGE(set, parallelism, 0.0));
>     assert(SCIPsetIsSumLE(set, parallelism, 1.0));
>     parallelism = MIN(parallelism, 1.0);
>     parallelism = MAX(parallelism, 0.0);
>
> If it is reasonable to assert that parallelism is <= 1.0, then why do we
> need the "parallelism = MIN(parallelism, 1.0);" line?
>
> Here are the values that are causing the assert error:
> [lp.c:7819] debug:
> |row->objprod|=5.66927e+07,prod=7.62443e+14,parallelism=2.05316
>> James
>
> James Cussens
> Room MVB 3.26
> Dept of Computer Science, University of Bristol
> Phone: +44 (0)117 455 8723
> https://jcussens.github.io/ <https://jcussens.github.io/>
> Funded PhDs available in Bristol in the following areas: Data Science
> <http://www.bristol.ac.uk/cdt/compass/>, Interactive AI
> <http://www.bristol.ac.uk/cdt/interactive-ai/>, Cyber Security
> <http://www.bristol.ac.uk/cdt/cyber-security/> or Digital Health
> <http://www.bristol.ac.uk/cdt/digital-health/>.
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> https://listserv.zib.de/mailman/listinfo/scip
_______________________________________________
Scip mailing list
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/20230626/45619dc1/attachment.html>


More information about the Scip mailing list