[Bonmin] Assertion in OsiSimpleInteger::createBranch()
David Wilkinson
xyz-coin at effisols.com
Tue Jun 20 18:04:13 EDT 2017
Hi Stefan:
In Bonmin 1.8.6, when I activate ma57 solver, I also see a Visual C++
warning (signed/unsigned mismatch) from the code
if( wd_lfact_ > std::numeric_limits<size_t>::max() / sizeof(double) ) {
at Ipopt\src\Algorithm\LinearSolvers\IpMa57TSolverInterface.cpp line 657
This signed/unsigned mismatch warning always makes me very nervous
(especially in 64-bit builds). Personally I would do something like
assert(wd_lfact_ >= 0);
if ( (size_t)wd_lfact_ > std::numeric_limits<size_t>::max() /
sizeof(double) ) {
// ...
}
Or better, re-write the code so that a cast (implicit or explicit) is
not necessary.
Thanks,
David Wilkinson
=========================
On 20.06.2017 12:17, Stefan Vigerske wrote:
> Hi,
>
> On 06/20/2017 05:36 PM, David Wilkinson wrote:
>> Hi Stefan:
>>
>> I will certainly upgrade to Bonmin 1.8.6, as I see it has all the
>> changes regarding FORTRAN_INTEGER_TYPE and NO_CATCH_ALL that you and I
>> have been discussing. Thanks for that! But are there other changes
>> relative to Bonmin 1,8.4?
>
> Bonmin 1.8.4 is based on a Cbc that is similar old as the Bonmin 1.8.4
> release. Bonmin 1.8.5/1.8.6 uses a current Cbc release, which should
> have less bugs.
>
>> What do you mean by "fixed integer variable"? Do you mean one where
>> the user has set the upper and lower bounds to be the same? That I
>> certainly have not done.
>
> It's more likely that Bonmin fixed some variable during branching.
> It's not wrong that variables get fixed (locally) during B&B, or that
> one has fixed variables in the problem, but attempting to branch on
> fixed variables is wrong.
>
>> Until recently we were using (the very ancient) Bonmin 1.3.2, and
>> interestingly this problem did not arise there.
>
> Yes, that were the times when Pierre, the Bonmin developer, was still
> active :).
>
> Stefan
>
>>
>> David Wilkinson
>>
>> ============================
>>
>> On 20.06.2017 09:29, Stefan Vigerske wrote:
>>> Hi,
>>>
>>> it sounds as if Bonmin tries to branch on a fixed integer variable.
>>> You might want to trace who created this OsiBranchingInformation and
>>> why this has happened.
>>>
>>> Also consider upgrading to Bonmin 1.8.5 or 1.8.6 first. Bonmin 1.8.4
>>> is 21 months old.
>>>
>>> Stefan
>>>
>>> On 06/20/2017 03:16 PM, David Wilkinson wrote:
>>>> This is a Bonmin question, but I haven't seen any activity in the
>>>> Bonmin group for a while, so I am sending to the Ipopt group also.
>>>>
>>>> I am using Bonmin 1.8.4 with "B-BB" algorithm to solve a problem
>>>> with two integer variables, both with lower bound 0 and upper bound
>>>> 3, with an initial guess of (1,1). I am seeing an assertion error in
>>>> OsiSimpleInteger::createBranch() around line 626 of
>>>> OsiBranchingObject.cpp. The purpose of the assertion is to check
>>>> that the upper bound for the variable under consideration is greater
>>>> than the lower bound. When I hit the assertion, the value of
>>>> columnNumber_ is 0, and both info->lower_[0] and info->upper_[0] are
>>>> 0.0, so the assertion is correctly triggered.
>>>>
>>>> Since assertions are not supposed to happen, I initially suspected
>>>> user (me) error in setting up the problem, but I do not think so,
>>>> because our driver program repeatedly requests optimizations of a
>>>> similar type (with different objective and constraint functions, but
>>>> the same bounds), and several such optimizations have been done
>>>> correctly before this one. It may be that these optimizations do not
>>>> fully satisfy the Bonmin convexity requirements, but surely this
>>>> should not cause an assertion in the code? Our program will tolerate
>>>> cases where Bonmin fails and emits an exception, and indeed if I
>>>> throw an exception in OsiSimpleInteger::createBranch() instead of
>>>> the assertion, our program continues with other successful Bonmin
>>>> optimizations.
>>>>
>>>> Any ideas?
>>>>
>>>> Thanks,
>>>>
>>>> David Wilkinson
>>>> _______________________________________________
>>>> Bonmin mailing list
>>>> Bonmin at list.coin-or.org
>>>> https://urldefense.proofpoint.com/v2/url?u=https-3A__list.coin-2Dor.org_mailman_listinfo_bonmin&d=DwICAg&c=Ngd-ta5yRYsqeUsEDgxhcqsYYY1Xs5ogLxWPA_2Wlc4&r=BRcuJnQr5NAzU29t80hk2rsLc4vrlRySBDabuq0O1ZI&m=fSexfIOcTv9KTMRQVZe65MHJusguSwsHMzfmO1Q4DoE&s=vOOwrD4g3FsVpmxBP1Zdx0SWV-pW18OHMbJUxShxkVg&e=
>>
More information about the Bonmin
mailing list