Добрый день можно поинтересоваться где брать литературу предложенную в курсе ?Большинство книг я не могу найти в известных источниках |
Эволюционные методы генерации тестов
25.3 ГА в генерации тестов последовательностных схем
Использование ГА при генерации проверяющих тестов является естественным развитием псевдослучайных методов генерации тестов. Одним из первых применений ГА в технической диагностике цифровых схем (ЦС) является построение на их основе генераторов тестовых последовательностей. Суть задачи заключается в поиске двоичной входной последовательности, которая для каждой неисправности из заданного множества дает различные выходные значения сигналов в исправной и неисправной схемах. Как правило, рассматриваются одиночные константные неисправности.
Поскольку значения сигналов внешних выходов при функционировании ЦС данного типа зависят не только от значений сигналов на его внешних входах, а и от состояний триггеров, то при генерации тестов таких ЦС с применением ГА в качестве особи используется тестовая последовательность, которая представляется двоичной таблицей (рис. 2.8 а). Число столбцов таблицы определяется числом входов схемы, а число строк - длиной тестовой последовательности. Популяция состоит из фиксированного числа тестовых последовательностей, возможно, различной длины (рис. 2.8 б). Для выбранного таким образом представления особей и популяций применяются генетические операторы скрещивания и мутации [25.3].
При генерации тестов для последовательностных схем в качестве особи используется тестовая последовательность (рис. 2.9 а). Популяция состоит из фиксированного числа тестовых последовательностей, возможно, различной длины (рис. 2.9 б). Для выбранного таким образом представления особей и популяций разработаны проблемно ориентированные генетические операторы.
- Классический одноточечный кроссинговер. В этом случае двоичная таблица интерпретируется одной двоичной строкой, которая получается в результате последовательной конкатенации ("склеивания") строк. Поскольку в оперативной памяти таблица представляется именно в таком виде, то этот тип кроссинговера имеет простую реализацию. Отметим, что часто используемый на практике оператор горизонтального кроссинговера,представленного на рис.2.\9, является частным случаем одноточечного кроссинговера.
- Горизонтальный кроссинговер, где случайно выбирается момент времени (точка скрещивания) и родительские последовательности обмениваются подпоследовательностями после строки , что показано на рис. 25.7а).
- Вертикальный кроссинговер, представленный на рис. 25.7б), где обмен между родительскими особями производится случайно выбранными столбцами. Напомним, что столбец соответствует входной последовательностим, подаваемой на один вход схемы. Все "нестыковки" в данных операциях, которые образуются из-за различной длины участвующих особей, заполняются случайным образом. Также следует отметить, что при такой реализации длина особей-потомков могут как уменьшаться, так и увеличиваться.
- Свободный вертикальный кроссинговер представлен на рис. 25.8 и выполняется следующим образом. Для каждой строки (входного набора) родительських двоичных таблиц определяется своя точка скрещивания . Затем каждая пара строк (двоичных входных наборов) обменивается подстроками после точки скрещивания , что показано на рис. 25.8. Отметим, что данная модификация является обобщением приведенного ранее вертикального кроссинговера (рис. 25.7).
-
Однородный кроссинговер отличается от предыдущих видов. Здесь каждый ген потомка создается путем копирования соответствующего гена из первого или второго родителя, то есть каждая позиция потенциально является точкой кроссинговера. Для этого случайным образом генерируется двоичная маска кроссинговера той же длины (с тем числом бит), что у хромосом родителей.
Четность бита маски показывает родителя, из которого копируется ген потомка. Для определенности допустим, что 1 соответствует первому родителю, а 0 - второму. На рис. 25.9 показана схема выполнения этого типа кроссинговера на конкретном примере. Каждый бит потомка копируется из 1-го или 2-го родителя в соответствии со значением этого бита маски.
Таким образом, здесь потомок содержит смесь генов из каждого родителя.
- Структурный кроссинговер фактически является обобщением вертикального кроссинговера, в котором обмен между родителями производится столбцами. Здесь обмен также производится столбцами, соответствующими одной древовидной подсхеме. Предварительно схема должна быть разбита на древовидные подсхемы. Входы, которые "питают" одну древовидную подсхему, относятся к одной и той же группе. Здесь обмен производится группами столбцов, соответствующих одной и той же древовидной подсхеме. Отметим, что при таком подходе в оду группу попадают входы, определяющие значения внутренних "узловых" точек схемы, константные неисправности на которых входят в минимальное множество контрольных точек наряду с внешними входами. Поэтому здесь обмен производится более направленно для внутренних линий схемы, что повышает эффективность поиска тестовых последовательностей.
Итак, скрещивание реализуется в виде приведенных независимых операций скрещивания, выбор в процессе работы, между которыми, происходит с вероятностью , где значения подбираются экспериментально и .
Далее, как обычно к полученным потомкам применяются операторы мутации. Здесь также производится выбор одной из возможных операций:
- удаление одного входного вектора из случайно выбранной позиции. Применение данной операции позволяет уменьшать длину генерируемой тестовой последовательности в том случае, когда удалённый вектор не ухудшает тестовые свойства последовательности;
- добавление одного входного вектора в случайную позицию, что также позволяет расширять поиск возможных решений;
- случайная замена битов в тестовой последовательности.
Выбор между тремя операторами мутации также производится случайно с вероятностями и с распределением .