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

книги / Программирование микроконтроллеров с использованием IDE

..pdf
Скачиваний:
13
Добавлен:
12.11.2023
Размер:
13.22 Mб
Скачать

3.2. Моделирование автомата

Создаём проект в Mbed [13] и компилируем программу, далее загружаем во флэш-память контроллера (рис. 3.6).

Рис. 3.6. Загрузка программы в NUCLEO-F401RE

Используем приложение [11] (рис. 3.7).

Рис. 3.7. Приложение NUCLEO-L15

для обмена информацией платы с компьютером

Проверим реализацию таблицы переходов-выходов (см. рис. 1.23) (рис. 3.8).

Рис. 3.8. Тестирования разработанной программы

81

ПолучаемследующиеответысплатыNUCLEO-L15 (рис. 3.9, 3.10).

Рис. 3.9. Реакция на последовательность 0132

Рис. 3.10. Реакция на последовательность 0131

Проверка подтверждает правильность работы программы на всех последовательностях срабатывания датчиков.

82

Проверяем правильную последовательность уже без компьютера, на макете, имеющем ключи и светодиоды, подключенные к пла-

те NUCLEO-F401RE (рис. 3.11–3.14).

Рис. 3.11. Подаем 0 на ключах (a=0;b=0)

Рис. 3.12. Подаем 1 на ключах (a=0;b=1)

83

Рис. 3.13. Подаем 3 на ключах (a=1;b=1)

Рис. 3.14. Подаем 2 на ключах (a=1;b=1), горит z1!

84

Проверяем не правильную последовательность (рис. 3.15).

Рис. 3.15. Подаем 2 после 0 на ключах (a=1;b=0), горит z2, тревога

Все работает верно!

85

4.РЕАЛИЗАЦИЯ ГЕНЕТИЧЕСКИХ АЛГОРИТМОВ

ИПРОГРАММ ДИАГНОСТИРОВАНИЯ ЛОГИКИ ПЛИС НА БАЗЕ МИКРОКОНТРОЛЛЕРА STM32F401RE

4.1. Описание программы и алгоритма диагностирования логики ПЛИС

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

F x1, x2 , x3 0 , 1, 2 , 3 , 4 , 5 , 6 , 7

представлен в табл. 4.1.

 

 

 

 

 

 

 

Таблица 4 . 1

 

 

Общий вид модели для функции трёх переменных

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

х0 = 0

х0 = 1

х1 = 0

х1 = 1

х2 = 0

х2 = 1

х2

х1

х0

f0

f1

f2

f3

f4

f5

f6

0

0

0

0

0

1

0

2

0

4

0

0

1

1

0

1

1

3

1

5

0

1

0

2

2

3

0

2

2

6

0

1

1

3

2

3

1

3

3

7

1

0

0

4

4

5

4

6

0

4

1

0

1

5

4

5

5

7

1

5

1

1

0

6

6

7

4

6

2

6

1

1

1

7

6

7

5

7

3

7

Здесь функция f0 является оригинальной функцией. Функция f1 соответствует функции f0 при константном нуле параметра х0; f2 при константной единице параметра х0 и т.д.

Для примера, в табл. 4.2 представлена модель для функции

F x1, x2 , x3 1,1,0,0,1,0,1,1 .

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

86

 

 

 

 

 

 

 

 

 

Таблица

4 . 2

 

 

 

 

 

Пример модели

 

 

 

 

 

 

 

 

 

 

 

 

 

х1 = 0

 

 

 

 

 

 

 

 

 

х0 = 0

х0 = 1

х1 = 1

х2 = 0

х2 = 1

х2

х1

х0

f0

 

f1

f2

f3

f4

f5

 

f6

0

0

0

0

1

 

1

1

1

0

1

 

1

1

0

0

1

1

 

1

1

1

0

1

 

0

2

0

1

0

0

 

0

0

1

0

0

 

1

3

0

1

1

0

 

0

0

1

0

0

 

1

4

1

0

0

1

 

1

0

1

1

1

 

1

5

1

0

1

0

 

1

0

0

1

1

 

0

6

1

1

0

1

 

1

1

1

1

0

 

1

7

1

1

1

1

 

1

1

0

1

0

 

1

В данной работе используется промежуточное кодирование особи. Пусть l – длина последовательности, для которой осуществляется поиск. При создании особи происходит генерация диагностической последовательности длины 2n. Это максимальная длина, которая имеет смысл; при увеличении длины в последовательности будут появляться повторяющиеся входные наборы. В дальнейшем происходит отбрасывание тех значений, которые превышают l, поскольку они не участвуют вГА. Полученнаяпоследовательностькодируется.

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

