Exemple #1
0
 public Simulator(IScheduler scheduler, ProblemSetting ps, List <Job> jobs)
 {
     this.Scheduler  = scheduler;
     this.PS         = ps.Clone();
     this.Jobs       = jobs.DeepClone();
     this.OriginPS   = ps.Clone();
     this.OriginJobs = jobs.DeepClone();
 }
        static void RunOneSimulation(String path, string schedulerName)
        {
            var ps   = new ProblemSetting();
            var jobs = new List <Job>();

            FileUtil.ReadData(path, ref ps, ref jobs);


            IScheduler scheduler = SchedulerFactory.GetScheduler(schedulerName, ps);


            var simulator = new Simulator(scheduler, ps, jobs);

            var simulationresult = simulator.Simulate();

            Console.WriteLine(simulationresult);
        }
        public static void ReadData(string path, ref ProblemSetting ps, ref List <Job> jobs)
        {
            // init ps

            //note that for brownEnergyPrice/greenEnergy list, the time index start from 1, thus need to append 0 in the head of list

            var timeslotString = ReadSingleParameterFromFile(path + "totaltimeslots.txt");

            ps.TimeSlots = Int16.Parse(timeslotString); // read from file
            // Console.WriteLine("timeSlot=" + ps.TimeSlots);



            ps.ClusterNodeNum = Int16.Parse(ReadSingleParameterFromFile(path + "vm.txt")); // read from file
            //Console.WriteLine("vm=" + ps.ClusterNodeNum);


            ps.RevenueRate = Double.Parse(ReadSingleParameterFromFile(path + "revenuerate.txt")); // read from file
            // Console.WriteLine("revenue rate=" + ps.RevenueRate);



            ps.SolarEnergyList = ReadIntListFromFile(path + "solars.txt");   // read from file
            // Console.WriteLine("solar energy length" + ps.SolarEnergyList.Count);
            //  ps.SolarEnergyList.ForEach(e => Console.Write(e + " "));
            //  Console.WriteLine();


            ps.BrownPriceList = ReadDoubleListFromFile(path + "brownPrice.txt");
            // Console.WriteLine("brown price length" + ps.BrownPriceList.Count);
            //  ps.BrownPriceList.ForEach(e => Console.Write(e + " "));
            // Console.WriteLine();

            // init ps
            jobs = ReadJobFromFile(path + "jobs.txt", ps.RevenueRate);
            // Console.WriteLine("scheduledJobs");
            // scheduledJobs.ForEach(j => Console.WriteLine(j.ArrivalTime + " " + j.Deadline + " " + j.ProcessingTime + " " + j.RequiredNodes));
        }
        public static IScheduler GetScheduler(String schedulerName, ProblemSetting ps)
        {
            // get the type of the interface
            var type = typeof(IScheduler);
            // query all the classes that implement IMyInterface in current assembly
            // startTime.IsClass is very important, otherwise you will get more interface types
            // that inherited IMyInterface, include IMyInterface itself
            var q = from t in Assembly.GetExecutingAssembly().GetTypes()
                    where t.IsClass && type.IsAssignableFrom(t)
                    select t;
            // convert the query result to list (List<type>)
            var classes = q.ToList();
            // find the one we need
            // var myClass = classes.FirstOrDefault(c => c.Name.ToLower().Contains(arrivalType.ToString().ToLower()));

            var myClass = classes.FirstOrDefault(c => {
                return c.Name.ToLower().Equals((schedulerName + "Scheduler").ToLower());
            });
            // create an instance from a type
            var instance = (IScheduler)Activator.CreateInstance(myClass, ps);
            // return the created instance
            return instance;
        }
        public static IScheduler GetScheduler(String schedulerName, ProblemSetting ps)
        {
            // get the type of the interface
            var type = typeof(IScheduler);
            // query all the classes that implement IMyInterface in current assembly
            // startTime.IsClass is very important, otherwise you will get more interface types
            // that inherited IMyInterface, include IMyInterface itself
            var q = from t in Assembly.GetExecutingAssembly().GetTypes()
                    where t.IsClass && type.IsAssignableFrom(t)
                    select t;
            // convert the query result to list (List<type>)
            var classes = q.ToList();
            // find the one we need
            // var myClass = classes.FirstOrDefault(c => c.Name.ToLower().Contains(arrivalType.ToString().ToLower()));

            var myClass = classes.FirstOrDefault(c => {
                return(c.Name.ToLower().Equals((schedulerName + "Scheduler").ToLower()));
            });
            // create an instance from a type
            var instance = (IScheduler)Activator.CreateInstance(myClass, ps);

            // return the created instance
            return(instance);
        }
 public BestFitScheduler(ProblemSetting ps)
     : base(ps)
 {
     this.SchedulerType = SchedulerType.BestFit;
 }
 public BestFitScheduler(ProblemSetting ps)
     : base(ps)
 {
     this.SchedulerType = SchedulerType.BestFit;
 }