  This paper develops algorithms to solve strong-substitutes product-mix
auctions. That is, it finds competitive equilibrium prices and quantities for
agents who use this auction's bidding language to truthfully express their
strong-substitutes preferences over an arbitrary number of goods, each of which
is available in multiple discrete units. (Strong substitutes preferences are
also known, in other literatures, as $M^\natural$-concave, matroidal and
well-layered maps, and valuated matroids). Our use of the bidding language, and
the information it provides, contrasts with existing algorithms that rely on
access to a valuation or demand oracle to find equilibrium.
  We compute market-clearing prices using algorithms that apply existing
submodular minimisation methods. Allocating the supply among the bidders at
these prices then requires solving a novel constrained matching problem. Our
algorithm iteratively simplifies the allocation problem, perturbing bids and
prices in a way that resolves tie-breaking choices created by bids that can be
accepted on more than one good. We provide practical running time bounds on
both price-finding and allocation, and illustrate experimentally that our
allocation mechanism is practical.
