Очков В., Усенко В. Mathcad и нечеткая булева алгебра

Опубликовал: pvi777 в категорию Материалы по нейронным сетям и нечёткой логике - Дата добавления: 16.12.2018, 18:14


Этой статье можно было дать и другое название — «Казнить нельзя помиловать». Но уж больно оно избитое. Традиционно читателя просят поставить запятую в этом предложении и проследить, как меняется смыл вердикта в зависимости от места невинного знака препинания.

А как вам понравиться такой ответ на вопрос о месте запятой: запятую нужно «размазать» по предложению — n процентов запятой поставить после слова «казнить», а 100-n — после слова «нельзя». Трактовать такую новую грамматическую (пунктуалистическую!?) конструкцию можно по-разному. Но сначала поговорим о самой постановке вопроса.

Для начала решим в среде Mathcad такую задачу. Имеется жюри присяжных, состоящее из трех человек и выносящее большинством голосов вердикт «казнить» или «помиловать». Воздерживаться и уклоняться от голосования нельзя. Задача сводится к составлению функции трех аргументов (голоса присяжных), возвращающую решение жюри.

Один лидер «третьего рейха» любил повторять, что он всегда хватается за пистолет, слыша слово «культура». Сталкиваясь с логической задачей, программисты «хватаются» за троицу булевых функции and, or и not. Но их-то и нет в списке встроенных функций Mathcad. Нет там и булевых (логических) переменных. Тут программист, чертыхнется (а зря — см. ниже) и напишет соответствующие пользовательские функции (см. рис. 1), заставляя числовые  переменные выполнять по совместительству роль и булевых. После этого ничего не стоит написать булеву функцию Решение, возвращающую единицу (логическое «Да» в среде Mathcad) или нуль («Нет») в зависимости от итогов голосования — решение принимается, если двое или трое присяжных проголосуют «За». В среде Mathcad функции с двумя аргументами могут быть вызваны в виде древовидных операторов, что позволяет максимально визуализировать их работу. Самый лучший способ тестирования функции — это ее испытание при всех возможных значениях аргументов. Благо функция Решение возвращает всего лишь восемь результатов — четыре раза «Да» и четыре раза «Нет».

При желании в среде Mathcad можно написать булевы функции and и or с любым числом аргументов, объединенных в вектор-столбец, а также функцию not:

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

Параллельное соединение рубильников — это логическое сложение, последовательное — умножение. Лампочка загорелась — решение принято.

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

Еще немного об «электрических цепях». Последнее время в быту получают распространение выключатели, плавно меняющие накал лампочек от нуля до ста процентов. Еще раньше такие устройства (реостаты) стали применяться в театрах и в кинозалах. Медики уверяют, что плавный переход от света к темноте через полумрак благотворно действует на зрение.

А можно ли подобными регуляторами заменить выключатели в приведенной схеме аппаратной реализации процедуры голосования?! Может ли функция Решение иметь не только логические, но и вещественные аргументы и возвращать вещественное значение, плавно меняющееся от нуля до единицы (до 100 процентов)?! Очень часто, осуждая или оправдывая кого-либо, трудно прийти к однозначному решению. Даже на первый взгляд явное преступление может иметь такую оценку — «это скорее беда, чем вина подсудимого». Но людей, принимающих решения, по-прежнему заставляют давать только черно-белые оценки .

Толерантность  сначала проникла в религию. Человечество, нахлебавшись крови в религиозных войнах , относительно поумнело. Сейчас цивилизованный человек может сказать о себе, что он на k процентов атеист, на l процентов мусульманин, на m процентов — католик, а на n процентов — протестант (гугенот —  вспомним Варфоломеевскую ночь и Париж, который стоил мессы). И не обязательно, чтобы k+l+n+m равнялось ста процентам. Во многих церквях Америки по пятницам служит мулла, по субботам — раввин, а по воскресеньям — священник (поп, пастор, ксендз). Затем толерантность охватила мир искусства, размыв систему классических канонов и стилей. Сейчас главное — это талант художника и то, что он хочет сказать миру. И не важно кто он —  реалист, импрессионист (нео-, пост- и т.д.) или просто примитивист, впервые взявшийся за кисть в 70 лет. Теперь стали говорить и о терпимости в науке. Ее проявления — теория нечетких множеств (fuzzy sets) и теория нечеткой логики (fuzzy logic). Неоднозначность оценок стала превалировать не только в гуманитарных дисциплинах, но и в точных науках — в математике, например. Авторы где намеренно, а где по незнанию (по недопониманию — хороший пример нечеткого множества в живом языке) не совсем верно трактуют положения теории нечетких множеств. Раньше таких бы авторов с кашей съели. А теперь ничего — публикуют, читают.

