So, to emulate this...
If you know how many units are going to be at the arrival point, you can calculate an acceptable radius from the actual distinct point. The more units going there, the bigger the radius. Once a given unit is inside that radius, you turn off the arrival behavior and leave on the separation one. That way, peeps will "make room" for new arrivals to some extent.
The only tricky math will be at design time coming up with an algorithm to determine an acceptable radius based on the desired separation distances between agents. You want to make it big enough so they don't have to really jostle each other to all fit, but small enough so that it is obvious they are supposed to be meeting up there.
The only change you need to make to your code is to incorporate the radius calculation - which doesn't even really NEED to be dynamic. If it's not dynamic, then it can be a fixed value in the code. The only line change would be a simple if statement that checks the distance to the arrival point... "Am I close enough?" leads to "Do I add the arrival vector or not?"
The point is... sometimes we get so fixed on discrete, perfect solutions, that we lose sight of what sort of behavior we are actually trying to accomplish. In your example, you stated:
Quote:I have a group of units which I'd like to order to a specific position.You knew that by "specific position" you didn't mean that they should all stand on top of each other - that's why you were incorporating separation behaviors. However, as you proceeded, you were still locked onto the concept of the "arrival behavior" which, once you get to a certain point, becomes all but meaningless. It's much like the legendary runners paradox... where you cover half the distance, then half the remaining distance, then half the remaining distance... such that you never arrive. The paradox only holds if you assume that time is slowing down for you as well to the point where time is all but frozen. In this case, your false premise was holding onto the idea that your agents were desperate to reach that given point - despite the fact that they knew they couldn't all stand on it. At some point, the specific target point becomes irrelevant so therefore so does the arrival behavior.
The best solution for that is to put yourself in the place of your agent for a moment. In this case, if you would envision approaching the lamp post that was already crowded with people and saying "well, here's the meeting place - this is close enough." That statement, of course, is analogous to getting inside the acceptable radius. The next statement would be "it wouldn't look real good if I were to go and snuggle up to dude over there - I should keep my distance a little from each person." There's your separation behavior... still in effect.
In short, you were making your behavior model the logic of your math rather than making the logic of the math model your behavior.