We consider the problem of grooming in all-optical networks to maximize traffic. We present an integer-programming formulation while constraining the number of optical transceivers at each node, the link load, and the capacity of each lightpath. Based on the structural properties of the problem, we develop a heuristic based on a column-generation technique. The algorithm is easy to implement, requires a modest amount of CPU time, and provides high-quality solutions. To ascertain the quality of solutions obtained by our algorithm, we present an alternative formulation that allows us to develop an upper bound using a Lagrangian-relaxation technique. An extensive computational study is presented.