Давайте посмотрим, как нашу задачу о голосовании можно решить с учетом положений теории нечеткой логики. Задачу о голосовании можно обогатить элементами нелинейности, приняв во внимание условное деление голосующих на консерваторов, традиционно склонных к осуждающим приговорам, центристов и либералов. Степень радикальности жюри присяжных (парламента и, вообще, любого электората) будем учитывать через коэффициент k. Голосующие устанавливают степень своего решения «за» (от 0 до 1), но на исход голосования влияют функции y1, y2 и y3, демпфирующие крайние оценки. Графики на рис. 4 получились «пушистыми» (fuzzy). Но это и хорошо, т.к. четкие оценки здесь невозможны.

«Цветная» функция Решение, построенная на функциях min и max (см. рис. 5), при логических значениях аргументов (0 или 1), как уже было отмечено, полностью эквивалентна своему «черно-белому» аналогу, использующему функции and и or. Привычных встроенных функций and и or в среде Mathcad нет. И слева Богу! Но есть встроенные функции min и max. Эти фкнкции способны работать и с логическими, и с вещественными, и даже с комплексными  аргументами. Кроме того, функции min и max удобны тем, что их аргументами может быть вектор-столбец (аргумент функции max), вектор-строка (min) и даже матрица. Это позволяет комбинировать типы аргументов (горизонталь-вертикаль) создаваемой «цветной» логической функции, делая ее более компактной и более прозрачной для понимания.

При желании функции min и max можно переопределить для работы не с векторами (матрицами), а с традиционной парой аргументов:

Это позволит вызывать обновленные функции min и max в виде древовидных операторов, визуализирующих «логику» поиска ответа:

Ладно, скажет читатель, а что делать с вердиктом присяжных такого рода: «Виновен на 57%, невиновен на 43%»?! Что делать? Смотреть на графики, материализующие «цветное» решение!

Интерпретация цвета участков поверхности решения может быть такая:
красный цвет графика говорит сам за себя — кровь, «вышка»;
желтый — каторга;
зеленый — тюремное заключение;
голубой — условное осуждение;
синий — общественное порицание.

Цветовую палитру можно сдвигать, учитывая тенденции в общественном сознании и изменения в законодательстве —  мораторий на смертные казни, например. При этом нужно будет «сдвигать вниз» (в холодные тона) и другие виды наказаний. В наших тюрьмах условия содержания такие, что смертная казнь может оказаться просто наградой. Основной довод противников смертной казни в том, что жизнь — это дар Божий, и только всевышний может приговорить к высшей мере. Но и свобода не меньший дар! Второй довод в том, что смертная казнь делает невозможным исправление судебных ошибок. Но. Отсидел человек 20 лет в камере пожизненного заключения, а ему говорят, пардон, мы ошиблись. Кто вернет загубленную жизнь.

Строить «цветные» логические схемы поможет и нечеткая функция not.

Функции min и max «выдернуты» нами из богатого арсенала статистических функций Mathcad. А там есть еще много интересного (среднее арифметическое, среднее геометрическое, дисперсия и пр.), способного обогатить «логический» поиск. Особо привлекательны для статистических испытаний (скажем так — для логико-статистических испытаний) функции, возвращающие случайные числа, сгенерированные по различным законам распределения.

Но увлекаться статистическими функциями (min, max, average, rnd, var и др.) при реализации логических схем нужно осторожно. Говорят, что есть Большая Ложь, Просто Ложь и… Статистика…


Скачать:


  • Теги:

Комментарии:


Оставить комментарий

Вход на сайт

Информация о проекте

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

Контакты