This looks fun. One could conceive of a three-pronged approach to circuit design: * Manual placement of components, based on the designer's skill and knowledge * Insertion of preexisting blocks from a library * Specification of requirements for a generated block to satisfy, triggering evolutionary search as described in the article I'm not sure how likely beginning with an existing design would impede the evolutionar…
You mix automatic optimization with manual routing (using your skill and knowledge) and can switch between these modes at any given point. Your manual edits could be used in new generations or you could just say to autorouter: “keep away from this area”. I had some experience with it and was quite satisfied.