Exemplo n.º 1
0
        internal SlotProvider Parse(string[] args)
        {
            if (args.Length > 0)
            {
                var args_MAX_OFFSET_BETWEEN_SERVICES = Convert.ToInt32(args[0]);
                MAX_OFFSET_BETWEEN_SERVICES = args_MAX_OFFSET_BETWEEN_SERVICES;
            }
            log.Info("[START]");

            var reader = new DelimitedFileReader(@"Tests\input.csv", 0, 0, ',');

            reader.SkipEmptyRows = true;
            List <CSVData> list = reader.ToList <CSVData>();

            list.Remove(list.FindLast(x => true)); //trial thing?

            var slotProvider = new SlotProvider(list);

            //var someSlots = slotProvider.Provide(new Day(4));
            return(slotProvider);
        }
Exemplo n.º 2
0
        static void Main(string[] args)
        {
            if (args.Length > 0)
            {
                var args_MAX_OFFSET_BETWEEN_SERVICES = Convert.ToInt32(args[0]);
                MAX_OFFSET_BETWEEN_SERVICES = args_MAX_OFFSET_BETWEEN_SERVICES;
            }
            log.Info("[START]");

            var reader = new DelimitedFileReader(@"input.csv", 0, 0, ',');

            reader.SkipEmptyRows = true;
            List <CSVData> list = reader.ToList <CSVData>();

            list.Remove(list.FindLast(x => true)); //trial thing?
            var slots = list.Select(CSVDataToSlot).ToArray();


            //HashSet<char> allServices = new HashSet<char>() { 'L', 'T', 'P' };
            //ServiceVariantSlot[] slots = new ServiceVariantSlot[]
            //{
            //    new ServiceVariantSlot()
            //    {
            //        Code = 'L',
            //        StartTime = CalculateNumberOfMinutes(13),
            //        EndTime = CalculateNumberOfMinutes(13,30)
            //    },
            //    new ServiceVariantSlot()
            //    {
            //        Code = 'T',
            //        StartTime = CalculateNumberOfMinutes(13),
            //        EndTime = CalculateNumberOfMinutes(13,30)
            //    },
            //    new ServiceVariantSlot()
            //    {
            //        Code = 'L',
            //        StartTime = CalculateNumberOfMinutes(13,30),
            //        EndTime = CalculateNumberOfMinutes(14)
            //    },
            //    new ServiceVariantSlot()
            //    {
            //        Code = 'L',
            //        StartTime = CalculateNumberOfMinutes(14),
            //        EndTime = CalculateNumberOfMinutes(14,30)
            //    },
            //    new ServiceVariantSlot()
            //    {
            //        Code = 'T',
            //        StartTime = CalculateNumberOfMinutes(14,30),
            //        EndTime = CalculateNumberOfMinutes(15)
            //    },
            //    new ServiceVariantSlot()
            //    {
            //        Code = 'P',
            //        StartTime = CalculateNumberOfMinutes(15),
            //        EndTime = CalculateNumberOfMinutes(15,20)
            //    },
            //    new ServiceVariantSlot()
            //    {
            //        Code = 'L',
            //        StartTime = CalculateNumberOfMinutes(15),
            //        EndTime = CalculateNumberOfMinutes(15,30)
            //    }
            //};

            //int?[][] M = new int?[6][]
            //{
            //    new int?[] {null, null, null, 60, 90, null},
            //    new int?[] {null, 30, null, 90, 90},
            //    new int?[] {null, 30, 60, null},
            //    new int?[] {null, 30, null},
            //    new int?[] {0, 0},
            //    new int?[] {null}
            //};

            //var a = new Program();
            //var matrix = a.GenerateMatrix(slots); // == M
            ////var R = a.Run(matrix, allServices, slots);

            //var R = a.RunRecursive(matrix, allServices, slots);

            Array.Sort(slots, delegate(ServiceVariantSlot s1, ServiceVariantSlot s2)
                       { return(s1.StartTime - s2.StartTime); });
            var alg = new Algorithm(MAX_OFFSET_BETWEEN_SERVICES);

            log.Info(String.Format("MAX_OFFSET_BETWEEN_SERVICES = {0}", MAX_OFFSET_BETWEEN_SERVICES));

            var result = alg.Run(slots);


            var stringBuilder = new StringBuilder();

            stringBuilder.AppendLine();
            if (null != result)
            {
                result.OrderBy(b => b.SpareTime).ToList().ForEach(block => {
                    stringBuilder.AppendLine($"BLOK (przerwy sumarycznie - {block.SpareTime} minut):");
                    block.ServiceVariantSlots.ToList().ForEach(slot =>
                                                               stringBuilder.AppendLine(PrintServiceVariantSlot(slot)));
                });
            }
            else
            {
                stringBuilder.AppendLine("BRAK WYNIKU");
            }

            log.Info(stringBuilder.ToString());
        }