Search based software engineering has been used to solve many problems in software engineering and as such many different search based algorithms have been utilized for optimizing problems across the full software lifecycle. Solutions range from simple greedy to local heuristic search to evolutionary, population based techniques. Choosing the algorithm to use for a particular problem is a key design decision. However, an equally important decision, and one that is often less explored, is the design of the search neighborhood and the choice of its transformation operators. In this talk I will discuss some of our experience with varying the neighborhoods and transformation operators for problems such as software test generation and reverse engineering system models. I will show how this important design decision can have a large impact on the quality of a search algorithm for different variants of the same problem, because it fundamentally alters the search landscape. I will also show that while one neighborhood may be superior solving one variation of a problem, it may not work well at all for another variant of the same problem.
展开▼