Perhaps make it so that, instead of:
Each turn, check a tile for importance of each improvement, and build the most important one.
change that to:
Each turn, check a tile for importance of each improvement, and if the most important one exceeds the current one by x, build that improvement.
Or if it's already like that, then increase x. Especially for ham/vil/town as current, and more for the time it would take to build the new one.
Each turn, check a tile for importance of each improvement, and build the most important one.
change that to:
Each turn, check a tile for importance of each improvement, and if the most important one exceeds the current one by x, build that improvement.
Or if it's already like that, then increase x. Especially for ham/vil/town as current, and more for the time it would take to build the new one.