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); } } }
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); } }