I'm working on a price-selection model where we need to identify price point for each time-period (could be day/week). Objective of the model is to figure out optimal price-point for each time-point to optimize revenue from all products. One price-point selected applies to all products $$ \begin{align*} &\mathcal{P} \quad \text{set of products (indexed by $p$)}\\ &\mathcal{T} \quad \text{set of time-periods (indexed by $t$)}\\ &\mathcal{K} \quad \text{set of price-points (indexed by $k$)}\\ &D_{p,t,k} \quad \text{demand of product $p$ in time-period $t$ at price-point $k$} \\ &R_{p,t,k} \quad \text{Revenue associated with product $p$ for time-period $t$ at price-point $k$} \\ & \end{align*} $$ Binary variable $z_{t,k}$ equals 1 if price-point $k$ is selected for time-period $t$. As same price applies for all products, objective is to maximize revenue i.e. $$ Maximize \quad \sum_{p,t,k} R_{p,t,k} \cdot q_{p,t,k} $$ Also, main constraint is to identify quantity sold $q_{p,t,k}$ for each product $p$ at time-period $t$ if $k$ price-point is selected and is given by $$ q_{p,t,k} \le D_{p,t,k} \cdot z_{t,k} $$ Only one price point to be selected per time-period $$ \sum_{k} z_{t,k}=1 $$ Total inventory sold is less than initial inventory $I_{p}$ $$ \sum_{t,k} q_{p,t,k} \le I_{p} $$ Also, there are some side constraints on price changes from one time-period to another. With this formulation, while solving as MIP (root-relaxation solve), it shows dense columns in the logs which is leading to high computational time for a larger product case. Snippet of log is provided below:
Barrier statistics:
Dense cols : 74
AA' NZ : 1.509e+06
Factor NZ : 8.201e+06 (roughly 400 MBytes of memory)
Factor Ops : 2.808e+08 (less than 1 second per iteration)
Threads : 4
I'm looking for alternate formulation to avoid these dense columns which is primarily caused by inventory constraints.