2

Hi I'm currently stuck on a piece of coursework, I need to make it so the NFTLPAddBox method loops through the previous trucks and stacks to add the box before creating a new truck, so it is like the first fit algorithm. How would I loop through the previous trucks and stacks to check for space? thanks

public class Truck {
    public static final int TRUCK_WIDTH = 2000;
    public static final int TRUCK_HEIGHT = 1000;
    public static final int BOX_LIMIT = 100;
    public int boxNum = 0;
    private List<Stack> stack;

public class TLP {
    private Box[] boxes;
    private List<Truck> trucks = new ArrayList<Truck>();

public void NFTLP() {
    trucks.clear();
    trucks.add(new Truck());
    System.out.println("");
    Stack s = new Stack();
    s.setStackWidth(boxes[0].getWidth());
    trucks.get(0).addStack(s);
    for (int i = 0; i < boxes.length; i++) {
        NFTLPAddBox(boxes[i],
                trucks.get(trucks.size() - 1).getStack().get(trucks.get(trucks.size() - 1).getStack().size() - 1),
                trucks.get(trucks.size() - 1), i);
    }
    System.out.println("Trucks used: " + trucks.size());
    System.out.println("Stacks used: " + Truck.stacks);
}

// next fit algorithm
public void NFTLPAddBox(Box b, Stack s, Truck t, int i) {
    i++;
    // add box to stack
    if (t.getBoxNum() < Truck.BOX_LIMIT) {
        if (b.getWidth() <= s.getStackWidth() && s.getStackHeight() + b.getHeight() <= Truck.TRUCK_HEIGHT) {
            s.addBox(b);
            t.boxNum++;
            System.out.println("Box " + i + " added at Truck: " + trucks.indexOf(t) + " Stack: "
                    + Integer.toString(trucks.get(trucks.indexOf(t)).getStack().size() - 1));
        } else {
            // new stack, add box to new stack
            Stack s2 = new Stack();
            if (t.getCurrentStackWidth() + b.getWidth() <= Truck.TRUCK_WIDTH
                    && b.getHeight() <= Truck.TRUCK_HEIGHT) {
                s2.addBox(b);
                t.addStack(s);
                t.boxNum++;
                System.out.println("Box " + i + " added at Truck: " + trucks.indexOf(t) + " Stack: "
                        + Integer.toString(trucks.get(trucks.indexOf(t)).getStack().size() - 1));
            }

            else {
                // new truck, add stack to new truck
                Truck t2 = new Truck();
                s2.addBox(b);
                t2.addStack(s2);
                t2.boxNum++;
                trucks.add(t2);
                System.out.println("Box " + i + " added at Truck: " + trucks.indexOf(t2) + " Stack: "
                        + Integer.toString(trucks.get(trucks.indexOf(t2)).getStack().size() - 1));
            }
        }
    } else {
        // new truck, new stack
        Truck t2 = new Truck();
        Stack s2 = new Stack();
        s2.addBox(b);
        t2.addStack(s2);
        t2.boxNum++;
        trucks.add(t2);
    }
}
edpor
  • 39
  • 1
  • 6

0 Answers0