It's not the knapsack problem. The task is similar: maximize (some relation between) the carried volume and weight. But instead of a finite collection of different items, you have an essentially infinite set of a few items. Also, the weight and volume of each individual item is negligible, so you don't have to worry about the integer nature of the problem, i.e. it's sufficient to give a fractional answer and round down. (That's what makes the knapsack hard - the fact that you can't add fractional items.) This seems like a straightforward linear programming problem, solvable via the simplex method.