How to numerically optimize a function with 'discontinuous' box constraints?

60 Views Asked by At

First of all: I am an engineer and no mathematician, therefore please excuse my 'lazy' form or prensenting the problem.

I want to solve a nonlinear and constrained optimization problem: \begin{align} \begin{split} \min_{\boldsymbol{x}} &\hspace{0.5em} f(\boldsymbol{x}) \\ \mathrm{s.t.} & \hspace{0.5em} g_{j}(\boldsymbol{x}) \leq 0, \quad j = 1,\dots,m \\ & \hspace{0.5em} x_{i} \in \left\{ x_{\mathrm{min}}, \left[x_{\mathrm{iso}}, x_{\mathrm{max}} \right] \right\}, \quad i = 1,\dots,n. \end{split} \end{align} The design vector reads $\boldsymbol{x} = \begin{bmatrix} x_{1} & \dots & x_{n} \end{bmatrix}^{\mathrm{T}}$. Furthermore, $x_{\mathrm{min}} < x_{\mathrm{iso}} < x_{\mathrm{max}}$ holds.

Currently I am not sure how to properly handle the special constraint on feasible values of $x_{i}$. Since you can't tell which variables lie in the continuous range $[x_{\mathrm{iso}},x_{\mathrm{max}}]$ and which ones will be equal to $x_{\mathrm{min}}$ in the end I don't think it makes sense to apply common mixed-integer-programming algorithms.

My approach is to consider a relaxed problem \begin{align} \begin{split} \min_{\boldsymbol{x}} &\hspace{0.5em} \tilde{f}(\tilde{\boldsymbol{x}}(\boldsymbol{x})) \\ \mathrm{s.t.} & \hspace{0.5em} \tilde{g}_{j}(\tilde{\boldsymbol{x}}(\boldsymbol{x})) \leq 0, \quad j = 1,\dots,m \\ & \hspace{0.5em} x_{i} \in \left[x_{\mathrm{min}}, x_{\mathrm{max}} \right], \quad i = 1,\dots,n. \end{split} \end{align} with \begin{align} \tilde{x}_{i}(x_{i}) = \begin{cases} x_{i}, \hspace{0.5em} \text{if} \; x_{i} \geq x_{\mathrm{iso}} \\ (x_{\mathrm{iso}}-x_{\mathrm{min}}) \left(-\frac{1}{4} \left( \frac{x_{i}-x_{\mathrm{iso}}+a}{a} \right)^{3} + \frac{3}{4} \left( \frac{x_{i}-x_{\mathrm{iso}}+a}{a} \right) + \frac{1}{2} \right) + x_{\mathrm{min}}, \hspace{0.5em} \text{if} \; x_{\mathrm{min}} < x_{i} < x_{\mathrm{iso}} \\ x_{\mathrm{min}}, \hspace{0.5em} \text{otherwise} \end{cases} \end{align} which acts as a smoothed step function between $x_{\mathrm{min}}$ and $x_{\mathrm{iso}}$. The width of the smoothed zone is $2a$. This relaxation has the effect that values located in the non-feasible range $(x_{\mathrm{min}},x_{\mathrm{iso}})$ behave like the feasible value $x_{\mathrm{min}}$ (except in the narrow smoothed zone) and, therefore, might just be set to $x_{\mathrm{min}}$ after convergence.

My question: is this a valid approach to handle such optimization problems? If not, what would you suggest to do? Another idea was to use some kind of penalization to 'push' the design variables out of the non-feasible range. What could such a penalization look like?