Nonlinear optimization with logit constraints

44 Views Asked by At

Please note that I have a limited knowledge of nonlinear programming (but I have taken linear programming), and part of my intention is to get readable references on this type of problems (short of reading the Bertsekas book).

The essence of my problem can be written as : $$ \min \sum_{i,j} | X_{i,j}^r - E_{i,j}(\theta)| \\ s.t. \\ E_{i,j}(\theta) = \sum_{c=1}^C \sum_{r_c=1}^{R} \frac{ \exp(v_{i,j}^{r,c}(\theta^{r_c,c}))}{\sum_{k} \exp(v_{i,k}^{r,c}(\theta^{r_c,c}))} \\ 0 < \theta^{r,c} \leq 1 \\ $$ where $v_{i,j}^{r,c}$ is a linear utility function. My web searches typically point to global optimization and nonlinear mixed-integer programming papers (e.g., https://www.sciencedirect.com/science/article/pii/S1366554518307427), but I'm wondering if there is a simpler approach to this specific problem since it doesn't have many of the constraints typically considered in those solutions.

I'm aware this might read like a "lazy, just give me the answer" type of question. But at the moment I cannot afford to spend what would be a couple of months for me to read up on the theoretical background required.

1

There are 1 best solutions below

2
On BEST ANSWER

After spending some time on your problem, if you try the reformulation I am suggesting, your variables $\theta^{r,c}$ only enter in exponents, so solve the entire problem in $t^{r,c} = \exp\left(\theta^{r,c}\right)$. This will reduce your problem to sums of terms like $\frac{aX}{bX+cY+dZ}$ for variables $X,Y,Z$.

Note that the equality constraint you have can be eliminated, and then you will really be minimizing $$ \sum_{i,j} \left| X_{i,j}^r - \sum_{c=1}^C \sum_{r_c=1}^{R} \frac{ \exp(v_{i,j}^{r,c}(\theta^{r_c,c}))}{\sum_{k} \exp(v_{i,k}^{r,c}(\theta^{r_c,c}))}\right| $$ over $0 \le \theta^{r,c} \le 1$.

There is a way to linearize the absolute value, but there is no good way to linearize the rational-function terms under the summation. Hence, your situation is nonlinear objective function over a bounded interval.


Try to play with small examples and see if a clever change of variables can get rid of the rational terms, then you will be in the world of linear programming. although doing this is not possible in the general case, perhaps your specific problem can be reformulated in a simpler fashion.

If not, we can plug a couple some small examples into Python's nonlinear optimization library and see which works better vs. the analytic solution which we could possibly find by hand for a couple of terms...