[SCIP] Error: constraint is not linear

mahdi noorizadegan m.noorizadegan at gmail.com
Mon Jul 1 06:34:26 CEST 2019


Dear Gerald,

I knew there is a silly error and I am missing something!
Thanks.

Mahdi

On Sun, 30 Jun 2019 at 16:38, Gerald Gamrath <gamrath at zib.de> wrote:

> Dear Mahdi,
>
> I am very sure now that it is a coding issue. ;-)
>
> I guess "return AddImpPaths(scip, Paths);" should rather be "SCIP_CALL(
> AddImpPaths(scip, Paths) );" in order to not return there and to not skip
> the remainder of the method.
>
> Best,
> Gerald
>
> On 30.06.19 08:49, mahdi noorizadegan wrote:
>
> Dear Gerald,
>
> Thanks for your reply.
> The .lp file is not created at all for SCIPwriteTransProblem().
> I am not sure if it is a coding issue. The problem is similar to VRP.
> Here is the piece of the code.
>
> In the below code the last line before Return SCIP_OKAY; (highlighted in
> green) in " SCIP_RETCODE ObjPricerGTE::AddImpPaths" is printed but the line
> after  "return AddImpPaths(scip, Paths)" (highlighted in red)  is not.
>
> When I add " SCIP_CALL( SCIPwriteTransProblem(scip, "GTEPricing.lp", "lp",
> FALSE) ); " to the adding variable procedure i.e. " SCIP_RETCODE
> ObjPricerGTE::AddImpPaths", the .lp file is created.
> As you see there is no if  condition that can affect the output.
>
>
> Regards,
> Mahdi
>
>   SCIP_Real reduced_cost =FindShortestPath(pi, lambda, alpha, Paths);
>    if (  reduced_cost>0.001 )  {
>            return AddImpPaths(scip, Paths);
>        cout<<"\n reduced_cost";
>    }
>    SCIP_CALL( SCIPwriteTransProblem(scip, "GTEPricing.lp", "lp", FALSE) );
>
> .
> .
> .
> SCIP_RETCODE ObjPricerGTE::AddImpPaths(
>    SCIP*                 scip,
>     vector<list<list<int> > >&      ImpPaths
>    ) const{
> .....
>   cout<<"\n gen LP";
>             return SCIP_OKAY;
>    }
>
> On Fri, 28 Jun 2019 at 01:26, Gerald Gamrath <gamrath at zib.de> wrote:
>
>> Dear Mahdi,
>>
>> I am sorry, but I did not really understand what is going wrong, you need
>> to give more detail. When do you call SCIPwriteTransProblem()? It does not
>> write anything or are variables missing in the .lp file?
>>
>> If I understand you correctly, you have a function that adds the priced
>> variables and that should write the problem, which does not happen, and
>> also some output that you would expect which should be printed at the end
>> of the function is not printed. I can only guess that you have some if
>> conditions in the function that return earlier and thus, you do not reach
>> the end of the function. But I cannot help you debug your code. You could
>> compile in debug mode and run it with gdb to set break points and go
>> step-by-step to see what happens, if you cannot identify it just by looking
>> at the code.
>>
>> Best,
>> Gerald
>>
>> On 26.06.19 08:31, mahdi noorizadegan wrote:
>>
>> Hi Gerald,
>>
>> I have a pricing procedure which finds variables with negative reduced
>> cost.
>> Once they are found they are added to the master problem. However, the
>> .lp file via SCIPwriteTransProblem is not created after addition. It is set
>> to create .lp file after addition of variables.
>>
>> I do cout "check" at the end of the variable adding function (before
>> return SCIP_OKAY) and also after call for this function. While it leaves
>> the function and starts the pricing procedure, it does not print the check
>> point after the var adding function. Therefore no .lp file is created.
>> Could you please let me know what I have done wrong?
>>
>> Regards,
>> Mahdi
>>
>>
>> On Sat, 25 May 2019 at 12:58, Gerald Gamrath <gamrath at zib.de> wrote:
>>
>>> Dear Mahdi,
>>>
>>> even if you create a model with only linear constraints, SCIP might
>>> upgrade them in presolving to specialized linear constraints like knapsack
>>> or set cover constraints. SCIP does not do this if you marked a constraint
>>> to be modifiable, which you should have done if priced variables will
>>> potentially be added to the constraint. On the other hand, if you will not
>>> add any priced variables to the constraint, you don't need to mark it to be
>>> modifiable, but you should also not need its dual value.
>>>
>>> I would suggest you check what type the constraint has via
>>> SCIPconshdlrGetName(SCIPconsGetHdlr(cons)) either in gdb or in your code.
>>>
>>> Best,
>>> Gerald
>>>
>>> On 22.05.19 14:45, mahdi noorizadegan wrote:
>>>
>>> Hello,
>>>
>>> I am implementing an IP using branch and price method.
>>> When I want to get the dual value of constraints which are all linear, I
>>> get the following error
>>>
>>> [src/scip/cons_linear.c:17033] ERROR: constraint is not linear
>>>
>>> What can be wrong?
>>>
>>> Looking forward to hearing from you,
>>> Regards,
>>> Mahdi
>>>
>>> _______________________________________________
>>> Scip mailing listScip at zib.dehttps://listserv.zib.de/mailman/listinfo/scip
>>>
>>>
>>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.zib.de/pipermail/scip/attachments/20190701/7f134710/attachment.html>


More information about the Scip mailing list