[SCIP] Division by variable which is running to zero

Ambros Gleixner gleixner at zib.de
Fri Sep 4 08:41:12 CEST 2020


Dear Johannes,

Assuming that y is nonnegative and can be bounded from above, say y in 
[0,U], you could replace y by 1/t, t in [1/U, infinity).  This should 
get rid of the problem that f is not defined for some values in the 
domain.  You could then also try to multiply f by t and use the 
constraint t * f = 0.

Whether it improves things you would need to see.  Unbounded variables 
are generally not great for dual bounding, but it might help on the 
primal side.

Similar transformations are described in

Schichl H., Neumaier A., Markót M.C., Domes F. (2013) On Solving 
Mixed-Integer Constraint Satisfaction Problems with Unbounded Variables. 
In: Gomes C., Sellmann M. (eds) Integration of AI and OR Techniques in 
Constraint Programming for Combinatorial Optimization Problems. CPAIOR 
2013. Lecture Notes in Computer Science, vol 7874. Springer, Berlin, 
Heidelberg. https://doi.org/10.1007/978-3-642-38171-3_15

in case you are interested to read more about it, although they just use 
it with the reverse motivation: to transform variables with unbounded 
domains to bounded ones.

Best,
Ambros



Am 03.09.20 um 13:21 schrieb Pelda, Johannes:
> Dear SCIP-Team,
> 
> Thank you very much for sharing this amazing solver!
> 
> I have the following question:
> 
> f(x, y, z) = (x – a)  * b * y * (1 – exp(-c / (b * y))) + z
> 
> f(x, y, z) = 0
> 
> With y running to zero the division is not defined and SCIP does not 
> find a solution (infeasible, solution for z is 1e-20).
> 
> Adding a tiny number to y makes SKIP finding a solution.
> 
> f(x, y, z) = (x – a)  * b * y * (1 – exp(-c / (b * (y + 1e-20)))) + z
> 
> f(x, y, z) = 0
> 
> The question is how to determine the thiny number beforehand. The tiny 
> number seems to depend on the size of the problem (for many x, y, z it 
> happens that no solution can be found).
> 
> However, is there a better technique to solve the undefined problem for 
> –c / (b * y) for y == 0, or to even linearize the function?
> 
> I am looking forward to your response.
> 
> Kind regards,
> 
> Johannes Pelda
> 
> Johannes Pelda
> 
> Nachhaltige Energie- und Umwelttechnik (NEUTec)
> 
> HAWK
> 
> Hochschule für angewandte Wissenschaft und Kunst 
> Hildesheim/Holzminden/Göttingen
> 
> Fakultät Ressourcenmanagement | Rudolf-Diesel-Straße 12 | 37075 Göttingen
> 
> E-Mail: johannes.pelda at hawk.de <mailto:johannes.pelda at hawk.de> | 
> Telefon: +49 551 5032 185
> 
> www.hawk.de <http://www.hawk.de/>
> 
> Präsident: Dr. Marc Hudy | Hauptberuflicher Vizepräsident: Martin Böhnke
> 
> USt.-ID-Nr.: 154 261 014 | Steuernummer: 30/210/09001
> 
> 
> _______________________________________________
> Scip mailing list
> Scip at zib.de
> https://listserv.zib.de/mailman/listinfo/scip
> 

-- 
Ambros Gleixner, Research Group Mathematical Optimization Methods at 
Zuse Institute Berlin, http://www.zib.de/gleixner


More information about the Scip mailing list