[SCIP] Error: constraint is not linear
Gerald Gamrath
gamrath at zib.de
Sun Jun 30 14:08:10 CEST 2019
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
> <mailto: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
>> <mailto: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 list
>>> Scip at zib.de <mailto: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/20190630/7d5eaca2/attachment.html>
More information about the Scip
mailing list