# Formulation ## Primal - $N = \{1, \cdots, \mathrm{N}\}$: the set of users. - $G = \{1, \cdots, \mathrm{G}\}$: the set of items. - $d_{j}$: the supply of item $j \in G$. - $v_{ij}$: the value of user $i$ on item $j$. - $\mathbf{y} = \{y_{ij}: (i, j) \in N \times G\}$: An assignment. $y_{ij}$ is 1 if item $j$ is assigned to user $i$ and 0 otherwise. $$ \begin{align} \mathsf{[P]}&& \max_{\mathbf{y}} & \sum_{i \in N} \sum_{j \in G} v_{ij} y_{ij} \\ &&\text{subject to} \quad & \sum_{j \in G}y_{ij} \leq 1 && \forall i \in N && (p_{i})\\ &&& \sum_{i in N} y_{ij} \leq d_{j} && \forall j \in G && (r_{j})\\ &&& y_{ij} \geq 0 && \forall (i,j) \in N\times G. \end{align} $$ ## Dual - $p_{i}$: the benefit of user $i$. - $r_{j}$: the price of item $j$. $$ \begin{align} \mathsf{[D]} &&\min_{\mathbf{p}, \mathbf{r}} & \sum_{i \in N} p_{i} + \sum_{j in G} d_{j} r_{j}\\ &&\text{subject to} \quad & p_{i} + r_{j} \geq v_{ij} && \forall (i,j) \in N \times G\\ &&& p_{i} \geq 0 && \forall i \in N\\ &&& r_{j} \geq 0 && \forall j \in G \end{align} $$ The dual problem is interpreted as an estimation of the *upper limit* of the social benefit, which is a sum of the users' benefit $\sum_{i \in N} p_{i}$ and the buyers' profit $\sum_{j in G} d_{j} r_{j}$, where the benefit of user $j$, $p_{i}$, should not be negative nor smaller than the 'net' value of each item, $v_{ij} - r_{j}$, under the price $\mathbf{r}$. # Optimality Condition At the optimal, the following complementarity slackness should be met: $$y_{ij} > 0 \rightarrow p_{i} = \max_{j \in G} \left\{v_{ij} - r_{j}\right\} \geq 0 $$ That is, *user $i$ is assigned item $i$ only if it achieve maximum (and nonnegative) net value*. We denote the maximum net value of user $i$ under price $$p_{i}^{\ast}(\mathbf{r}) = \max_{j \in G}\left\{v_{ij}-r_{j}\right\}. $$ ## Restricted Primal The complementarity slackness condition implies that the price $\mathbf{r}$ is optimal if one can find an feasible assignment $\mathbf{y}$ with restriction that $p_{i}^{\ast}(\mathbf{r}) > v_{ij} - r_{j} \rightarrow y_{ij} = 0$. For a given price $\mathbf{r}$, the feasibility of such restricted assignment can be checked by solving the following restricted primal: $$\begin{align} \mathsf{[RP]} && Z(\mathbf{r})=\min_{\mathbf{y}, \mathbf{z}} &\sum_{i \in N} z_{i}\\ &&\text{subject to} \quad & \sum_{j \in G} y_{ij} + z_{i} = 1 && \forall i \in N &&(q_{i})\\ &&&\sum_{i \in N} y_{ij} \leq d_{j} && \forall j \in G && (s_{j})\\ &&& y_{ij} = 0 && \forall j \not\in D_{i}(\mathbf{r}), \forall i \in N\\ &&& y_{ij} \geq 0 && \forall j \in D_{i}(\mathbf{r}), \forall i \in N\\ &&& z_{i}\geq 0 && \forall i \in N \end{align} $$ where $z_{i}$ is an artificial variable and $D_{i}(\mathbf{r})$ is the demand set of user $i$ under price $\mathbf{r}$, that is defined by $$ D_{i}(\mathbf{r}) = \begin{cases} \left\{j: p_{i}^{\ast}(\mathbf{r}) = v_{i}-r_{ij}\right\} & \text{if } p_{i}^{\ast}(\mathbf{r}) \geq 0\\ \emptyset & \text{if } p_{i}^{\ast}(\mathbf{r}) < 0 \end{cases} $$ If $\mathbf{r}$ is optimal, the restricted primal $\mathsf{[RP]}$ has optimal value $Z(\mathbf{r}) = 0$. Otherwise, $Z(\mathbf{r}) > 0$. ## Restricted Dual The dual of $\mathsf{[RP]}$ is formulated as $$\begin{align} \mathsf{[RD]} && \max_{\mathbf{q}, \mathbf{s}} &\sum_{i \in N} q_{i} - \sum_{j \in G} d_{j} s_{j}\\ && \text{subject to} \quad & q_{i} - s_{j} \leq 0 && \forall j \in D_{i}(\mathbf{r}), \forall i \in N && (y_{ij})\\ &&&q_{i} \leq 1 && \forall i \in N && (z_{i}) \\ &&& s_{j} \geq 0 && \forall j \in G \end{align}$$ Note that if the price $\mathbf{r}$ is not optimal, that is $Z(\mathbf{r}) > 0$, there exists a feasible (might not be optimal) solution to $\mathsf{[RD]}$ $(\mathbf{q}, \mathbf{s})$ that satisfies $$0 < \sum_{i \in N} q_{i} - \sum_{j \in J} d_{j} s_{j} \leq Z(\mathbf{r}). $$ Once such feasible solution can be found, we can update the dual variable by $(\mathbf{p}, \mathbf{r})\rightarrow(\mathbf{p}+\delta \mathbf{q}, \mathbf{r} + \delta \mathbf{s})$, where $\delta$ is the positive constant satisfying $(\mathbf{p}+\delta \mathbf{q}, \mathbf{r} + \delta \mathbf{s})$ be dual feasible. # Over-demanded Set and Price Increase In the primal-dual (PD) algorithm, the price of "overdemanded" items are increased. Let the *demand* for item $i$ under price $\mathbf{r}$ be $$\rho_{j}(\mathbf{r}) = \#\left\{i: j \in D_{i}(\mathbf{r})\right\}, $$ that is, the number of users who achieve maximum net value by item $j$. Item $j \in G$ is referred to as *overdmanded* if $\rho_{j}(\mathbf{r}) > d_{j}$. For a given non-optimal price $\mathbf{r}$, there exists at least one overdemanded item (otherwise, every users' demand are met and $Z(\mathbf{r})=0$). In the PD auction, the price of overdemanded item are increased by a (sufficiently small) unit price $\delta$. This might reduce some users' benefit though, *the total decrease in users' benefit is always **smaller** than the increase in buyer's profit*: at least one user can find alternative item or simply quit from the market without decreasing the benefit. Such a price increse (and the corresponding benefit decrease) can be regarded as a feasible solution to $\mathsf{[RD]}$ with positive objective. Let the set of overdemanded items under price $\mathbf{r}$ be $$G^{+}(\mathbf{r}) = \{j : \rho_{j}(\mathbf{r}) > d_{j}\}. $$ Let the price increase be $$s_{j} = \begin{cases} \delta & \text{if } j \in G^{+}(\mathbf{r})\\ 0 & \text{otherwise} \end{cases} $$ and the corresponding benefit decrease be $$q_{i} = \begin{cases} -\delta & \text{if } D_{j}(\mathbf{r}) = G^{+}(\mathbf{r}) \\ 0 & \text{otherwise}. \end{cases} $$ That is, user $j$ loses the benefit if and only if the prices of all items in his/her demand set are increased. This imples that $$\sum_{i \in N} q_{i} + \sum_{j \in G} d_{j} s_{j} > 0, $$ while $(\mathbf{p}+\mathbf{q}, \mathbf{r} + \mathbf{s})$ remaining dual feasible. # The Primal-Dual Auction Algorithm The PD auction algorithm can be summarised as follows: - **Step 0 (initialize)**: Set the inital price be $\mathbf{r}^{(1)} := \mathbf{0}$. Let $n:=1$. - **Step 1 (bid)**: Each user $i \in N$ shows his/her demand set $D_{i}(\mathbf{r}^{(n)})$. - **Step 2 (calculate demand)**: By using $\{D_{i}(\mathbf{r}^{(n)}): i \in N\}$, calculate the demand $\rho_{j}(\mathbf{r}^{n})$ for any item $j \in G$. - **Step 3 (price update)**: Let the price increment $\mathbf{s}^{(n)} = \{s_{j}^{(n)} : j \in G\}$ be $$ s_{j}^{(n)} = \begin{cases} \delta & \text{if } \rho_{j}(\mathbf{r}^{(n)}) > d_{j} \\ 0 & \text{otherwise} \end{cases}$$ If there is no overdemanded item, STOP (optimal price is found). - **Step 4 (update)** Let $\mathbf{r}^{(n+1)} := \mathbf{r}^{(n)} + \mathbf{s}^{(n)}$. $n:=n+1$. Back to **Step 1**.