In a linear program need to constrain the percent change between two decision variables, $a,b$ where the percent change formula, relative to $b$ is $\frac{a-b}{b}$.
I'm not sure that any arbitrary value will be feasible given other constraints, which are omitted for brevity. So my intention is to solve sequentially. In the first model, I will find the minimum percent change possible, and in a second model, I will constrain to achieve this minimum percent change. Assume that all omitted constraints in the first model will also be applied in the second model.
Let's start with some arbitrarily small percent change, for example $0.001$.
thus my naive constraint is $\frac{a-b}{b} \le 0.001$. This isn't linear, which is problematic but we can linearize it as $a-b \le 0.001b$.
Now, I don't know that $0.001$ is achievable, so let's add in some surplus variables and rerun this logic:
- $\frac{a-b}{b} \le 0.001$
- $\frac{a-b}{b} = 0.001 + u -l $
- $a-b = b(0.001 +u -l)$
- $a-b = 0.001b + bu - bl$
- $a-b - 0.001b = bu -bl$
- $a - 1.001b = bu - bl$
Now from this form I can modify solve this model whether or not $a>b$
$min(u+l)$
$u, l \ge 0$
$a-1.001b = bu - bl$
$1.001b-a = bu - bl$
And finally, the minimum achievable percent change achievable is as follows
- If $a>b$ then best percent change is $0.001 + u$
- Elif $a<b$ then best percent change is $0.001 - l$
- Elif $a=b$, then best percent change is $0.001$.
In the edge case that $l=0.001$ then best percent change is $0.0$.
Now in my second model, I can use the derived best percent changes. Suppose that $u=0.002$, the best achievable is $0.003$. We can now constrain $a-b = 0.003b$
Am I thinking about this correctly?
Edit: I just realized that $bu, bl$ are nonlinear terms, so my linearization strategy is not effective. What alternatives are available?