[SCIP] Get auxiliary variables from reformulated expression graph
Stefan Vigerske
svigerske at gams.com
Mon Jun 14 10:09:46 CEST 2021
Hi,
SCIP does this reformulation during presolve. cons_nonlinear adds new
variables and changes constraints of the transformed problem. It doesn't
really keep record of variables and constraints that are added during
the reformulation, so there is no function to get these auxiliary
variables or to get the constraints that were added. Their name
typically starts with nlreform, though.
For the signomial function, auxiliary variables are only introduced for
the terms that aren't linear or quadratic. As said, there is no function
that takes the parameters of the signomial and returns you some variable
or constraint. But you could look through the constraints of the
transformed problem which name starts with nlreform and that are of the
form 0 <= signomial-term - nlreformxy <= 0. "signomial-term" is here an
expression graph node of type polynomial (should probably better be
named signomial) that has only one monomial or of type product. However,
if the signomial term is neither convex nor concave, then it is
reformulated further: Factors x_j^{p_{ij}} are replaced by new variables
and products of more than two factors are split up.
We have some code in development that replaces all this and would also
make it easier to identify the signomial terms and corresponding
auxiliary variables
(https://www.scipopt.org/workshop2020/slides/minlp.pdf, starting with
slide 9 or page 23). If you plan to do some work that builds on the
handling of nonlinear constraints in SCIP and if you prefer to use this
newer still-in-development version, then we can give you access to it.
Stefan
On 6/13/21 3:30 PM, liding xu wrote:
> Dear SCIP community,
> I am aware that scip uses an expression graph to represent general
> nonlinear functions and constructs its linear under-estimators via
> factorizable programming. Given a general nonlinear function (e.g.
> signomial functions), scip adds auxiliary variables and constraints
> associated with some intermediate nodes of the expression graph.
> I have the following common questions:
> 1. In which phase (e.g. transformation, resolve), does scip reformulate
> the expression graph to a set of auxiliary variables and constraints?
> 2.How can get these auxiliary variables after reformulation, i.e.
> (SCIP_VAR *) and constraints (SCIP_CONS*)?
> 3. For example, given a signomial function f(x) = \sum_i s_i(x), where
> \sum_i s_i(x) = c_i \prod_j x_j^{p_{ij}}. how can I get the variable
> associated to the signomial term s_i(x) = c_i \prod_j x_j^{p_{ij}}?
>
> Best wishes,
> Liding Xu
>
>
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> https://listserv.zib.de/mailman/listinfo/scip
>
More information about the Scip
mailing list