Hi ffccnn,
The AI drivers obey built in rules, however they are VERY literal and never bend or adjust the rules for unusual conditions.
As some one has already mentioned the end of a track needs a buffer stop or end of track marker. To the AI this is a permanent red signal, which tells the AI driver to use half the posted speed. If the line you are making dosn't use signals in the real world do a search for 'invisible signal'. These are invisible to the user in Driver but will keep the AI drivers happy. Also putting a signal or invisible signal every couple of boards on a long section of track will help because the AI only 'looks' ahead so far and if it sees no signals treats the track as not signaled and drives slowly.
Often a signal or points constantly changing is a sign that two or more AI drivers are fighting for control of that junction. Go to 'Free roam mode', click on each AI loco and select 'Stop train'. You should then be able to alter the points. Then you need to alter the layout or shedule so the AI drivers don't meet at that spot.
There are rules on the Download Station that can help with this sort of thing but are a bit complicated to use.
If you really want the AI drivers to cause you to start pulling your hair out in frustration put a simple loop on the end of your branch.
No matter how many signals you use the AI driver will stop on the loop and refuse to go forward.
If you mouse over the signal/points it will tell you the next block is occupied ( it means it is reserved for another train and the AI will not release it until the other train has entered another 'block'.)
The only problem is in this case it is the AI's own train that is holding the block as 'occupied'!

The cure is to put a set of points in the loop, ( maybe for a short siding ) so the AI sees the loop as two train control 'blocks'.
This happens in TRS 2004, they have made some changes to the AI in TS 2009 so it may be different behavour in TS 2009?
Hope this helps,
Lindsay