Perhaps not a complete answer, but I think you need to re-examine your model logic a bit.
Two things to suggest:
In your result, you are concluding that vehicles disappear at Z1 and then new vehicles are produced there. How do you know they are different? (It is a rhetorical question... ;) ). You don't. With the model construct you have it is impossible to determine if a vehicle passes through a Z node or is replaced by a new vehicle. So, for all of the Z nodes, you need to add an artificial/synthetic adjacent node that is a source/sink to handle that. So this:
A --- Z1 --- N1 --- N2 --- B
needs to be augmented to this:
A --- Z1 --- N1 --- N2 ---B
|
S1
And then you do normal conservation of flow at Z and track in/out at S
Before you do that, however, you should re-examine the logic of your model. Right now, because you are minimizing overall flow, you are at high risk of just making cars "go away" at Z nodes and having them appear at other Z nodes, because that is a lower OBJ value. What do you think you'd get with this model, with some sourcing at A and demand at B:
A --- Z1 --- N1 --- N2 --- N3 --- N4 --- Z2 --- B
I think you'd have ZERO flow at all of the N nodes. Think about it / mock it up with your data.You probably want to weight flows from Z to your new S nodes smartly such that they are modestly more expensive than any other shortest path connection.
Lastly, make a smaller model to test with. It is much easier to troubleshoot. After you are confident that it is working, then step up to the larger dataset.