I have the following optimization objective function for a dynamic pricing problem:
\begin{align*} sum_profit = \sum_{i \in sales_point} \Bigg( constant[i] + {elasticity[i]} \cdot (movement[i] + actual_prices[i] - comp_price[i])
- \log\left({price[i]} - costs[i]\right)
- \lambda[i]\cdot \left(1 - e^{alpha \cdot {exceed[i]^2}}\right) \Bigg) \end{align*}
with \begin{align*} exceed[i] = max(0,movement[i] + actual_prices[i] - comp_price[i] ) \end{align*} represent a penalty on surpassing the competitor price. and my volume model \begin{align*} volume[i] = constant[i] + {elasticity[i]} \cdot (movement[i] + actual_prices[i] - comp_price[i]) \end{align*}
I want to add a constraint that is the volume weighted mean of price movements needs to be equal to a given user input. However, adding this constraints \begin{align*} weighted_volume_mean = \frac{\sum_{i \in sales_point} (mouvement[i] \cdot volume[i])}{\sum_{i \in sales_point} (volume[i])} = user_input \end{align*} Tends to de-optimize lot of sales points that have little volume by lowering massively the prices on high sales point. I dont want my sales points related to each other.
currently achieve what i want by lowering all competitor prices aritifically until i achieve the wanted mean price.