コード例 #1
0
        public void collectAisle(bool up, bool enterExitSame, Problem problem)
        {
            int aPos;

            if (up)
            {
                aPos = this.AInfo - 1;
            }
            else
            {
                aPos = this.AInfo;
            }
            List <Item> sortedAisleItems = problem.sortAisleItems(problem.getNonPickedAisleItems(aPos, this.BInfo));

            if (sortedAisleItems.Count == 0)
            {
                return;
            }
            if (up)
            {
                sortedAisleItems.Reverse();
            }
            foreach (Item i in sortedAisleItems)
            {
                if (i.Picked == false)
                {
                    i.Picked = true;
                    this.addToPickedItems(i);
                }
            }
            if (enterExitSame)
            {
                if (up)
                {
                    this.addToTravelledDistances(new LinkDistance(Math.Abs(sortedAisleItems.ElementAt(sortedAisleItems.Count() - 1).DInfo - problem.S - 1), Problem.Codes.K));
                    this.addToTravelledDistances(new LinkDistance(Math.Abs(sortedAisleItems.ElementAt(sortedAisleItems.Count() - 1).DInfo - problem.S - 1), Problem.Codes.K));
                    this.addToDistance(Math.Abs(sortedAisleItems.ElementAt(sortedAisleItems.Count() - 1).DInfo - problem.S - 1) * problem.K * 2);
                }
                else
                {
                    this.addToTravelledDistances(new LinkDistance(sortedAisleItems.ElementAt(sortedAisleItems.Count() - 1).DInfo, Problem.Codes.K));
                    this.addToTravelledDistances(new LinkDistance(sortedAisleItems.ElementAt(sortedAisleItems.Count() - 1).DInfo, Problem.Codes.K));
                    this.addToDistance(sortedAisleItems.ElementAt(sortedAisleItems.Count() - 1).DInfo *problem.K * 2);
                }
            }
        }
コード例 #2
0
        public void collectLGAisle(bool up, Aisle aisle, Problem problem)
        {
            int aPos;

            if (up)
            {
                aPos = this.AInfo - 1;
            }
            else
            {
                aPos = this.AInfo;
            }
            List <Item> sortedAisleItems = problem.sortAisleItems(problem.getNonPickedAisleItems(aPos, this.BInfo));

            if (sortedAisleItems.Count == 0)
            {
                return;
            }
            if (up)
            {
                sortedAisleItems.Reverse();
            }
            foreach (Item i in sortedAisleItems)
            {
                if (up)
                {
                    if (i.DInfo >= aisle.HighLargestGap)
                    {
                        if (i.Picked == false)
                        {
                            i.Picked = true;
                            this.addToPickedItems(i);
                        }
                    }
                }
                else
                {
                    if (i.DInfo <= aisle.LowLargestGap)
                    {
                        if (i.Picked == false)
                        {
                            i.Picked = true;
                            this.addToPickedItems(i);
                        }
                    }
                }
            }

            if (up)
            {
                this.addToTravelledDistances(new LinkDistance(Math.Abs(aisle.HighLargestGap - problem.S - 1), Problem.Codes.K));
                this.addToTravelledDistances(new LinkDistance(Math.Abs(aisle.HighLargestGap - problem.S - 1), Problem.Codes.K));
                this.addToDistance(Math.Abs(aisle.HighLargestGap - problem.S - 1) * problem.K * 2);
            }
            else
            {
                this.addToTravelledDistances(new LinkDistance(aisle.LowLargestGap, Problem.Codes.K));
                this.addToTravelledDistances(new LinkDistance(aisle.LowLargestGap, Problem.Codes.K));
                this.addToDistance(aisle.LowLargestGap * problem.K * 2);
            }
        }