## Detailed Description

Constraint handler for absolute power constraints \(\textrm{lhs} \leq \textrm{sign}(x+a) |x+a|^n + c z \leq \textrm{rhs}\).

Definition in file cons_abspower.h.

`#include "scip/def.h"`

`#include "scip/type_cons.h"`

`#include "scip/type_nlp.h"`

`#include "scip/type_retcode.h"`

`#include "scip/type_scip.h"`

`#include "scip/type_sol.h"`

`#include "scip/type_var.h"`

Go to the source code of this file.

## Functions | |

SCIP_EXPORT SCIP_RETCODE | SCIPincludeConshdlrAbspower (SCIP *scip) |

Absolute Power Constraints | |

This constraint handler handles constraints of the form \[ \textrm{lhs} \leq \textrm{sign}(x+a) |x+a|^n + c z \leq \textrm{rhs} \] for \(n > 1.0\) a rational number, \(a\) and \(c\) arbitrary, and \(x\) and \(z\) variables. Note that \(x\) can have \(-a\) in the interior of its domain. Constraints are enforced by separation, domain propagation, and spatial branching. Cuts that separate on the convex hull of the graph of \(\textrm{sign}(x+a) |x+a|^n\) are generated as long as they separate the relaxation solution. Otherwise, spatial branching on \(x\) is applied. Further, domain propagation is implemented to propagate bound changes on \(x\) onto \(z\), and vice versa, and repropagation is implemented to allow for conflict analysis. During presolve, a pairwise comparison of absolute power constraints may allow to fix or aggregate some variables. See also - Stefan Vigerske
Decomposition of Multistage Stochastic Programs and a Constraint Integer Programming Approach to Mixed-Integer Nonlinear Programming PhD Thesis, Humboldt-University Berlin, 2012, submitted.
| |

SCIP_EXPORT SCIP_RETCODE | SCIPcreateConsAbspower (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *x, SCIP_VAR *z, SCIP_Real exponent, SCIP_Real xoffset, SCIP_Real zcoef, SCIP_Real lhs, SCIP_Real rhs, SCIP_Bool initial, SCIP_Bool separate, SCIP_Bool enforce, SCIP_Bool check, SCIP_Bool propagate, SCIP_Bool local, SCIP_Bool modifiable, SCIP_Bool dynamic, SCIP_Bool removable, SCIP_Bool stickingatnode) |

SCIP_EXPORT SCIP_RETCODE | SCIPcreateConsBasicAbspower (SCIP *scip, SCIP_CONS **cons, const char *name, SCIP_VAR *x, SCIP_VAR *z, SCIP_Real exponent, SCIP_Real xoffset, SCIP_Real zcoef, SCIP_Real lhs, SCIP_Real rhs) |

SCIP_EXPORT SCIP_RETCODE | SCIPgetNlRowAbspower (SCIP *scip, SCIP_CONS *cons, SCIP_NLROW **nlrow) |

SCIP_EXPORT SCIP_VAR * | SCIPgetNonlinearVarAbspower (SCIP *scip, SCIP_CONS *cons) |

SCIP_EXPORT SCIP_VAR * | SCIPgetLinearVarAbspower (SCIP *scip, SCIP_CONS *cons) |

SCIP_EXPORT SCIP_Real | SCIPgetExponentAbspower (SCIP *scip, SCIP_CONS *cons) |

SCIP_EXPORT SCIP_Real | SCIPgetOffsetAbspower (SCIP *scip, SCIP_CONS *cons) |

SCIP_EXPORT SCIP_Real | SCIPgetCoefLinearAbspower (SCIP *scip, SCIP_CONS *cons) |

SCIP_EXPORT SCIP_Real | SCIPgetLhsAbspower (SCIP *scip, SCIP_CONS *cons) |

SCIP_EXPORT SCIP_Real | SCIPgetRhsAbspower (SCIP *scip, SCIP_CONS *cons) |

SCIP_EXPORT SCIP_Real | SCIPgetViolationAbspower (SCIP *scip, SCIP_CONS *cons, SCIP_SOL *sol) |

SCIP_EXPORT SCIP_Bool | SCIPisConvexAbspower (SCIP *scip, SCIP_CONS *cons) |