I am looking for software (open-source or otherwise) or an implementable algorithm for solving a continuous transportation problem. The input consists of a pointset in a planar rectangle, and we need to relocate these points within the rectangle to decrease the peak density below a given threshold (feasibility can be assumed), while minimizing total displacement. 


The distances inside the rectangle are Manhattan/taxicab, although efficient solutions for the Euclidean distance can also be helpful. *Total displacement* is interpreted in the $L\_1$ sense, but efficient solutions for the $L\_2$ case can also be helpful. The peak density can be evaluated with respect to a uniform grid (is there another practical way ?)


My students implemented a geometric algorithm (without having any background in transportation) that works great in our application, but we don't know how far the results are from optimal.
Just in case, our application also imposes rectangular "exclusion zones", where no points can be placed (more generally, we can assume a "bounding probability distribution").



Best algorithm/software for solving a planar transportation problem ?
How much have you looked into the theory of optimal transport? It's very popular for image warping/registration.


There's codes available to compute the $l1$-optimal transport distance (also referred to as "Earth mover's distance") here: <http://ai.stanford.edu/~rubner/emd/default.htm> and here: <http://www.cs.huji.ac.il/~ofirpele/FastEMD/code/>


The $l2$ optimal mass transport problem is quite difficult but can be solved: <http://www.springerlink.com/index/40PGJBKDC9V0UH94.pdf> 


Once it's possible to compute the cost to get between two distributions of points I guess you'll have to optimize to see which distribution is closest to the one you have. Maybe something like:
$$
\min\_\rho d(\rho\_0, \rho)\;subject\;to\;\rho \leq c, \rho \geq 0,\int \rho = 1
$$
where $\rho$ is a probability distribution describing the density of points and $c$ is your threshold. Maybe you can do this with a Lagrange multiplier and gradient descent?


