I added the “barter” agent to the preceding experiment.
Barter agents use a very naive bartering algorithm whereby agents attempt to swap what they need for what they have a surplus of … with neighbours who have opposite requirements. (See code here.)
The result :
And you can see that bartering ends up indistinguishable from selfish foraging.
For this reason, I’m not entirely sure about this yet. It looks so bad that I think there may be a bug in the code. I’ll try to let you know tomorrow. (All eyeballs welcome to have a look in the meantime.)
Alternatively I guess it could be that opportunities for bartering are so rare that they have no visible effect.