In very many areas, it is an important goal to use the available resources as efficiently as possible. In doing so, different constraints have to be taken into account. We deal with the development and theoretical analysis of new scheduling algorithms. Different methods of combinatorial optimization are used. Furthermore, we investigate whether algorithms with good theoretical results also achieve good results in practical applications or whether they have to be improved considering practical constraints. For this purpose we use simulations with recorded real data mainly from high performance computing systems.