[Bonmin] Assertion in OsiSimpleInteger::createBranch()

Stefan Vigerske stefan at math.hu-berlin.de
Tue Jun 20 12:17:40 EDT 2017


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


-- 
http://www.gams.com/~stefan


More information about the Bonmin mailing list