Fuzzy logic controllers (FLCs) are gaining in popularity across a broad array of disciplines because they allow a more human approach to control. Recently, the design of the fuzzy sets and the rule base has been automated by the use of genetic algorithms (GAs) which are powerful search techniques. Though the use of GAs can produce near optimal FLCs, it raises problems such as messy overlapping of fuzzy sets and rules not in agreement with common sense. This paper describes an enhanced genetic algorithm which constrains the optimization of FLCs to produce well-formed fuzzy sets and rules which can be better understood by human beings. To achieve the above, we devised several new genetic operators and used a parallel GA with three populations for optimizing FLCs with 3x3, 5x5, and 7x7 rule bases, and we also used a novel method for creating migrants between the three populations of the parallel GA to increase the chances of optimization. In this paper, we also present the results of applying our GA to designing FLCs for controlling three different plants and compare the performance of these FLC's with their unconstrained counterparts.