Forum Discussion
FICO
6 years agoCommunity Manager
Robust Optimisation: Equality vs Inequality constraint (Fixed vs Uncertains)
Hi, I am attempting a robust optimisation problem using the knapsack example 1.2.1 in the robust doc as a template. I calculate the possible % deviation for each variable in the model (P23PERCENT). ...
FICO
6 years agoCommunity Manager
Hi Will,
the short answer is: your uncertainty set is too large.
First, recall that a robust constraint must be satisfied for all values of the uncertain parameter within the uncertainty set. If u is an uncertain parameter between 0 and 1 and x is a variable, then for the robust constraint
(1+u) x <= 5
to be satisfied for all values of u, it must be x <= 5 / max{(1+u): u in [0,1]} = 5/2. This creates an upper bound for x and allows us to drop the robust constraint (but retain the bound of 1/2 on x). Note that the problem at the denominator attains its optimum for u=1.
The robust constraint
(1+u) x >= 1
is instead equivalent to a new lower bound on x, because x >= 1 / min{(1+u): u in [0,1]} = 1, because x must be >= 1 for the robust constraint to be satisfied for any value of u (note that this time the optimal value of u is 0 instead). The crucial point here is that if both constraints are in the problem, they can both be dropped but x has a bound interval of [1, 5/2], even though these limits correspond each to a different value of the uncertain parameter: one for each of the two robust constraints. It is a defining feature for the robust optimization module that two robust constraints correspond to different values of the uncertain parameters that they use.
For all t, your model uses the same uncertain parameter P23UNCERTAIN(t) over four constraints. For the first two:
P23MODL1 := sum(t in VARIABLES1) (P23COEFF(t)+P23UNCERTAIN(t))*OPTS(t) >= P23TARGETL
P23MODL2 := sum(t in VARIABLES1) (P23COEFF(t)-P23UNCERTAIN(t))*OPTS(t) >= P23TARGETL
the coefficient of OPTS(t) can be low or high depending on P23UNCERTAIN(t). The data file has P23PERCENT(t) positive for all t but P23COEFF(t) sometimes positive, sometimes negative. All uncertain parameters are unbounded from below, therefore all of these uncertain parameters have an interval of [-inf, a(i)]. This implies that even one such constraint makes the problem infeasible: just make all a(i) a sufficiently large negative number for all coefficients of OPTS(t) to be small positive numbers, and the P23TARGETL will never be attained.
A similar conclusion can be drawn for the other two constraints, where a(i) just need to be made negative so that the coefficients on OPTS(t) are negative and hence OPTS(t) obtains a negative upper bound, incompatible with its lower bound of 0.
This could be mitigated by adding a lower bound to all P23UNCERTAIN(t), but a quick test shows that the problem remains infeasible even with bounds as tight as follows:
P23UNCERTAIN(t) <= P23PERCENT(t) * P23COEFF(t)
P23UNCERTAIN(t) >= P23PERCENT(t) * P23COEFF(t) - 0.001
I am not sure of the meaning of such parameters so I don't know if such small value would make sense. If it is indeed very small, consider defining an uncertainty set where all uncertains have both a lower and upper bound AND, for example, a weighted sum of them is bounded from above, or perhaps more suited for this example, the "cardinality" robustness constraint.
Related Content
Related Content
A specific separation procedure, $(l,S)$ Inequalities, to solve the lot-sizing problem
Dear support team, I have tried to use a specific separation procedure, $(l, S)$ Inequalities, to solve the lot-sizing problem proposed in the references, like Algorithm and formulations for lot siz...8 months agoPlace FICO® Xpress Optimization ForumFICO® Xpress Optimization Forum4 unread comments4 unread10Views0likes4CommentsMapping methods between XPRBctr and new class Inequality
I'm porting a Java application to c++ (I'm using latest Xpress Version). From guide I understood that XPRBctr old BCL class has been mapped to Inequality, but I cannot find some methods (i.e. addTerm...1 year agoPlace FICO® Xpress Optimization ForumFICO® Xpress Optimization Forum1 unread comment1 unread0Views0likes1CommentIs it possible to refine how much information is provided in the Xpress Optimiser Logs
I currently use XPRS_VERBOSE to switch between full logging of the optimisation process and essentially no logging. Is it possible to control (i.e. reduce) how much output is written during logging w...1 year agoPlace FICO® Xpress Optimization ForumFICO® Xpress Optimization Forum1 unread comment1 unread0Views0likes1Comment