User-network decomposition of concave utility maximization (source code)

= User-network decomposition of concave utility maximization
{title2=$y^*=A^Tp^*,\quad\nu_r^*=x_r^*e^{y_r^*}$}

Maximize a sum of increasing strictly concave utilities $U_r(x_r)$ subject to $Ax\leq C$, $x\geq0$. Suppose capacities are positive, every route is nonempty, and $U_r'(0)=\infty$. At its unique positive optimizer $x^*$, the <Karush-Kuhn-Tucker conditions> give nonnegative <resource congestion prices> $p^*$ and <route congestion prices> $y_r^*=U_r'(x_r^*)$. Choosing $\nu_r^*=x_r^*e^{y_r^*}$ makes each user maximize $U_r(\nu_r e^{-y_r^*})-y_r^*\nu_r e^{-y_r^*}$ at $\nu_r^*$. It also makes $x^*$ maximize the <entropy maximization for loss-network occupancy> objective, since its gradient is $\log(\nu_r^*/x_r^*)=(A^Tp^*)_r$. Thus user and network optima implement the same system optimum.