A line search between two points on $f(x)$ and considering a constraint

64 Views Asked by At

I have the following optimization problem, $$x^*=\text{arg} \min_{x}{f(x)}$$ and $f(x)$ is quadratic. Therefore vector $x^*$ can be calculated as the closed-form solution and there are indexes $i$ such that $x_i^{*} \lt 0 $.

However i want $x\ge 0$, and i already have a point $x^{t-1}$ for which $$x^{t-1} \ge 0$$ $$f(x^{t-1}) > f(x^{*})$$ $$\exists j; ~x_{j}^{t-1}=0$$

Is it possible to do a specific line search between $x^{t-1}$ and $x^{*}$ to find possibly a point $x^{t}$ such that $$x^{t} \ge 0$$ $$f(x^{t-1}) > f(x^{t}) > f(x^{*})$$

I know one way is to solve the main optimization problem as a non-negative QP, but i do not want to use that option.

Also, when i check the solution by solving the non-negative QP, i find an optimal $x^{t}$ such that $x_k^{t}=0$ and $k \ne j$. I'm not expecting to find the best optimal point between $x^{t-1}$ and $x^*$ just by the line-search step, but i want to find a point at least more optimal than $x^{t-1}$.

1

There are 1 best solutions below

2
On BEST ANSWER

It is possible. Let the coordinates of $x^*$ be $(a_1,\dots,a_n)$ and the coordinates of $x^{t-1}$ be $(b_1, \dots, b_n)$

The line connecting those two lines can be expressed by a parametric equation: $$x_i = (b_i - a_i)t + a_i \forall 1 \leq i \leq n, t \in R$$ Specifically when $t = 0$ you get $x^*$ and when $t = 1$ you get $x^{t-1}$.

Now, let $t_i$ be the value that makes $x_i$ zero, that is: $t_i = \frac{-a_i}{b_i-a_i}$. Choose the largest one. If $b_i$s are all truly non-negative, then such value will exist and will be in $(0,1]$. The geometric interpretation is this: as you start at point $t=1$ (that is, at $x^{t-1})$, you're decreasing $t$ slowly until one of the coordinates becomes zero. If you go further, this coordinate will be negative, so you stop there. The coordinate that is "hit" first depends on the slope of the line of course.

So at that point, that's your $x_t$. It is guaranteed to be non-negative, and because it $f(x^*)$ is minimum and $f(x^{t-1})$ is not, then $f(x^t)$ will be in between those two values.

TLDR: Choose $t = \max_{i} \frac{-a_i}{b_i-a_i} $ and plugin to the $x_i$ equation above to get your $x^t$.