I'm interested in your helper program.
Source (C++) and executable (win32) are here:
http://s000.tinyupload.com/?file_id=00734057641410667840I've whipped it together very quickly so it's fairly ... dwarvenly.
nodes.txt describes the fortress "schema" which is a list of rooms and relationships between rooms. In the example file, room 1 is a wood stockpile of size 25, linked to the carpenter, craftsdwarf, siege_ws, woodfurnace, and bowyer. The format of each room entry is name:size|dependents,... and you can add as many new rooms as you like. Room numbers start at 1 so you can use line numbers to set up dependent rooms easily. The default schema that I've provided is very limited and probably inaccurate but it gives some idea of usage. You can have multiple rooms of the same type; just give rooms the same name and biolayout will consider them to be of the same 'class' (color, etc).
After setting up nodes.txt: run the program and it will save outedges.layout in the same directory. That file can be opened by biolayout.
Very interested in this, but do you have a way of converting the ball-and-stick model to a grid-based pattern?
Biolayout can render the balls as cubes, but I don't think theres a way to hide the edges (sticks) or to force a quantized positioning. If there are better tools that can do this I'd love to try them. Gephi did not work well at all in 3D.
So, it looks like you're making a lot of "cloth" balls to allow for how much of it is carried around, but only one "clothier" ball because there's only one place it's take.
...
to some extent you can treat the input stockpiles as part of the workshop.
Every node in this graph represents a physical location, so all of those cloth nodes are representing a cloth stockpile. If production and consumption of cloth are well synchronized then you may not need a stockpile at all, or you may be able to assume that the stockpiles can be small enough to fit in the gaps between spaces. It would be perfectly valid to simplify by removing all stockpiles from the model.
Also, it's more important for production rates that workshop inputs are close, outputs barely matter
...
walking time to start jobs from idle also matters
Agreed. A robust solution needs to be able to weight these edges to make clear how some relationships are more important than others. If we assume that idlers are spending their time in the dining area, then weak relationships between the dining area and all workshops could allow us to model that relationship.