Good concept, but poor implementation.
Several problems:
1) Drones occasionally freeze/get stuck--I tried to exit and reload the game, but the drones remain frozen.
2) The algorithms the drones use result in a lot of useless moves, and/or looping--take something from storage A, put it in storage B, then take it back out and put it back in storage A. Repeatedly.
3) The drones ignore the "allow drones to take items" option.
4) The drones seem to only search for the first place to store something, going from left to right and top to bottom, instead of the nearest building. This often results in moving items inefficiently to remote locations.
5) Sometimes, buildings go offline and will not go back online.
My suggestions:
The drone freezing and buildings going offline acts a lot like a memory leak (inaccessible pointer): the game loop simply loses track of the drone or building state.
Prioritize transport: Instead of targeting the first acceptable target, create an A-list, B-list, and C-list, then choose the best target from the A-list; If none or not possible, try the B-list, then the C-list.
Keep track of the three to five most recent transports: If the drone tries to transport something back to a recent previous target, abort the action as a possible infinite loop.
Use a "job system" type transport queue. And allow the drones to scan the queue for the nearest job, instead of the first possible job. (Also, leave the job in the queue until it has completed. That way, if the drone aborts, it can unmark the job as taken and allow the drones to attempt it again later, when it may become possible to complete it.)