Given a matrix $A \in \mathbb{R}^{m \times n}$, I want to find a vector $\vec{x} \in \mathbb{N}_{+}^{m}$ so $\vec{y} = {A}^{T} \vec{x}$ is nearly a constant vector, i.e., the values of $\vec{y}$ are all similar, as close to being identical as possible. In simple words, I can scale each row of $A$ by a positive integer and sum each column and would like the sum of each column to be as close as possible to each other. One can assume the values of $A$ are non-negative.
A trivial example:
$$ A = \begin{bmatrix} 2 & 6 & 1 \\ 1 & 1 & 15 \\ 6 & 3 & 1 \end{bmatrix} $$
With scaling of $1$ to each row the sum of the columns is $\left[ 9, 10, 17 \right]$ which is far being a constant vector. By scaling the 1st and 3rd rows by 2 we get:
$$ A^{T} \vec{x} = \begin{bmatrix} 2 & 6 & 1 \\ 1 & 1 & 15 \\ 6 & 3 & 1 \end{bmatrix}^{T} \begin{bmatrix} 2 \\ 1 \\ 2 \end{bmatrix} = \begin{bmatrix} 17 \\ 19 \\ 19 \end{bmatrix} $$
Which results in a much closer vector to a constant. I could formulate it as:
$$ \arg \min_{c, \vec{x} } c \quad \text{s.t.} \; A^T \vec{x} = c \vec{1}, \; \vec{x} \geq \vec{1} $$
Then I just round the output value of $\vec{x}$. Is there a better way to formulate this? Specifically, How can I formulate the vector being nearly constant? I thought about the norm of its derivative. Ideally a formulation as a linear integer program.
Related