Pull to refresh

Comments 11

О, спасибо огромное, любопытно.

Я, как обычно со своими пятью копейками, как пример нечёткой логики в графическом программировании (LabVIEW в данном случае). С Control and Simulation нечёткая логика там идёт из "коробки". вот некоторые примеры:

Блок-диаграмма пары баков с клапаном как есть из примера:

Вот как-то так оно работает:

Пример поинтереснее — парковка машины задним ходом в гараж:

Тут два контроллера нечёткой логики — один для езды передом, а второй — для езды задом, вот так это на передней панели выглядит:

Для настройки контроллеров там такая вот утилитка прилагается:

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

Боже, какой же кайф, спасибо)

Очень люблю LabVIEW, так жаль, что на Хабре мало пишут про него -- писал когда-то на нём рабочую задачу, остался в диком восторге)

Спасибо! Я рад, что понравилось. Примеры так просто впечатляют. ;)

Но вот что хотелось бы - сравнивать результаты одинаковых проектов. Что при этом мы выявляем? Да то, о чем я говорю - задержки и как разрешены проблемы обратных связей. Я уверен, что и LabView их автоматически не учитывает, как это делает ВКПа. Т.е. искусственно вставляется или некий элемент памяти или инерционный элемент что-то типа интегратора.

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

Короче, я не поленился, да скачал SimInTech, там взял этот пример, разве что добавил на график расхода обратного тока выход контроллера нечёткой логики для самоконтроля:

Собственно контроллер устроен вот так:

Там гаусс используется:

Правила выхода:

Переложил это дело на LabVIEW как есть:

Гаусс, к счастью там тоже поддерживается, вот два входа::

и

Выход настроен также как и в SimInTech:

Правила:

Я вижу тут маленькую ошибку в Antecedent connective и Consequent implication, но пусть будет, скриншоты переделывать лень, там влияние минимально, да и разобраться надо поглубже

Тут можно проверить:

Ну и вот, это SimInTech:

А это LabVIEW:

Визуализация клапана, что я взял из исходного LabVIEW примера, мне отчаянно не нравится, но пусть будет, я и так полдня угрохал, чтобы с этим хотя бы поверхностно разобраться. Как-то так.

Сенк! Вы - маг и волшебник! :) Даже не ожидал, что так быстро все случится. Видно, что LabView - хорошая платформа.

Внешне очень даже похоже. Отличить сложно.

Но осталась проблема, с которой я пытаюсь разобраться и она должна вскрыть кое-что. Об этом я сейчас выложу продолжение поисков мечты :) Там будет тоже туча графиков, но, правда, рассматриваемый проект чуть-чуть другой. Фзификаторы на ЯВУ, а не стандартные.. Хотелось бы посмотреть на аналогичные графики в LabView и именно на стандартных фазификаторах.

Опять же, если будет время и желание. Но я рассчитываю на поддержку моей мечты :)

ВКПа, как реализация концепции автоматного программирования, учитывает инерционность объектов. Ни что не происходит мгновенно. Вычисления - в первую очередь. Вне зависимости от их реализации. Этот факт отразили диаграммы задержек выходных сигналов, поступающих с выхода субмодели "Бак" на входы субмодели "Нечеткий регулятор". И вообще. Любая система управления, содержащая обратную связь, просто обязана учитывать задержку времени, вносимую этой обратной связью. Повторяем медленно и многократно - о-б-я-з-а-н-а! 

У вас полная мешнанина в териминологи. Инерционность объектов неимеет никакого отношения к тактам вычисления, инерционность это вообще про другое! Шаг интегрирования численного метода определяет только точность решения дифференциальных уравнений, которые описывают непрерывный процесс. В реальности практически любая система измерения тимеет задержки и искажения в аналогвой части (указаные в паспорте) и так же погрешности кругления при переводе в цифровой вид. А так же скважности опроса датчиков (мы можем получать данные с определенным интервалом), в цифровой систем управления есть такты работы процессора. И все это можно легко и непренужденно учесть в моделях SimInTech Matlab и LabView, и это в моделях учитывается. Причем мы это вводим в модель, реальные параметры, реальных систем. Для этого не надо изобретать новыем методы автоматов с задержкой и называть их единственно верными. Ваша задержкка на шаг в автомате это полная туфта с точки зрения решения задачи моделирования и управления, никокого особого смысла она не имеет.

Ваша задержкка на шаг в автомате это полная туфта с точки зрения решения задачи моделирования и управления, никокого особого смысла она не имеет.

На хрена у Вас есть задержка на такт интегрирования? На хрена у Вас есть понятие петли и рекомендации по их развязке?

Потому что это математика 18-го века!!!!!. Замена непрерываного процесса набором декретных решений последовательных точках по времени с заданным шагом. Если мне для расчета одного параметра нужны данные которые я еще расчитал в рамках перехода от точки t_{n} к точке t_{n+1}, я могут их взять с предыдущего шага расчета. Именно так и работает задержка на шаг интегрирования. Это элементарный простейщий и топорный как сумматор или делитель блок.

Сравним ;)

Ку-ку, SimInTech?! Какой нынче век на дворе? ХХ1? Застряли вы в "топорном веке", однако ;)

И что? Сломал к уям суматор! ЕПТА! В этом месте должан быть явная ошибка! С какого перепу у вас сумматор првратился в интегратор, причем коэффициент интегрирования зависит от шага расчета? Представляю разработчика который формирует схему обработки датчика типа такой:

обработка датчика с явной задержкой
обработка датчика с явной задержкой

Где явно использует пердыдущее значение, а ему в суматоре прилетает сдвинутое на шаг!

Или в этом примере:

форимрование недостоверности аварийности и предупредительно.
форимрование недостоверности аварийности и предупредительно.

Верните нормальный суматор в зад! Эту задержку мы сами в проектах ставим. А если 4 суматора подряд? На 4 шага буде сдвижка? А если эти суматоры раскиданы по листам проекта и субмоделям проекта? На сколько тактов все сдвинется? Да хер его знает надо пересчитывать все сумматоры по всему проекту в линиях, остальные математические выражения вы так же на шаг сдвигаете?

Какая же уета эта ваша инерционность, причем полная и беспощадная.

Короче полное говнище этот суматор с задержкой выкинуть его нах!

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

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

Sign up to leave a comment.

Articles