Найти тему
РОБТЕХ

Нечеткий регулятор и его реализация на языке C. Часть 2

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

В прошлой статье мы разобрали все нужные сущности и ввели операции над ними.

Теперь давайте уже разговаривать более предметно, в терминах нашей задачи и ее реализации., Итак, возьмем универсальное множество X, на котором мы будем строить все наши нечеткие подмножества, равным отрезку [-125,125].  Элементами этого универсума будут целые числа.

Введем следующие лингвистические переменные для выравнивания нашего БПЛА по крену:

Таким образом мы ввели 4 значения для отрицательного левого крена, 4 — для правого крена и одно значение, обозначающее отсутствие крена. Эти значения (нечеткие множества) относятся в равной степени к лингвистическим переменным «Отклонение» и «Воздействие». Вообще, можно для этих переменных задавать разные значения, но мы, чтоб упростить задачу, будем использовать один набор значений.

Ну вроде осталось самая малость, создать

Правила нечеткого регулирования

Итак, что из себя представляют нечеткие правила. Это конструкции вида

IF <условие> THEN <воздействие>

которые накладывают на процесс регулирования некую логику.

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

Например:

Если у нас сильный крен влево, и предыдущий крен был тоже большим, то мы даем сильный крен вправо.

Как мы это запишем в наших лингвистических переменных:

IF e = fVLN AND de = fSN THEN z=fVLP

где e — это текущая ошибка регулирования, а de — это первая разность ошибки в текущий дискретный момент. Через z — мы обозначаем управляющее воздействие на объект управления. Смотрим схему в заголовке статьи.

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

-2

Ура, мы сделали практически всю основную работу, остался пустяк)))
Его мы решим в статье
http://abaidulin.com/math/fuzzy-controller/

Наука
7 млн интересуются