Пусть p = 2n – число возможных входных наборов, а n – число входов; a0, a1, ..., al – первый уровень кодирования (код) особи (десятичные числа); b0, b1, ..., bl – второй уровень кодирования (промежуточный код) особи и m0, m1, ..., m2n 1 – дополнительная последо-

вательность M, где mk = k, k 0..2n 1.

Промежуточный код особи будет составляться следующим образом: на i-ом шаге ищется значение элемента кода ai в последовательности M. Номер этого значения, если считать с 0, записывается в качестве bi в промежуточный код. Затем число ai удаляется из последовательности M. Действия повторяются до тех пор, пока в коде есть хотя бы одно значение.

87

Декодирование проводится аналогичным образом: записывается последовательность M, i-ый элемент промежуточного кода – это номер этого числа в последовательности при счёте, начиная с 0. Элемент последовательности M, который находится под этим номером – это следующий элемент кода ai. После записи нового элемента кода, соответствующее число из последовательности M удаляется.

Рассмотрим оба преобразование на примере функции трёх переменных. Пусть код – это последовательность A = {4, 6, 1, 3}, т.е. a0 = 4, a1 = 6, a2 = 1, a3 = 3. На рис. 4.1 пошагово представлен процесс кодирования.

Код

Последовательность M

Промежуточный

 

 

 

код

4, 6, 1, 3

0, 1, 2, 3, 4, 5, 6, 7

4

 

6, 1, 3

0, 1, 2, 3, 5, 6, 7

5

4

1, 3

0, 1, 2, 3, 5, 7

1

4, 5

3

0, 2, 3, 5, 7

2

4, 5, 1

 

0, 2, 5, 7

 

4, 5, 1, 2

Рис. 4.1. Пример кодирования

В результате кодирования получена последовательность B = {4, 5, 1, 2}. На рис. 4.2 представлен процесс декодирования для этой последовательности.

Промежуточный

Последовательность M

Код

код

 

 

4, 5, 1, 2

0, 1, 2, 3, 4, 5, 6, 7

 

5, 1, 2

0, 1, 2, 3, 5, 6, 7

4

1, 2

0, 1, 2, 3, 5, 7

4, 6

2

0, 2, 3, 5, 7

4, 6, 1

 

0, 2, 5, 7

4, 6, 1, 3

Рис. 4.2. Пример декодирования

Легко заметить, что в результате декодирования была получена исходная последовательность A.

88

Функция приспособленности реализована таким образом, что чем меньше её значение, тем более приспособлена особь. Перед вычислением функции приспособленности происходит подсчёт одинаковых вырезок для функций f0 , f1, , f2n . Вырезка представляет собой по-

следовательность бит длины l , полученную в результате последовательной подачи на вход значений диагностической последовательности особи, для которой осуществляется поиск функции приспособленности. Для подсчёта вырезка хранится в виде десятичного числа. Пусть c0 ,c1, ,ch – количества повторов каждой уникальной вырезки,

где h – количество уникальных вырезок. Тогда значение функции приспособленности вычисляется по формуле

h 1

 

f f 2ci 1 2n 1 h .

(4.1)

i 0

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

Скрещивание реализовано так, что сначала генерируется точка разделения в промежутке от 1 до l 2 ; таким образом, точка разделяет набор особи на непустые множества. После чего происходит так называемый обмен генами.

Пример скрещивания незакодированных наборов 0,1,2,3,4,5,6,7 и 4,5,6,7,2,1,3,0 представленнарис. 4.3.

Рис. 4.3. Процесс скрещивания незакодированных наборов

89

Как видим, потомки получились нежизнеспособными. Использованное в этой работе кодирование позволяет значительно улучшить ситуацию. После кодирования наборы имеют вид

{0,0,0,0,0,0,0,0} и {4,4,4,4,2,1,1,0}. На рис. 4.4 отображён процесс скрещивания закодированных последовательностей.

Рис. 4.4. Процесс скрещивания закодированных наборов

Полученные после декодирования последовательности

{0,1,2,7,5,4,6,3} и {4,5,6,0,1,2,3,7} являются жизнеспособными. Та-

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

Мутация реализована таким образом, что происходит случайное изменение одного из элементов закодированной последовательности. Например, был набор {0,1,2}, после мутации получается на-

бор {2,1,2}. Новое число входит в диапазон от 0 до 2n i 1, где n – количество входов функции; i – номер изменяемого элемента, начиная с нуля.

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

Выбор особей для скрещивания и мутации происходит при помощи метода рулетки. Метод рулетки осуществляется следующим образом: есть круг, разделённый на s секторов, где s – количество особей. Каждый сектор имеет размер, соответствующий значению фитнес-функции особи. Выбирается случайное число в пределах значений круга и в зависимости от сектора, куда попало число, происходит выбор особи. Таким образом, чем выше значение фитнесфункции особи, тем больше вероятность выбора этой особи.

90

Соседние файлы в папке книги