This is, of course, just The Knapsack Problem: http://en.wikipedia.org/wiki/Knapsack_problem
It's proven to be NP-Hard, but with a well known "good enough" approximation ("the knapsack problem has a fully polynomial time approximation scheme (FPTAS)")