Beispiel #1
0
        //Parameters: Huidige oplossing, niet-ingeplande orders, de lijst van alle orders
        // return: nieuwe oplossing, nieuwe lijst van niet-ingeplande orders.
        public static KeyValuePair<List<Order>[, ], List<int>> AddOrder(List<Order>[,] oldList, List<int> unplannedOrders, Order[] orders, Random rand)
        {
            List<Order>[,] list = (List<Order>[,])oldList.Clone();
            List<int> upOrders = unplannedOrders;

            if (upOrders.Count != 0)
            {
                int plannableOrder = upOrders[rand.Next(upOrders.Count)];

                Order order = orders.Where(i => i.orderNummer ==plannableOrder).First();
                int day = rand.Next(5);
                int truck = rand.Next(2);

                switch (order.aantalOphalen)
                #region switch
                {
                    case 1:
                        list[truck, day].Add(order);
                        break;
                    case 2:
                        if (day != 2)
                        {
                            list[truck, day].Add(order);
                            day = (day + 3) % 6;
                            list[truck, day].Add(order);
                        }
                        break;
                    case 3:
                        if (day == 0 || day == 2 || day == 4)
                        {
                            list[truck, 0].Add(order);
                            list[truck, 2].Add(order);
                            list[truck, 4].Add(order);
                        }
                        break;
                    case 4:
                        list[truck, day].Add(order);
                        day = (day + 1) % 5;
                        list[truck, day].Add(order);

                        day = (day + 1) % 5;
                        list[truck, day].Add(order);

                        day = (day + 1) % 5;
                        list[truck, day].Add(order);
                        break;
                    case 5:
                        for (int a = 0; a < 5; a++)
                        {
                            list[truck, a].Add(order);
                        }
                        break;
                    default: break;
                }
                #endregion

            }
            return new KeyValuePair<List<Order>[,], List<int>>(list, upOrders);
        }