Синтетические методы управления мутациями в программировании работают на основе генетического программирования. ru.ruwiki.ru intuit.ru
В генетическом программировании после выполнения кроссинговера с заданной малой вероятностью выполняется мутация для выбранной одной особи-программы. intuit.ru Для разных структур программы мутация выполняется по-своему: intuit.ru
- Для древовидных структур. intuit.ru Используются узловая, усекающая и растущая мутации. intuit.ru При узловой мутации случайно выбирают узел, подлежащий мутации, определяют его тип, затем случайным образом выбирают из соответствующего множества вариантов узлов, отличный от рассматриваемого, и меняют исходный узел на выбранный. intuit.ru spravochnick.ru При усекающей мутации определяется или выбирается узел, случайным образом выбирается терминальный символ из заданного множества, обрезается ветвь узла мутации, а вместо неё помещается выбранный терминальный символ. intuit.ru spravochnick.ru При растущей мутации определяется узел мутации, если он нетерминальный, то отсекают ветви, исходящие из него, иначе выбирают другой узел. intuit.ru spravochnick.ru Затем вычисляют размер (сложность) остатка дерева и вместо отсечённого дерева выращивают случайным образом новое дерево так, чтобы размер нового построенного дерева не превышал заданный порог. intuit.ru spravochnick.ru
Для линейных структур мутация выполняется иначе: из линейного сегмента (тела программы) случайно выбирается оператор (команда), и в нём производятся изменения одного из следующих видов: intuit.ru
- имя переменной (или регистра) заменяется на другое случайным образом выбранное из заданного множества; intuit.ru
- оператор может быть также изменён случайным образом на некоторый другой из функционального множества; intuit.ru
- может быть случайно изменено значение константы на некоторое другое значение из заданного диапазона. intuit.ru
Для графоподобных структур оператор мутации случайным образом выбирает множество узлов и изменяет либо узел линейной программы, либо узел ветвления, либо число исходящих из условного оператора ветвей. intuit.ru Изменённая программа помещается назад в популяцию. intuit.ru
Также существует мутационное тестирование, которое подразумевает поочередное внесение ошибочных изменений в исходный код и выполнение тестов с целью определения, будут ли перехвачены эти ошибки. dzen.ru Для этого используются инструменты мутационного тестирования, которые изучают предопределённый набор возможных мутаций, находят для них подходящие участки кода, проводят мутацию и выполняют набор тестов. dzen.ru