private Allocation GetInitialAllocation( ) { var initialAllocation = new Allocation( Array.Empty <string> ( ), 1, AT1Configuration.NumberOfTasks, AT1Configuration.NumberOfProcessors, new List <string> ( ) ); initialAllocation.AssignTasks(AT1Configuration); var tasks = initialAllocation.Tasks; var processors = initialAllocation.Processors .OrderByDescending( x => x .Frequency) // assign tasks to high frequency processors first to minimize time .ToList( ); foreach (var task in tasks) { var fastestProcessor = processors // find the fastest processor than can handle this task .OrderBy(x => x.Time( )) .First(x => task.RAM <= x.RAM); fastestProcessor.AllocatedTasks.Add(task); } return(initialAllocation); }