Калькулятор нечеткой арифметики (математики)
Руководство по калькулятору нечеткой арифметики (математики) [1]
Мы создали сервис для решения сложно формализованных задач. Этот сервис использует нечеткие множества Лотфи Заде, как средство преодоления неопределенности. Этот метод может быть использован в инженерных экономических и научных исследованиях. Сервис представляет собой язык сценариев, построенный на однопроходном интерпретаторе. Интерпретатор включает в себя семантический и синтаксический анализатор операторов, а также необходимые обработчики ошибок. Операторы языка предназначены для ввода действительных чисел, нечетких множеств (чисел), арифметических операций с нечеткими числами такими, как сложение, вычитание, умножение, деление, возведение в степень и извлечение корня нечеткого числа. Форма обслуживания выполняет ввод и вывод данных, а также возвращает результат дефаззификации нечеткого множества, рисунок 1.
Рисунок 1. - Общий вид формы
Интерфейс сервиса представлен командным окном и меню запроса нечеткого множества с кнопкой передачи параметров, рисунок 2. В командное окно вводятся параметры модели и операторы математических действий.
Рисунок 2. - Командное окно
Меню запроса нечеткого треугольного числа позволяет возвращать значения всех нечетких переменных, которыми оперирует скрипт. Не только конечной, но и промежуточных. Значения нечетких переменных автоматически переопределяются в процессе вычислений. Кнопкой вывода нечеткого множества обеспечиваются вычисления результат, которого визуализируется графиком и массивом декартовых координат, рисунок 3.
Рисунок 3. - Визуализация нечеткого множества
Контроль имени нечеткого множества и результата дефаззификации представлен элементом формы, рисунок 4.
Рисунок 4. - Действие элементов формы
Выводится имя нечеткой переменной и результат диффазификации, который является результатом вычисления центроида фигуры определяющей нечеткое множество. Рассмотрим синтаксис языка. Присвоение переменной действительного числа осуществляется по шаблону [a-z] = [0-9]; . Где имя переменной - строчные символы латинского алфавита, а присеваемые значения в пределе от минус до плюс бесконечности. Символ « ; » означает конец выражения.
a = -0.5; bb = 10; i = 2.5; j = 3; k = 3.5;
Действительные числа должны быть определены до нечетких множеств это связано с заполнением внутренних справочников интерпретатора. Присвоение переменной нечеткому числу определяется шаблоном [A-Z] = TN([a-z], [a-z], [a-z]); . Имя нечеткой переменной строчные буквы, а «TN» оператор записи в справочник нечеткого числа на основе переменных действительных чисел.
A = TN (a, b, c); FC = TN (i, j, k); BB = TN (xx, yy, zz);
Сложение нечетких множеств выполняется по шаблону [A-Z] = TA([A-Z], [A-Z]); a=3; b=4; c=5; i=1; j=2; k=3; A=TN(a,b,c);
B=TN(i,j,k); C=TA(A,B);
Рисунок 5. – Результат сложения нечетких чисел
Вычитание нечетких множеств выполняется по шаблону [A-Z] = TS([A-Z], [A-Z]);
a=3; b=4; c=5; i=1; j=2; k=3; A=TN(a,b,c); B=TN(i,j,k); C=TS(A,B);
Рисунок 6. – Результат вычитания нечетких чисел
нечетких множеств выполняется по шаблону [A-Z] = TM([A-Z], [A-Z]); a=3; b=4; c=5; i=1; j=2; k=3; A=TN(a,b,c);
B=TN(i,j,k); C=TM(A,B);
Рисунок 7. – Результат произведения нечетких чисел
Деление нечетких множеств выполняется по шаблону [A-Z] = TD([A-Z], [A-Z]); a=3; b=4; c=5; i=1; j=2; k=3; A=TN(a,b,c);
B=TN(i,j,k); C=TD(A,B);
Рисунок 8. – Результат вычисления частного нечетких чисел Возведение в степень нечеткого множества, шаблон [A-Z] = TP([A-Z], [a-z]); a=3; b=4; c=5; j=2; A=TN(a,b,c); C=TP(A,j);
Рисунок 9. – Результат возведения в степень нечеткого числа
Извлечение корня нечеткого числа, шаблон [A-Z] = TP([A-Z], [a-z]);
a=3; b=4; c=5; j=0.5; A=TN(a,b,c); C=TP(A,j);
Рисунок 10. – Результат вычисления корня нечеткого числа
Применение нечеткой арифметики, как парадигмы для реализации методов финансового менеджмента рассмотрим на примерах модельных расчетов точки безубыточности и чистого дисконтированного дохода в условиях неопределенности исходной информации. Определим точку безубыточности объема производства если неопределенность исходной информации характеризуется вариацией в +/-10%. Пусть постоянные затраты составляют от $ 108000 до $ 132000 $, а наиболее вероятно $ 120000. Цена за единицу продукции составляет от $ 3,6 до $ 4,4 и скорее всего $ 4. Переменные затраты на единицу составляют от $ 1,44 до $ 1,76 и скорее всего $ 1,6. Данные сведем в таблицу 1.
Таблица 1. – Данные для расчета возможных значений безубыточного объема производства
Обычный расчет безубыточного объема производства на основе наиболее возможных данных дает $ 120000/ ($ 4 - $ 1,6) = 50000 единиц продукции. Но используя наш сервис, мы получим больше данных для аналитики и выводов. a = 108000; b = 120000; c = 132000; i = 3.6; j = 4; k = 4.4; x = 1.44; y = 1.6; z = 1.76;
FC = TN(a,b,c); PU = TN(i,j,k); VCU = TN(x,y,z); A = TS(PU,VCU); BP = TD(FC,A);
Рисунок 11. – Результаты определения безубыточного объема производства
Если принять во внимание, нижнее значение и верхнее значение нечеткого множества «безубыточный объем производства» являются границами доверительного интервала 36486 и 71739 единиц соответственно наименее возможны. А значении в 50000 единиц безубыточного объема наиболее возможно, то пространство нечеткого множества будет смещено в сторону больших значений и его результирующая (центроид) составит 51553 единицы. Результат будет давать учет отклонений исходных параметров анализа, необходимый в задачах планирования деятельности организаций. Приведем пример расчета из области оценки эффективности инвестиций путем сравнения денежных потоков расчетом показателя чистого дисконтированного дохода (NPV). Исходные данные сведем в таблицу 2.
Таблица 2. – Исходные данные определения чистого дисконтированного дохода при неопределенности внешней и внутренней среды организации
Используя скриптовый язык запишем исходные данные нечетких интервальных значений таблицы 2 и ход расчетов чистого дисконтированного дохода найдем NPV.
d=0.06; dd=0.07; ddd=0.08; k=4.75; a=0.9; aa=1; aaa=1.1; b=1.8; bb=2; bbb=2.2; c=2.7; cc=3; ccc=3.3; n=0; nn=1; nnn=2; nnnn=3; NPV = TN(n,n,n); K = TN(k,k,k); A = TN(a,aa,aaa); B = TN(b,bb,bbb); C = TN(c,cc,ccc); D = TN(d,dd,ddd); ONE = TN(nn,nn,nn); ONE = TA(ONE,D); DA = TP(ONE,nn); DB = TP(ONE,nnn); DC = TP(ONE,nnnn); A = TD(A,DA); B = TD(B,DB); C = TD(C,DC); NPV=TA(NPV,A); NPV=TA(NPV,B); NPV=TA(NPV,C); NPV=TS(NPV,K);
Результат NPV будет лежать в диапазоне значений от -0.230 до 1.016 с наибольшей возможностью 0.380 млн. $, рисунок 12.
Рисунок 12. – Результаты определения NPV
Но как мы уже отмечали центроид нечеткого множества может не совпадать с наиболее возможным значением и с следует при выработке решений принимать во внимание именно значение центроида множества, так как он учитывает все возможные отклонения. Для нашего примера это значение равно 0,385 млн. $. По результатам технических разработок и приведенного исследования можно сделать ряд выводов: возможно оперировать понятием множество с нечеткими границами для формального описания экономических категорий; можно эти категории обозначать границами доверительных интервалов, что актуально при планировании; при принятии решений по результатам вычислений целесообразно использовать вычисляемый цент тяжести (центроид) множества; использование нечетких множеств позволяет учитывать больший объем информации, что положительно сказывается на качестве планирования деятельности организации и соответственно повышает качество финансового менеджмента.
Абаев Владимир Александрович, Садыкова Зульфира Флоридовна