electric dreams

Robust Linear Programming

Taking an example of an optimization problem with two linear constraints, we se that they generally are of the form:

maxx1,x2J(x1,x2)s.t. ax1+bx2rcx1+dx2s

The optimal will be right at the edge of the feasible region. This gives us very little wiggle room and is generally not very flexible under uncertain scenarios.

So a solution is to define uncertainty regions:

aUabUbsUs

Thus now the problem is maximizing the variables under an uncertain region. This can be thought of as minimaxing against an adversary.

maxx1,x2mina,b,c,d,r,sJ(x1,x2;a,b,c,d,r,s)s.t. ax1+bx2rcx1+dx2saUa,bUb,rUrcUc,dUd,sUs

However the solutions from this approach can be too conservative due to the adversary being unrestricted. To amend this we can impose a budget on the adversary:

maxx1,x2minδa,δb,δc,δd,δr,δsJ(x1,x2;a,b,c,d,r,s)s.t. (a+δa)x1+(b+δb)x2(r+δr)(c+δc)x1+(d+δd)x2(s+δs)δaUaδbUbδrUrδcUcδdUdδsUs|δi|B

This is a more appropriate outcome that is consistent with real-world scenarios. This is already implicitly accounted for in a lot of optimization models via the inclusion of regularization. However it is always good practice to include robustness parameters when designing your algorithm to account for unexpected uncertainty that no one could have seen coming.

Until next time.