How do you DESIGN ZONES?
It is a constrained optimisation problem
You need to optimise a function to deliver an unique result
You also need constraints to ensure sensible results from a topological perspective and maybe also to handle user imposed restrictions