How can I determine the lower and upper bounds in an easy way? Constrainted optimization

215 Views Asked by At

This is a simple question, but I'm not sure how to solve it!

Assume that we have a vector $x$ and we want $x$ to have some upper and lower limits.

$lb <= x <= ub$

Where $lb$ stands for lower bound and $ub$ stands for upper bound. Easy!

Let's say that I set some values on $lb$ and $ub$.

$[0; 0] <= x <= [5; 10]$

And now I define my other constraint:

$lba <= Ax <= uba$

Matrix A is known. I say that the lba is $[1; 0.5]$ and uba is $[5; 6]$.

And A is:

     A = [3   2;
         -6   5];

If I do a multiplication $A*ub$, then I should get $[35; 20]$. That's waaaay to much compared to $uba$.

That leads me to the opening question:

How can I determine the constraints by setting the initial constraints first, then change them? As you see above, $A*ub > uba$. That means ub need to be lowering down a little bit. If I say $A*lb$ , which become $[0;0]$. That means $A*lb < lba$. And I need to change $lb$ so $A*lb = lba$.

Is there a way to do that numerically?

$ lb <= x <= ub \\ lba <= Ax <= uba$

Where

$ A*ub <= uba \\ A*lb >= lba$

$uba$ and $lba$ has higher priority than $ub$ and $lb$. That means I only need to change $lb$ and $ub$. Even if I only need to change $ub$ and $lb$, they still cannot be negative. So $ub >= 0$ and $lb >= 0$ are required.