Assigning tasks to resources and determining their execution order to optimize objectives like time or cost.