I have the following optimization problem. I have a list of tasks that I should be able to perform with my tools. Each tool costs a certain amount of money, and may be used to carry out a finite number of tasks. The goal is to choose an optimal set of tools in such a way that the toolset can do all the required tasks, while the total cost should be minimal.

Any idea what kind of algorithm shall I use to solve this? It looks like a standard combinatorial optimization problem, I suppose there should be a solution for it.

Many thanks!