Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Скобцовы Моделирование и тестирование

.pdf
Скачиваний:
97
Добавлен:
03.03.2016
Размер:
3.61 Mб
Скачать

устройство неисправно. В противном случае заданная неисправность f в

нем отсутствует.

Вначале полагаем тестовую последовательность T1 пустой. Пусть на первом шаге начальное состояние равно исходному состоянию

неисправного перехода Sb и T1= X f . Очевидно, что при подаче T1 на

неисправное устройство, находящееся в исходном состоянии неисправного

перехода, возникает вход-выходная последовательность U f , что является

признаком обнаружения данной неисправности. Следовательно, на первом

шаге T1 является тестовой последовательностью для заданной неисправности f.

Предположим, что на k-м шаге мы уже имеем последовательность

Tk , которая обнаруживает неисправность f для множества начальных состояний ST ={ S1 ,…, Sk } устройства A. То есть, для данных начальных состояний в соответствующих вход-выходных последовательностях встречается последовательность U f . Возьмем в качестве начального

состояния любое еще не рассмотренное состояние Sk+1 . Подав

последовательность Tk , мы можем получить следующие случаи:

− в соответствующей вход-выходной последовательности встречается

подпоследовательность U f ;

 

 

− в

соответствующей

вход-выходной

последовательности

подпоследовательность U f не встречается.

Очевидно, что в первом случае неисправность обнаруживается последовательностью Tk для начальных состояний ST ={ S1 ,…, Sk , Sk+1 }.

Во втором случае Tk не обнаруживает неисправность для состояния Sk+1 .

Поэтому необходимо построить новую последовательность Tk +1, которая была бы тестовой для начальных состояний S1 ,…, Sk , Sk+1 . Очевидно, что последовательность Tk +1 имеет в качестве префикса последовательность

341

Tk для того, чтобы новая последовательность Tk +1 была тестом для уже

рассмотренных состояний S1 ,…, Sk . Сначала полагаем Tk +1 равной Tk и

подаем ее на ДУ Af, находящемся в состоянии Sk+1 . При этом неисправное ДУ перейдет в некоторое состояние S*. Если S*≠Sb, то строим последовательность Xt, переводящую неисправное ДУ из состояния S* в Sb

и полагаем Tk +1 =Tk +1 +Xt. Если подать данную последовательность Tk +1 на неисправное устройство, то оно перейдет в исходное состояние

неисправного

перехода

Sb.

В

результате

подачи

входной

последовательности X f

при наличии неисправности f

по построению

возникает квазиуникальная вход-выходная

последовательность U f .

Следовательно,

Tk +1=Tk +Xt+ X f

является

тестовой

для

множества

начальных состояний ST

={ S1 ,…, Sk ,

Sk+1 }. Выбирая

далее еще не

рассмотренные начальные состояния и выполняя для них циклически вышеописанные операции, мы в результате получим тестовую последовательность T.

На основании выше сказанного предлагается следующий алгоритм построения тестов для функциональных ОП-неисправностей.

1.Положить текущее начальное состояние S=Sb. Положить множество тестируемых состояний ST ={ Sb }.

2.Положить последовательность T = X f .

3.Подать на входы ДУ с начальным состоянием S входную последовательность T.

4.Если в соответствующей вход-выходной последовательности

встречается квазиуникальная последовательность U f , то для состояния S

неисправность f проверяется последовательностью T. Перейти на шаг 10.

5. В результате моделирования ДУ на последовательности T определить

его конечное состояние S*.

342

6. Если S*≠Sb, то построить последовательность Xt и положить T = T +

Xt.

7.T = T + X f .

8.Множество тестируемых состояний ST = ST {S}.

9.Если есть еще нерассмотренные начальные состояния, то выбрать одно из них и присвоить его переменной S и перейти на шаг 3. Иначе перейти на шаг 10.

10.T - искомая тестовая последовательность. Конец.

Врезультате работы этого алгоритма мы получим последовательность, проверяющую наличие неисправности f в

последовательностном устройстве A независимо от его начального состояния.

343

8.ЭВОЛЮЦИОННЫЕ МЕТОДЫ ПОСТРОЕНИЯ ПРОВЕРЯЮЩИХ ТЕСТОВ

Для повышения уровня интеллектаи эффективности современных САПР компьютерных систем, расширения их возможностей применяются различные методы искусственного интеллекта. Одним из самых перспективных направлений является использование эволюционных вычислений.

Особенности идей теории эволюции и самоорганизации заключаются в том, что они находят свое подтверждение не только для биологических систем, успешно развивающихся многие миллиарды лет. В настоящее время бурно развивается новое направление в теории и практике искусственного интеллекта эволюционные вычисления термин, обычно используемый для общего описания алгоритмов поиска, оптимизации или обучения, основанных на некоторых формализованных принципах естественного эволюционного отбора. Эволюционные вычисления используют различные модели эволюционного процесса. Среди них можно выделить следующие основные парадигмы:

