Delivery Robot following lines: what is the best way to do it.

So, I have a project to college, I need to create a AGV-like robot, capable of knowing in which point to stop to make a delivery, those stops are scheduled by a software that I made in Java, when following a line, I have been presented with a few options, but since I am still new to a lot of things, I would like to know which of these methods are the easiest one to make that robot.

Construction of the Line:
-A full circle or any closed shape around the room so it goes in loop.
-A tree-like map for the robot to go towards any point of the room at choosing.

In following the line:
-Use a LDR sensor with a colored line on the white floor
-Use a IR photodiode and a IR Led with a colored line on the floor.

In stopping:
-Time how long the robot reaches a certain point and program him to stop at that point.
-Use multiple colored lines to warn the robot at which point it is and therefore where to stop.
-Paint a certain spots of the line so the robot can move
-Place some color on the side of the line for the robot to be aware of where it is, instead of painting the line itself (would need a second sensor).

In receiving instructions:
-Send instructions via Bluetooth
-Send instructions via serial Bus
-Put instructions directly in the arduino.
-Put the txt file that the Java program created in the Arduino for it to read.

If you guys have another idea you think might be better please tell me as well, specially if you guys already have an example of someone who did something similar, please tell me about it too. Thanks.

Aucefi:
-A full circle or any closed shape around the room so it goes in loop.

That seems the easiest, you just need some sort of indicator of where the robot needs to stop on the loop for the deliveries. Picture a mailman in real life. The are going to try to do their route in something generally resembling a loop because that's most efficient but along the way there will be many branches off that loop to go down a dead end street or driveway and then retrace their steps back to the loop. You can emulate these branches in a loop form but it means drawing twice as much line (incoming and outgoing halves of the branch loop) for those branches as would have been necessary with a single line branch.

The problem I see with the tree structure is that if the robot is blindly traveling it that could lead to inefficient routing. Every time the robot reaches a fork it must chose a branch but then remember to come back to travel the other fork. But how does it know which is the best fork to chose first. You want to travel each branch off the trunk first, otherwise there is a lot of unnecessary travel backtracking along the trunk to branches that were passed by. So ideally with the tree option you would provide some information at each fork.

Aucefi:
-Use multiple colored lines to warn the robot at which point it is and therefore where to stop.
-Paint a certain spots of the line so the robot can move
-Place some color on the side of the line for the robot to be aware of where it is, instead of painting the line itself (would need a second sensor).

I think that approach would make it much more flexible. More work to implement but less work to lay out the route without a bunch of tedious timing or measuring. You might consider RFID tags, that would allow you to assign an identifying code to each stop, which the robot would decide whether it needs to stop for the delivery there or not according to the scheduling program.

Aucefi:
-Put instructions directly in the arduino.

I assume this means hardcoding the delivery schedule into the sketch? That will be the easiest in general but probably doesn't interface well with your scheduling program.

Aucefi:
-Send instructions via serial Bus

I'm guessing this means the scheduling program will send the delivery schedule to the robot over a serial port. The (minor) downside of that is you need to physically connect the robot to receive the schedule.

Aucefi:
-Send instructions via Bluetooth

I'm guessing this means the scheduling program will send the delivery schedule to the robot via Bluetooth. This would be a bit more work than serial but the wireless communication makes it easy to send the schedule without any intervention from you and could also allow the scheduling program to monitor the robots progress in fulfilling the delivery schedule.

Aucefi:
-Put the txt file that the Java program created in the Arduino for it to read.

I don't know what that means, you'd have to explain better.