let me explain my idea,
Stones are generally really big and at the moment not very realistic dwarf can carry them around like all other items. I think the first thing to do is making a difference between small and big objects (stones, blocks, barrels, bins, statue's......) no matter wat the weigth. Then give dwarfs a -25% speedbonus when carrying big objects without a wheel barrow and a +50% speedbonus with a wheelbarrow.
Small items would fit in a stack on a wheel barrow. but thats a bit hard to implent
I'd make speed based on ratio of weight of carried items and of wheelbarrow.
For example, wheelbarrowing one earring sounds like it should be actually slower than just carrying it in hand as dwarf has to push additional weight around.
Basically, there should be base weight of item where wheelbarrowing speed is equal to carrying by hand speed. If item weights more, wheelbarrowing speed is faster than carrying it by hand and thus dwarves will wheelbarrow it. And if weight is smaller than that, dwarves would carry it by hand.
---
AI for selecting multiple items is going to be weird, you would basically be solving traveling salesman problem if you want to allow wheelbarrow to move multiple items to multiple locations (i.e. allow wheelbarrower to fetch rocks for stone stockpile and ores for ore stockpile at same time) there is no efficient algorithm to implement it yet and if you deside to implement taking over TSKed items in huge fortress with many items that need to be moved around, well, good-bye, fps.
It does not need to be perfect, some proximity-based hacks are mentioned, but there is one huge issue: tasks for hauling are usually generated sequentially one-by-one. By time you end up having enough tasks to make wheelbarrowing worth it haulers are already on their way to items or ever already back with items. You mostly DO want that because hauling that result from crafting are not really common.
There are several events where several hauling tasks are generated at once:
* New stockpile is designated or its setting was changed
* Butcher butchers something, Crafter makes hand or foot wear, Mugs are made.
* Something that carries stuff dies.
* Someone puts bin/barrel on stockpile.
* Player designated several things for dumping during game pause.
* Trade session has ended/player marked goods to be traded.
Basically, any event where several hauling designations appear instantly (during one tick) These events are perfect for very simple wheelbarrow/carried bin ai because it means that there is either one-tile destination or one-tile source (or both).
Conveniently, these events are also the events where you DO want wheelbarrows.
Each of these events should trigger "wheelbarrow ai" which then uses basic traveling salesman algorithm which is now going to be on very limited source item set (i.e., only clothing of one dead goblin or only 9 stones for new stone stockpile, only those 100 narrow items bound for trade depot.). and destination set. Without any sidetracking issues that needlessly complicate it.