1.генетические алгоритмы;

2.эволюционные стратегии;

3.эволюционное программирование;

4.генетическое программирование.

Отличаются они, в основном, способом представления искомых решений и различным набором используемых в процессе моделирования эволюции операторов. Отметим, что в настоящее время все парадигмы используются при генерации тестов цифровых систем.

344

8.1 Простой генетический алгоритм в генерации тестов комбинационных схем

Генетические алгоритмы (ГА) [105], являясь одной из парадигм эволюционных вычислений, представляют собой алгоритмы поиска, построенные на принципах, сходных с принципами естественного отбора. Эти принципы основаны на следующих механизмах эволюции.

1.Первый принцип ГА основан на концепции выживания сильнейших

иестественного отбора по Дарвину, которая была сформулирована им в 1859 г. в книге "Происхождение видов путем естественного отбора". Согласно Дарвину особи, которые лучше способны решать задачи в своей среде, выживают и больше размножаются (репродуцируют). В ГА каждая особь представляет собой некоторое решение данной проблемы (например, поиска экстремума функции). По аналогии с этим принципом потомки с лучшими значениями целевой (фитнесс) функции имеют большие шансы выжить и репродуцировать.

2.Второй принцип ГА обусловлен тем фактом, что хромосома потомка состоит из частей, получаемых из хромосом родителей. Этот важнейший принцип был открыт в 1865 г. Менделем.

3.Третий принцип, используемый ГА, основан на концепции мутации, открытой в 1900 г. de Vries. Первоначально этот термин использовался для описания существенных (резких) изменений свойств потомков и приобретение ими свойств, отсутствующих у их родителей. По аналогии с этим принципом ГА используют подобный механизм для изменения свойств потомков и тем самым, повышая разнообразие (изменчивость) особей в популяции (множестве решений).

Эти три принципа составляют ядро ГА. В соответствии с ними простой ГА использует три основных оператора: репродукция, кроссинговер, мутация. При репродукции хромосомы копируются согласно их значениям ЦФ. Копирование лучших хромосом с большими значениями

345

ЦФ определяет большую вероятность их попадания в следующую генерацию. Оператор репродукции реализует принцип выживания сильнейшихпо Дарвину.

Самый простой (и популярный) метод реализации ОР построение асимметричного колеса рулетки, в которой каждая хромосома имеет сектор, пропорциональный ее значению ЦФ. Например, "колесо рулетки" имеет следующий вид, представленный на рис.8.1.

14%

31%

1

4

3 2

6%

49%

Рис.8.1. Оператор репродукции в виде рулетки

Для селекции хромосом используется случайный поиск на основе колеса рулетки. При этом колесо рулетки вращается и после останова ее указатель определяет хромосому для селекции в промежуточную популяцию. Очевидно, что хромосома, которой соответствует больший сектор рулетки, имеет большую вероятность попасть в следующее поколение. В результате выполнения оператора репродукции из текущей популяции формируется промежуточная популяция, хромосомы которой будут использованы для построения поколения с помощью операторов (кроссинговера) скрещивания и мутации.

Оператор кроссинговера (ОК) обычно выполняется в три этапа:

1. Два стринга (хромосомы, особи) A = a1a2 ...an и B = b1b2 ...bn

выбираются случайно из промежуточной популяции после репродукции; 2. Выбирается также случайно точка кроссинговера k (1 ≤ k < n );

346

3. Хромосомы A и B обмениваются частями после k-й позиции и производят два новых стринга A' = a1a2 ...ak bk +1...bn и B' = b1b2 ...bk ak +1...an .

Например, для родительских особей

A=1001|11001, B=0110|10010

При точке кроссинговера k=4 получаем следующие особи потомки

~

~

=0110|11001.

A =1001|10010,

B

Следует отметить, что для отобранных родительских особей оператор кроссинговера выполняется с некоторой заданной вероятностью Pk (обычно Pk ≈ 0,5). То есть, отобранные родители не всегда дают потомство.

Оператор мутации (ОМ) случайным образом (с небольшой вероятностью Pm ≈ 0.001) изменяет произвольный ген (элемент) стринга.

Используя эти три основные оператора, популяция (множество потенциальных решений данной проблемы) эволюционирует от поколения к поколению. Эволюция такой искусственной популяции представлена на рис.8.2.

