if you can find a way to solve porosity for one cube -not even divided into different areas- then you have probably solved it for a cube where porosity is defined in different zones
BUT
it doesn’t look like an easy problem 
if porosity is achieved by giving volume to 3D voronoi cell edges, then the number of points defining the 3D Voronoi should be proportional to the length of the tunnels (which will represent empty volume) so they contribute to increase porosity (more edges = more tunnel = less material = more porosity)
but what happens when you introduce a new point into a voronoi diagram that has already some points? the new point creates a new cell (and so it introduces new edges) around which a circular cavity will be created: depending on the diameter of those cavities (that can be fixed or variable) only a % of the toal length of the new edges is creating empty volume, because some (or most?) of that is compenetrating with cavities that already exist
for this reason -I guess- you can’t just forecast the degree of porosity a given number of points will give you, and at the same time I also believe playing with the seed while keeping the very same number of points will also yield different porosity results
porosity increses with the number of points and the diameter of the tunnels, but I think you can’t really forecast a porosity value without modeling the 3D geometry
you can for sure put down a definition with a loop that tries a given number of points per area and calculates the porosity: if that porosity value is under a certain threshold, the loop restarts with n+1 points and so on (Populate3D Seed stays the same)
this allows you to get a volume with the smalles porosity equal or higher to a certain amount you set
the transition between areas with porosity_a and porosity_b, that’s interesting, probably I would try one of those probabilistic thingies but based on coordinate, for instance, for decreasing probability from left to right (along X axis) something like:
Point_cull_probability.gh (13.6 KB)
but this would change the rules of the game, as you’re not playing with a number of points in a volume anymore, but you’re playing with a graph… (for this reason I wouldn’t use a graph mapper, but maybe draw curve control points on the Rhino canvas and play with those, like referencing a Curve that is indeed itself a graph mapper)