The objective of this course is to give students a deep understanding of evolutionary algorithms (EAs) in optimization from both a theoretical and practical perspective. Evolutionary algorithms are a class of optimization algorithms based on a model of biological evolution that have found wide use in many engineering domains such as the optimization of mechanical structures, jet engines, circuits, antennas, manufacturing methods, chemical processes, airfoils, scheduling systems, and many other engineering applications. A key component of the course is a semester-long project. Students can work individually or form teams to work on an application that has practical or fundamental research significance. The project application is encouraged to related the student's research area or area of interest. For example, a doctoral student's project might be an optimization problem with direct relevance to his or her's thesis research. The project report is in the style of a conference paper which may be submitted for review to a conference after the course ends. Upon completion, the student should be able to understand and apply fundamental EA theory; be able to implement or modify EAs; be able to apply an EA to problems in the student's field.
Pre-requisites: Students entering the class with a pre-existing working knowledge of probability, statistics and algorithms will be at an advantage, but the class has been designed so that anyone with a strong numerical and computational background can catch up and fully participate. Course projects require students to have programming skills in either C/C++, Java or equivalent programming languages.