Таким образом, генетические алгоритмы используют случайный направленный поиск для построения (суб)оптимального решения данной проблемы. При этом направленный случайный поиск моделирует процесс естественной эволюции. Каждое решение задачи (особь) представляется хромосомой стрингом элементов (генов). Классический простойгенетический алгоритм [105] использует двоичные стринги строки из двоичных элементов 0,1 (например, 0011101), что делает его привлекательным для задач генерации проверяющих тестов логических схем, где решение представляется в виде двоичных наборов или их последовательностей, которые в данном случае рассматриваются как особи популяции множества возможных решений. На множестве решений определяется целевая (fitness) функция (ЦФ), которая позволяет оценить

347

близость каждой особи к оптимальному решению. В случае задачи генерации тестов ЦФ прямо или косвенно должна отражать такие свойства двоичных наборов или последовательностей как число проверяемых неисправностей или изменений сигналов в схеме.

Создание исходной популяции

Выбор родителей для процесса размножения (работает

оператор селекции - репродукции)

Создание потомков выбранных пар родителей (работает

оператор скрещивания - кроссинговера)

Мутация новых особей (работает оператор мутации)

Расширение популяции за счет добавления новых только что

порожденных особей

Сокращение расширенной популяции до исходного размера

(работает оператор редукции - репродукции)

нет

Критерий останова работы

алгоритма выполнен?

да

Поиск лучшей достигнутой особи в конечной популяции. Результат работы алгоритма.

Рис.8.2 Простой генетический алгоритм

Таким образом, чтобы задать генетический алгоритм, необходимо определить понятия особи, популяции, операторов скрещивания и мутации, задать оценочную функцию. Очевидно также, что эффективность

348

генетического алгоритма зависит от целого ряда параметров: размера популяции, метода выбора особей из предыдущей популяции, скрещивания и мутации, вероятностей выполнения операторов кроссинговера и мутации, а также вида оценочной функции.

Рассмотрим простейший случай использования ГА для генерации тестов комбинационных схем. Очевидно, особью (хромосомой) в данном случае является отдельный двоичный набор значений входных переменных схемы. Популяцией является множество наборов, составляющих проверяющий тест схемы. В качестве целевой (fitness) функции пока для простоты (условно) для каждого двоичного набора будем считать число проверяемых им неисправностей. Следует подчеркнуть, что значение ЦФ определяется с помощью программы логического моделирования, которая является важнейшей компонентой этого метода. Детально различные варианты ЦФ будут рассмотрены в разделе 8.4.

На шаге 1 алгоритма (рис.8.2) в простейшем случае случайным образом генерируется множество двоичных наборов исходная популяция. Далее на шаге 2 выбираются в некотором случае лучшие особи-родители в промежуточную популяцию. На шаге 3 с вероятностью Pc путем применения классического оператора кроссинговера генерируются особи- потомки (двоичные наборы), которые далее на шаге 4 изменяются с вероятностью Pm с помощью классического оператора мутации. Вновь полученные двоичные наборы пополняют промежуточную популяцию, что отражено шагом 5 алгоритма. Таким образом, после шага 5 промежуточная популяция содержит как родительские особи, так и их потомки. Поскольку мощность популяции обычно поддерживают постоянной (она является одним из важнейших параметров алгоритмов), на шаге 5 в популяции оставляются в некотором смысле лучшие особи. В качестве критерия останова на шаге 6 в простейшем случае используется число выполненных итераций поколений алгоритма. Результатом работы

349

ГА на шаге 7 является текущая популяция множество двоичных наборов, которые составляют проверяющий тест. Как видно из приведенного алгоритма, использование ГА при генерации проверяющих тестов является естественным развитием псевдослучайных методов генерации тестов.

Мы пока рассмотрели простой (или классический) генетический алгоритм и возможности его применения в задачах генерации тестов. В настоящее время существует множество различных модификаций и обобщений ГА. По каждому из пунктов базового ГА, представленного на рис.8.2 возможны различные стратегии и варианты реализации, некоторые из которых изложены ниже.

8.2Модификации и обобщения ГА

Внастоящее время предложены многочисленные модификации и обобщения ГА [106], в которых: 1) разработаны различные варианты реализации каждого этапа классического ГА; 2) существенно изменена структура алгоритма. Среди первой группы можно выделить различные методы отбора родителей (пропорциональный, турнирный, локальный, ранжирование и т.д.), сокращения популяции (элитарный, случайный, пропорциональный, селекционный и т.д.). Разработаны различные генетические операторы кроссинговера двоичных (одноточечный, многоточечный, однородный) и действительных значений (дискретная, промежуточная, линейная рекомбинация), мутации (однородная и неоднородная для двоичных и вещественных значений). Среди второй группы можно отметить ГА с динамически изменяемой мощностью популяции (различные стратегии выбора срока жизни особи), адаптивные ГА с подстраиваемыми параметрами (вероятности кроссинговера и мутации), параллельные алгоритмы (модель островов, глобальная модель рабочий-хозяин, диффузионная модель), иерархические (многоуровневые) ГА.

350