1. A method for resource allocation of a plurality of tasks carrying penalties based on their completion time, the method comprising: identifying the plurality of tasks to be assigned to one or more resources, wherein each job of a plurality of jobs includes multiple tasks ordered by chain precedence, wherein the plurality of jobs include active jobs and queued jobs, and wherein the plurality of tasks are associated with the active jobs; and assigning resources including start times for the plurality of tasks, using a processor, such that expected penalties for completion times of the plurality of tasks are reduced, wherein assigning the start times for the plurality of tasks comprises: assigning a time period to an allocated think time partition in a time slot for each active job, wherein each time slot of a plurality of time slots comprises a plurality of allocated think time partitions corresponding to the active jobs; performing immediate assignments of resources for the plurality of jobs based on expected execution times of tasks by executing an initial algorithm to form a preliminary solution for scheduling the plurality of jobs; responsive to performing the immediate assignments, simulating random assignments for the plurality of jobs by executing a randomized algorithm to form a plurality of simulations for a duration of the time period assigned to the allocated think time partition to determine a probable best solution for scheduling the plurality of jobs, and wherein the probable best solution is calculated for each allocated think time partition; and executing one of the initial algorithm and the randomized algorithm to assign resources for the completion of the plurality of tasks based on whether the initial algorithm or the randomized algorithm produced a best solution.