  We study the problem of maximizing a monotone submodular function subject to
a Multiple Knapsack constraint. The input is a set $I$ of items, each has a
non-negative weight, and a set of bins of arbitrary capacities. Also, we are
given a submodular, monotone and non-negative function $f$ over subsets of the
items. The objective is to find a packing of a subset of items $A \subseteq I$
in the bins such that $f(A)$ is maximized.
  Our main result is an almost optimal polynomial time
$(1-e^{-1}-\varepsilon)$-approximation algorithm for the problem, for any
$\varepsilon>0$. The algorithm relies on a structuring technique which converts
a general multiple knapsack constraint to a constraint in which the bins are
partitioned into groups of exponentially increasing cardinalities, each
consisting of bins of uniform capacity. We derive the result by combining
structuring with a refined analysis of techniques for submodular optimization
subject to knapsack constraints.
