I am using ipopt to solve trajectory optimization problems and would like to know the difference (in terms of efficiency) between setting the bounds of a decision variable as 1) any real number, (-Inf,Inf
) and 2) any "large" real number, e.g. (-10^12,10^12
). I use quotation marks here because "large" is subjective and depends on the application.
Choosing 10^12
as my "large" number, and if var
is a 1D decision variable, I would like to know if ipopt is more efficient at handling
-Inf < var < Inf
or
-10^12 < var < 10^12
From a practical standpoint, option 2) should be more efficient since it shrinks the design space, but if ipopt employs some smart heuristics to deal with Inf
efficiently, it's possible that having to store and carry a ``large" number (e.g. 10^12
) becomes less efficient. Any insight?
IPOPT will be using different method for the two because in 1) the variable is unbounded, it is unconstrained, and in 2) the variable is bounded. The search space shrinks in 2), but IPOPT is more efficient at handling unconstrained/unbounded variables (1).