In this thesis, we describe a genetic algorithm for optimizing the superpeer structure of semantic peer to peer networks. Peer to peer, also called P2P, networks enable us to search for content or information1 in a distributed fashion across a large number of peers while providing a level of fault tolerance by preventing disconnecting peers from disrupting the network. We seek to maximize the number of queries answered while minimizing the time in which they are answered. It will be shown that the genetic algorithm (GA) dramatically improves network performance and consistently finds networks better than those found by random search and hill climbing. A comparison will also be made to networks found through exhaustive search, showing that the GA will, for smaller networks, converge on a globally optimal solution. Index words: Peer to peer, Genetic algorithm, Clustering, Network 1Information, as used in this thesis, is used to mean knowledge that has been gathered or received, a colle...