The following predicates allow you to solve specific kinds of LPs 
more efficiently:
- transportation(+Supplies, 
+Demands, +Costs, -Transport)
- Solves a transportation problem. Supplies and Demands 
must be lists of non-negative integers. Their respective sums must be 
equal. Costs is a list of lists representing the cost matrix, 
where an entry (i,j) denotes the integer cost of 
transporting one unit from i to j. A transportation plan 
having minimum cost is computed and unified with Transport in 
the form of a list of lists that represents the transportation matrix, 
where element (i,j) denotes how many units to ship from i 
to j.
- assignment(+Cost, 
-Assignment)
- Solves a linear assignment problem. Cost is a list of lists 
representing the quadratic cost matrix, where element (i,j) denotes the 
integer cost of assigning entity $i$ to entity $j$. An assignment with 
minimal cost is computed and unified with
Assignment as a list of lists, representing an adjacency 
matrix.