[Scip] Pricing generates an already existing column

Gerald Gamrath gamrath at zib.de
Tue May 20 16:56:39 CEST 2014


Hi Christina,
>
>   * The delay flag of the pricer is set to TRUE, as is the initial
>     flag for the new variables.
>
What about the intial flag of the variables in the initial RMP?
>
>   * The variables are added via SCIPaddPricedVar.
>   * The upper bound on the integer variables are set as SCIPinfinity.
>     (the upper bound on binary variable are set as 1.0)
>
Also for binary variables, an upper bound of 1 in the LP can cause
troubles. In order to avoid this, you should mark the bound to be lazy
using SCIPchgVarUbLazy(scip, var, 1.0), see
http://scip.zib.de/doc/html/scip_8h.php#ac0d20a8f3ae90d45d7ca0eadb7006d4a

>   * All constraints are set as modifiable
>   * The solution status of the LP when the pricer is called by calling
>     SCIPgetLPSolstat() is Optimal.
>
> However, when I checked SCIPvarIsInLP for the variable added in the
> previous iteration of the pricer, I got two different results:
>
>  1. For the repeated variable which are equal to an initial variable
>     from the Restricted Master Problem, SCIPvarIsInLP() is sometimes
>     FALSE!
>     I printed the name, the reduced cost and the LP value of all the
>     active variables in the previous iteration of the pricer with
>     SCIPvarIsActive(var), SCIPvarGetName(var) and
>     SCIPgetVarRedcost(scip, var), SCIPgetSolVal(scip, NULL, var). I
>     got printed the names of all the initial variables (including the
>     one which is repeated) but with an initial "t_". Does that mean
>     that they are "transformed variables" ?? I didn't expect that
>     since I include the transformation of the variables in the
>     initialization of the pricing
>     (SCIP_DECL_PRICERINIT(ObjPricer::scip_init) by using
>     SCIP_CALL(SCIPgetTransformedVar(scip, var, &var) .
>     The reduced cost and the LP value of the initial repeated variable
>     are negative and zero, respectively.
>
When you call SCIPgetTransformedVar(), SCIP generates the transformed
variable which gets "t_" as a prefix for the name. The reduced cost is
negative and the value of the variable is 0? What are the bounds of the
variables? If the LP was solved to optimality, the upper bound of the
variable should be 0. If this is the case, your branching probably
forbid this variable and you should also take this into account in
pricing. How do you do branching?
>
>  1. For the repeated variables which are equal to earlier added
>     pricing variables, SCIPvarIsInLP() is always TRUE! When I printed
>     the name, reduced cost and LP value for the earlier added pricing
>     variables, the name of the variables are printed without "t_". The
>     reduced cost and the LP value of the repeated variable are
>     negative and zero, respectively.
>
> However, in both cases, the status of the repeated variable is not
> original when SCIPvarGetStatus(var).
>
If you create a variable during solving, it is a transformed variable
from the beginning, but will not get the prefix "t_". For the reduced
cost and LP value, the same holds as above.

Best,
Gerald
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listserv.zib.de/pipermail/scip/attachments/20140520/1814fa5f/attachment.html>


More information about the Scip mailing list