コード例 #1
0
        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);
        }