Для повышения уровня "интеллекта" и эффективности современных САПР компьютерных систем, расширения их возможностей применяются различные методы искусственного интеллекта. Одним из самых перспективных направлений является использование эволюционных вычислений.
Особенности идей теории эволюции и
Отличаются они, в основном, способом представления искомых решений и различным набором используемых в процессе моделирования эволюции операторов. Отметим, что в настоящее время все парадигмы используются при генерации тестов цифровых систем.
В соответствии с ними простой ГА использует три основных оператора: репродукция, кроссинговер, мутация.
При репродукции
Самый простой (и популярный) метод реализации ОР - построение асимметричного колеса рулетки, в которой каждая хромосома имеет сектор, пропорциональный ее значению ЦФ. Например, "колесо рулетки" имеет следующий вид, представленный на рис. 25.1.
(рис 25.1) Оператор репродукции в виде рулетки
Для селекции хромосом используется случайный поиск на основе колеса рулетки.
При этом колесо рулетки вращается и после останова ее указатель определяет хромосому для селекции в промежуточную популяцию. Очевидно, что хромосома, которой соответствует больший сектор рулетки, имеет большую вероятность попасть в следующее поколение.
В результате выполнения оператора репродукции из текущей популяции формируется промежуточная популяция,
Оператор кроссинговера (ОК) обычно выполняется в три этапа:
Например, для родительских особей
$$A=1001 11001$$, $$B=0110 10010$$
При точке кроссинговера $$k=4$$ получаем следующие особи - потомки
$$\tilde{A}=1001 10010, \tilde{B}=0110 11001$$.
Следует отметить, что для отобранных родительских особей оператор кроссинговера выполняется с некоторой заданной вероятностью $$P_{k}$$ (обычно $$P_{k} \approx 0.5$$). То есть отобранные родители не всегда дают потомство.
Оператор
Используя эти три основные оператора, популяция (множество потенциальных решений данной проблемы) эволюционирует от поколения к поколению. Эволюция такой искусственной популяции представлена на рис. 25.2.
(рис 25.2) Простой генетический алгоритм
Таким образом, чтобы задать
Классический "простой"
Рассмотрим простейший случай использования ГА для генерации тестов комбинационных схем[25.3]. Очевидно, особью (хромосомой) в данном случае является отдельный двоичный набор
значений входных переменных $$X=(x_{1},x_{2},…, x_{n},)$$, где $$x_{i}=0,1$$ и $$n$$ равно числу входов схемы. Популяцией является множество наборов, составляющих проверяющий тест схемы. Обычно число особей в популяции пропорционально числу входов (например, $$3n$$ ) В качестве целевой (fitness) функции пока для простоты (условно) для каждого двоичного набора будем считать число проверяемых им неисправностей. Следует подчеркнуть, что значение ЦФ определяется с помощью программы
При инициализации популяция входных векторов генерируется случайным образом. Для нашего примера рис. 25.3 начальная популяция (построенная случайно) представлена в первом столбце табл. 25.2. Во втором столбце для каждой особи - набора показаны проверяемые им одиночные константные неисправности. Очевидно, что входной набор, проверяющий большее количество неисправностей, должен иметь больше шансов попасть в тестовое множество.
Поэтому на начальном этапе в качестве фитнеcc-функции можно взять $$h=F_{d}*s$$, где $$F_{d}$$ - число (вновь) проверяемых неисправностей и $$s$$ - "премия" за каждую проверенную неисправность (в нашем примере $$s=10$$). В реальной системе генерации тестов $$F_{d }$$определяется с помощью моделирования неисправностей. Очевидно, лучший входной набор (011 или 101) с максимальным значением фитнеcc-функции $$h=F_{d}*s$$ должен быть включен в тест. Пусть для определенности это будет набор (101). Далее для генерации популяции следующего поколения необходимо применить генетические операторы кроссинговера и
(рис 25.3) Комбинационная схема для построения теста с использованием ГА
| $$X_{1}$$ | $$X_{2}$$ | $$X_{3}$$ | $$X_{4}$$ | $$X_{5}$$ | $$X_{6}$$ |
|---|---|---|---|---|---|
| 0 | 0 | 0 | 1 | 1 | 1 |
| 0 | 0 | 1 | 1 | 1 | 1 |
| 0 | 1 | 0 | 1 | 1 | 1 |
| 0 | 1 | 1 | 1 | 0 | 0 |
| 1 | 0 | 0 | 1 | 1 | 1 |
| 1 | 0 | 1 | 1 | 0 | 0 |
| 1 | 1 | 0 | 0 | 1 | 0 |
| 1 | 1 | 1 | 0 | 1 | 0 |
| Входной набор $$(x_{1}, x_{2}, x_{3})$$ | Проверяемые неисправности | Значение фитнесс-функции $$h= F_{n} *r$$ |
|---|---|---|
| 000 | $$x_{4 }= 0, x_{5 }=0, x_{6}=0$$ | $$3*10$$ |
| 011 | $$x_{2}=0, x_{3}=0, x_{5 }=1, x_{6}=1$$ | $$4*10$$ |
| 101 | $$x_{2}=1, x_{4}=0, x_{5 }=0, x_{6}=0$$ | $$4*10$$ |
| 111 | $$x_{6}=1$$ | $$1*10$$ |
При одноточечном кроссинговере случайно выбирается точка скрещивания с вероятностью $$P\approx 0.5$$ и производится обмен фрагментами хромосом после точки скрещивания. Например, для двух родительских особей (0Ѕ11) (1Ѕ01) с точкой к=1 получаем два потомка - наборы (0Ѕ01) (1Ѕ11).
При двухточечном кроссинговере потомки наследуют фрагменты хромосом родителей между двумя случайно выбранными точками скрещивания, как это показано, например, на рис. 25.4.
(рис 25.4) Пример двухточечного кроссинговера
После выполнения операторов кроссинговера полученные потомки с вероятностью $$P_{m}$$ подвергаются
Каждую особь популяции нового поколения необходимо оценить с помощью фитнесс-функции, которая в общем случае (кроме начальной популяции) должна в первую очередь учитывать число вновь проверенных данным набором неисправностей. Допустим, что после второго шага в текущее тестовое множество включены два входных набора (101,011), которые проверяют (и не проверяют неисправности, показанные в табл. 25.3) и текущая популяция входных наборов (кандидатов на включение в тест) представлена в табл. 25.4.
| Тестовое множество | Проверенные неисправности | Непроверенные неисправности текущим тестом |
|---|---|---|
| 101 | $$ x_{2}\equiv 1, x_{4}\equiv 0,\\ x_{5}\equiv 0, x_{6}\equiv 0$$ | $$ X_{1}\equiv 0, x_{1}\equiv 1,\\ x_{2}\equiv 0, x_{3}\equiv 0,\\ x_{3}\equiv 1, x_{4}\equiv 0,\\ x_{4}\equiv 1, x_{5}\equiv 1,\\ x_{6}\equiv 1$$ |
| 011 | $$ x_{2}\equiv 0, x_{3}\equiv 0,\\ x_{5}\equiv 1, x_{6}\equiv 1$$ | $$ X_{1}\equiv 0, x_{1}\equiv 1,\\ x_{3}\equiv 1, x_{4}\equiv 1$$ |
| Входной набор $$(x_{1}, x_{2}, x_{3})$$ | Проверяемые неисправности | Значение фитнесс-функции $$h= F_{d} *s+ F_{n} *r$$ |
|---|---|---|
| 000 | $$ x_{4}\equiv 0, x_{5}\equiv 0, \\ x_{6}\equiv 0$$ | $$0*10+3*1=3$$ |
| 001 | $$ x_{2}\equiv 1, x_{4}\equiv 0,\\ x_{5}\equiv 0, x_{6}\equiv 0$$ | $$0*10+3*4=4$$ |
| 100 | $$ x_{2}\equiv 1, x_{4}\equiv 0, x_{5}\equiv 0, x_{6}\equiv 0$$ | $$0*10+3*4=4$$ |
| 110 | $$ x_{1}\equiv 0, x_{2}\equiv 0,\\ x_{4}\equiv 1, x_{6}\equiv 1$$ | $$2*10+2*1=22$$ |
| Тестовое множество | Проверенные неисправности | Непроверенные неисправности текущим тестом |
|---|---|---|
| 101 | $$ x_{2}\equiv 1,\\ x_{4}\equiv 0,\\ x_{5}\equiv 0,\\ x_{6}\equiv 0$$ | $$ X_{1}\equiv 0, x_{1}\equiv 1, \\ x_{2}\equiv 0, x_{3}\equiv 0,\\ x_{3}\equiv 1, x_{4}\equiv 0,\\ x_{4}\equiv 1, x_{5}\equiv 1,\\ x_{6}\equiv 1$$ |
| 011 | $$ x_{2}\equiv 0,\\ x_{3}\equiv 0,\\ x_{5}\equiv 1,\\ x_{6}\equiv 1$$ | $$ X_{1}\equiv 0, \\ x_{1}\equiv 1, \\ x_{3}\equiv 1, \\ x_{4}\equiv 1$$ |
| 110 | $$ x_{1}\equiv 0,\\ x_{4}\equiv 1$$ | $$ x_{1}\equiv 1, \\ x_{3}\equiv 1$$ |
Заметим, что далее мы используем фитнесс-функцию $$h= F_{d}*s+ F_{n}*r$$ , где $$F_{n}$$ - число вновь проверенных неисправностей и $$F_{d}$$ - число ранее проверенных неисправностей $$s$$ соответствующим
Аналогично можно показать, что на следующем шаге тестовый набор (010) должен быть включен в тест, поскольку он проверяет последнии непроверенные неисправности $$x_{1}\equiv 1, x_{3}\equiv 1$$. Укрупненный
Здесь на этапе инициализации генерируется множество неисправностей, и выполняются другие вспомогательные операции. Обычно наборы начальной популяции генерируются случайным образом, но если априорная доступная информация о хороших кандидатах в тест, то она может быть использована.
Оценка значений фитнесс-функции выполняется на основе данных
(рис 25.5) Псевдокод генетического алгоритма генерации тестов для комбинационных схем
В следующем разделе мы рассмотрим глобальный подход к использованию ГА в генерации теста для последовательностных схем, где особь представляет всю тестовую последовательность, а не один входной набор.
Использование ГА при генерации проверяющих тестов является естественным развитием псевдослучайных методов генерации тестов. Одним из первых применений ГА в технической диагностике цифровых схем (ЦС) является построение на их основе генераторов тестовых последовательностей. Суть задачи заключается в поиске двоичной входной последовательности, которая для каждой неисправности из заданного множества дает различные выходные значения сигналов в исправной и неисправной схемах. Как правило, рассматриваются одиночные константные неисправности.
Поскольку значения сигналов внешних выходов при функционировании ЦС данного типа зависят не только от значений сигналов на его внешних входах, а и от состояний триггеров, то при генерации тестов таких ЦС с применением ГА в качестве особи используется тестовая последовательность, которая представляется двоичной таблицей (рис. 2.8 а). Число столбцов таблицы определяется числом входов схемы, а число строк - длиной тестовой последовательности. Популяция состоит из фиксированного числа тестовых последовательностей, возможно, различной длины (рис. 2.8 б). Для выбранного таким образом представления особей и популяций применяются генетические операторы скрещивания и
(рис 25.6) Кодирование особей и популяций в ГА
При генерации тестов для последовательностных схем в качестве особи используется тестовая последовательность (рис. 2.9 а). Популяция состоит из фиксированного числа тестовых последовательностей, возможно, различной длины (рис. 2.9 б). Для выбранного таким образом представления особей и популяций разработаны проблемно ориентированные генетические операторы.
(рис 25.7) Операции горизонтального и вертикального скрещивания ГА
(рис 25.8) Свободный вертикальный кроссинговер
(рис 25.9) Однородный кроссинговер
Таким образом, здесь потомок содержит смесь генов из каждого родителя.
Итак, скрещивание реализуется в виде приведенных независимых операций скрещивания, выбор в процессе работы, между которыми, происходит с вероятностью $$P_{1}, P_{2},…, P_{6}$$, где значения $$P_{i }$$подбираются экспериментально и $$P_{1}+ P_{2}+ P_{3}+ P_{4}+ P_5+P_6=1$$.
Далее, как обычно к полученным потомкам применяются операторы мутации. Здесь также производится выбор одной из возможных операций:
Выбор между тремя операторами
Поскольку целью генерации тестов является построение последовательности, на которой максимально отличаются значения сигналов в исправной и неисправной схемах, то качество тестовой последовательности (fitness-функция) оценивается как мера отличия значений сигналов в исправной и неисправной схемах. В программных системах генерации тестов используются различные fitness-функции, зависящие от следующих основных параметров, которые приведены в табл. 25.6.
| $$N$$ | Число узлов в схеме |
|---|---|
| $$N_{d}$$ | Число узлов, имеющих различные значения сигналов в исправной и неисправной схемах |
| $$T$$ | Число триггеров в схеме |
| $$T_{d}$$ | Число триггеров, изменивших состояние |
| $$E$$ | Число событий в исправной и неисправной схеме |
| $$L$$ | Длина тестовой последовательности |
| $$F$$ | Число неисправностей в схеме |
| $$F_{d}$$ | Число проверенных неисправностей |
| $$F_{dt}$$ | Число неисправностей, активизированных до триггеров |
| $$D$$ | Обнаруживаемость неисправности |
| $$W$$ | Мощность последовательности |
| $$O$$ | Наблюдаемость триггеров |
| $$E_{f}$$ | Число событий в неисправной схеме |
| $$T_{s}$$ | Число трудно устанавливаемых триггеров |
Помимо них характеристики алгоритмов генерации тестов существенно зависят от стандартных параметров ГА таких как мощность популяции, вероятности репродукции, кроссинговера и
В системе CRIS [25.6] используется техника иерархического моделирования, сокращающая затраты памяти и позволяющая обрабатывать схемы большой размерности. Здесь применяется традиционный ГА, в котором популяции эволюционируют посредством операторов
Система GATEST [25.4] ориентирована на последовательностные логические схемы и основана на двухуровневом ГА: на нижнем уровне с помощью ГА строятся входные наборы, а далее ГА применяется для генерации входных последовательностей на основе полученных наборов. Соответственно, на нижнем уровне особью является входной вектор, а на верхнем - входная последовательность. В ГА применяются различные виды операторов кроссинговера: одноточечный, двухточечный, однородный. Первый уровень в свою очередь подразделяется на три фазы. Таким образом, в целом, метод образуют четыре фазы, которые определяют соответствующие различные оценочные функции:
В фазах 2-4 оценка особей выполняется с помощью моделирования неисправностей, что несколько замедляет работу GATEST. Система успешно применялась к последовательностным устройствам достаточно большой размерности и строила тесты в тех случаях, где детерминированный метод HITEC [25.1] не мог построить тесты. К недостаткам можно также отнести то, что разработчики вручную подбирают многие параметры ГА, включая размерность алфавита, размер популяции, уровень
Интересным является подход, представленный в работе [25.7] системой DIGATE. Он состоит из двух фаз:
В качестве особей, очевидно, используются входные последовательности. Оценка выполняется моделированием неисправностей, при этом оценочные функции представляют собой взвешенные суммы. Соответственно для фазы 1 и 2 оценочные функции имеют следующий вид:
$$ h_5=0.2D+0.7(W+O)+0.1(E_f+T_s+T_d),\\ h_6=0.8D+0.1(W+O)+0.1(E_f+T_s+T_d)$$Весовые коэффициенты подобраны разработчиками эвристически для каждой фазы, однако, они универсальны для произвольной схемы. Этим рассмотренный метод выгодно отличается от систем, рассмотренных ранее.
В другой системе [25.5] GATTO в качестве особей также выбраны входные последовательности. Основное внимание авторы алгоритма уделяют определению эффективной оценочной функции, как меры удаленности особи от искомого оптимума. Особи оцениваются с помощью моделирования неисправностей из соображений увеличения активности неисправности в схеме (чем больше количество линий, на которых значения в исправной и неисправной схемах различны, тем больше вероятность обнаружения неисправности). Поэтому оценочная функция определяется тремя эвристическими параметрами: взвешенное количество вентилей с разными значениями в исправном и неисправном устройствах; взвешенное количество триггеров с разными значениями в исправном и неисправном устройствах; длина последовательности-особи, параметр $$L$$ используется для получения компактной тестовой последовательности. В качестве весов первых двух параметров используются соответствующие значения наблюдаемости. Таким образом, оценочная функция есть $$h_7=\max_s{L^i*h(v_i)}$$, где $$s$$ - особь-последовательность, $$v_i $$ - $$i$$-й вектор последовательности, $$h(v_i)$$ - сумма нормализованных первых двух параметров.
В этом подходе, также как и в предыдущем, отсутствует ручной подбор параметров для отдельной схемы.
В системе АСМИД-Е [25.1] для повышения быстродействия алгоритма построения тестов в программную реализацию интегрированы две программы параллельного моделирования с неисправностями. Первая программа реализует параллельный по неисправностям метод моделирования и используется в фазе 1 для проверки активизации произвольной неисправности случайно генерированной последовательностью.
Для вычисления оценочной функции используется вторая программа моделирования с неисправностями, реализующая алгоритм "параллельного моделирования по
где $$s$$ - анализируемая последовательность; $$v_i$$ - вектор из рассматриваемой последовательности, $$i$$ - позиция вектора в последовательности, $$f$$ - заданная неисправность, $$LH$$ - предварительно заданная константа в диапазоне $$0<LH\le 1$$, благодаря которой предпочтение отдаётся более коротким последовательностям. Применение данного алгоритма существенно повышает скорость вычисления оценочных функций особей в популяции, а, следовательно, и скорость работы алгоритма в целом.
Наиболее эффективным является метод построения тестов, объединяющий преимущества структурного детерминированного и генетического алгоритмов генерации. При этом этапы внесения влияния неисправности и активизации путей до внешних выходов схемы выполняется
Общий подход к тестированию заключается в следующем. Процесс генерации тестов содержит три фазы. Цель первой фазы - активизация неисправности, т.е. распространение рассогласования сигнала на псевдовыходы. На начальном этапе, когда необходимо как можно быстрее активизировать и проверить большее число неисправностей, используется псевдослучайный метод генерации тестовых последовательностей. На втором этапе для повышения эффективности процесса активизации неисправностей используется
В данном алгоритме каждая особь представляет тестовую последовательность, длина которой заранее не известна и не ограничена
(рис. 25.6 а.). Она состоит из векторов, каждый бит которых соответствует входу схемы.
В свою очередь популяция состоит из заранее заданного числа особей (рис. 25.6 б).). Одной из главных задач при построении
(рис 25.10) Генетический алгоритм генерации тестовых наборов
Качество тестовой последовательности оценивается как мера отличия значений сигналов в исправной и неисправной схемах. Эта оценка основывается на предположении о том, что, чем выше активность в неисправной схеме производит неисправность, тем легче она может быть обнаружена. Оценочная функция последовательности для фиксированной неисправности вычисляется из оценочных функций всех её векторов по формуле:
$$ H(s,f)=\sum\limits_{i=1}^{i=длина}{L^i*h(v_i,f)}$$где $$s$$ - анализируемая последовательность; $$v_{i}$$ - вектор из рассматриваемой последовательности, $$i$$ - позиция вектора в последовательности, $$f$$ - заданная неисправность, $$L$$ - предварительно заданная константа в диапазоне $$0<L\le 1$$, благодаря которой предпочтение отдаётся более коротким последовательностям. Здесь оценочная функция одного вектора из последовательности имеет вид:
$$f_{1}(v,f)+c_1\cdot f_{2}(v,f)$$где $$с_{1}$$ константа нормирования, равная отношению числа вентилей схемы к числу триггеров; $$f_{1}(v,f)$$ и $$f_{2}(v,f) $$ эвристические функции, определяющие:
В качестве веса выбирается мера наблюдаемости элемента схемы, вычисляемая на этапе предварительной обработки схемы. В алгоритме используется виды скрещивания, описанные выше, выбор между которыми производится случайно При горизонтальном скрещивании случайным образом в последовательностях-родителях выбираются точки разреза $$x_{1}$$ и $$x_{2}$$. Первый потомок получается соединением векторов первого родителя от начала последовательности до точки деления $$x_{1}$$ и второго родителя от точки деления $$x_{2}$$ до конца последовательности. Второй потомок получается аналогично при перемене мест первого и второго родителя. Вертикальное скрещивание производится не по наборам теста, а по входным сигналам схемы. Для получения потомка необходимо взять первый столбец из таблицы - теста первого родителя и случайным образом определить, будет ли он столбцом первого или второго потомка. Легко заметить, что при горизонтальном пересечении длина последовательностей-особей может, как уменьшаться, так и увеличиваться, тогда, как при вертикальном скрещивании длина обоих потомков станет равной длине большего из родителей. При этом все "пустоты", получаемые из-за разности длин заполняются случайными битами.
Механизм
Остановимся теперь подробнее на фазах алгоритма. Целью 1-й фазы является определение неисправности, которая может быть активизирована. При этом значения сигналов в присутствии неисправности, отличные от значений исправной схемы, могут быть распространены на внешние псевдовыходы. Для этого производится моделирование неисправностей для нескольких последовательностей. После этого выбирается лучшая из последовательностей. Если она активизировала какую-либо неисправность, то эта неисправность выбирается в качестве целевой неисправности и происходит переход во вторую фазу алгоритма. В начале работы алгоритма в качестве лучшей последовательности выбирается та, которая обнаружила больше неисправностей. При этом, за несколько проходов моделирования строится тест для большинства легко тестируемых неисправностей. На более поздних этапах в качестве лучшей последовательности выбирается та, которая активизировала наибольшее число неисправностей или произвела наибольшую активность сигналов (изменений) в схеме. Для
этой цели также используется
Целью 2-й фазы является улучшение активизирующей последовательность таким образом, чтобы она стала проверяющей для целевой неисправности. Эта фаза является ключевой в алгоритме. Её псевдокод приведён на рис. 25.11. Здесь $$P$$ - текущая популяция, которая в начальный момент инициализируется особями из фазы 1 алгоритма, $$newP $$- следующее поколение, $$s$$ - две новых последовательности, получаемых в результате операции скрещивания. Вычисление новых популяций производится ограниченное число раз (MAX_ПОКОЛЕНИЙ). Если за это время тестовая последовательность не найдена, то целевая неисправность отмечается, как непроверяемая и больше не может быть вновь выбрана в качестве цели
Поиск_проверяющей_последовательности(неисправность-цель)
\{
for( i=0 ; i<MAX_ПОКОЛЕНИЙ ; i++)
\{
for( каждой особи s в популяции P )
вычислить_оценку(s, f );
newP=*;
for( k=0 ; k<ЧИСЛО_НОВЫХ_ОСОБЕЙ ; k++ )
\{
выбрать_две_последовательности_в_P();
применить_операцию_скрещивания();//генерируются две особи
применить_операцию_мутации_к_s_c_вероятностью_P_{m}();
newP=newP*s;
\}
P=(лучшие MAX_ОСОБЕЙ из newP и P )
for( каждой особи s в популяции P )
if( s обнаруживает f )
return s;
\}
return( НЕТ_ПОСЛЕДОВАТЕЛЬНОСТИ )
\}
(рис 25.11) Фаза 2 алгоритма построения тестов
Если в процессе второй фазы,
В качестве вспомогательного инструмента используются программы моделирования с неисправностями. В первой программе моделирования используется параллельное по неисправностям моделирование (описанное в лекции 11).
Вторая программа моделирования неисправностей реализует алгоритм "параллельного моделирования по
Генетический алгоритм - алгоритм поиска решения, основанный на принципах, сходных с принципами естественного отбора..
Особь - потенциальное решение рассматриваемой проблемы.
Популяции - множество особей - потенциальных решений.
Кроссинговер - генетические оператор, при выполнении которого с заданной вероятностью особи обмениваются генами - частями потенциальных решений.
Мутация - генетический оператор, где с малой вероятностью случайно изменяется значение гена.
Фитнесс-функция - характеризует качество потенциального решения проблемы.
В лекции рассмотрено применение
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.