Why are the holes in my polygons not generalized?

I'm guessing you are using GRASS 6.4.x as there were issues regarding generalizing polygons with holes. This has been fixed in GRASS 7, although I do not have this version so cannot confirm it.

A workaround would be to use the Fill holes tool from the Processing Toolbox on your original layer:

Example polygon

Filled holes

Use the Difference tool on both the original and filled layers:

Difference

Use the v.generalize tool on both the filled and the difference layers:

Filled generalized

Difference generalized

Finally, run the Difference tool again on both the generalized layers:

Final result


I recommend you to use the brand new geoalgorithm from QGIS 2.14.1, named Smooth.py

With Smooth Geometry it's possible to smooth the entire polygon, not only the boundaries, as in Chaiken method from v.generalize