Автоматизированная система оптимизации оптово-розничных продаж мебели на основе нечеткой логики

Выбор средства и метода решения задачи и среды программирования. Средства Delphi для реализации алгоритмов нечеткой логики. Реализация системы в программе fuzzyTECH. Информационное и программное обеспечение проекта. Расчет экономической эффективности.

Рубрика Программирование, компьютеры и кибернетика
Вид дипломная работа
Язык русский
Дата добавления 22.09.2011
Размер файла 1,5 M

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

Тема: Автоматизированная система оптимизации оптово-розничных продаж мебели на основе нечеткой логики

СОДЕРЖАНИЕ

ВВЕДЕНИЕ

1. Исследовательский раздел

1.1 Мебельный рынок как рынок товаров длительного пользования

1.2 Матрица маркетинговой стратегии мебельной фабрики

1.3 Обзор существующих программных продуктов

1.4 Нечеткие запросы к базам данных

1.5 Выводы по разделу

1.6 Цели и задачи

2. Специальный раздел

2.1 Выбор средства и метода решения задачи и среды программирования

2.1.1 Средства Delphi для реализации алгоритмов нечеткой логики

2.1.2 Нечеткое моделирование в среде MATLAB

2.1.3 Нечеткое моделирование в среде fuzzyTECH

2.2 Реализация поставленной задачи

2.2.1 Сведение задачи к стандартной модели

2.2.2 Реализация системы в среде MATLAB

2.2.3 Реализация системы в программе fuzzyTECH

2.2.4 Сравнение реализаций и выводы по разделу

3. Технологический раздел

3.1 Информационное обеспечение проекта

3.2 Программное обеспечение проекта

3.3 Техническое обеспечение проекта

4. Безопасность жизнедеятельности

4.1 Выявление действующих опасностей в помещении с ПК

4.2 Оценка условий труда работающих с ПК

4.3 Выбор методов и средств обеспечения БЖД работающих в компьютерном зале

5. Организационно-экономический раздел

5.1 Расчет экономии труда за счет применения ЭВМ

5.2 Рост производительности труда от применения ЭВМ

5.3 Расчет затрат на создание программного обеспечения и оценка экономической эффективности

5.3.1 Расчет затрат на разработку

5.3.2 Расчет затрат на основную заработную плату разработчикам

5.3.3 Расчет дополнительной заработной платы разработчиков

5.3.4 Расчет отчислений на социальное страхование и обеспечение.

5.3.5 Расчет затрат на амортизацию ЭВМ, используемых при разработке

5.3.6 Расчет затрат на электроэнергию, используемую ЭВМ в процессе разработки

5.3.7 Расчет накладных расходов

5.4 Расчет экономической эффективности

ЗАКЛЮЧЕНИЕ

СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ

ПРИЛОЖЕНИЕ А. Текст тестовой программы по исследованию нечетких логических операций на языке Object Pascal (Среда программирования Delphi)

ПРИЛОЖЕНИЕ Б. Текст и описание программы в среде fuzzyTECH для реализации алгоритма оптимизации продаж

ВВЕДЕНИЕ

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

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

Большинство российских региональных производителей товаров длительного пользования сталкиваются с проблемой сбыта своих товаров. Спрос во многих рыночных сегментах близок к насыщению, необходим поиск новых рыночных ниш и разработка новых моделей товаров, которые позволят успешно их занять. Так из-за высокой конкуренции региональные мебельные компании все более ориентируются на домашние хозяйства со средним и высоким денежным достатком, которые в свою очередь оказывают существенное влияние на формирование мебельного рынка. Основная причина этого в повышении уровня потребления и возросшей информированности домашних хозяйств о сложившейся рыночной конъюнктуре [2].

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

Однако, в настоящий момент времени можно констатировать, что современные тенденции в управлении региональными компаниями, функционирующими на рынках товаров длительного пользования во многих субъектах Российской Федерации (РФ), подтверждают отсутствие востребованной практикой управленческой методологии по исследованию региональных рынков и планированию маркетинговой деятельности этих компаний [5].

Одной из главных задач службы маркетинга в производственной компании является разработка маркетинговой стратегии. Однако у многих региональных российских компаний по прошествии 18 лет рыночных реформ все еще нет достаточного опыта системного подхода [6] к анализу рынков товаров длительного пользования, разработке маркетинговой стратегии. Одним из наиболее непрозрачных рынков товаров длительного пользования по-прежнему остается рынок мебели.

Таким образом, актуальность проблемы разработки моделей оценки рынка и оптимизации продаж очевидна. В решении подобных задач особое место занимает нечеткая логика. Этот раздел математики появился в 1965 в работах Лотфи А. Задэ (Lotfi A. Zadeh), профессора технических наук Калифорнийского университета в Беркли [7]. В настоящее время он применяется в решении многих технических проблем, в частности, в электронике, а также в экспертных системах.

Разработка программы оптимизации продаж мебели на основе нечеткой логики и является целью настоящей дипломной работы.

1. Исследовательский раздел

1.1 Мебельный рынок как рынок товаров длительного пользования

Определим значение основных терминов, которые используются ниже.

Мебель -- передвижные или встроенные изделия для оборудования жилых и общественных помещений, садово-парковых и других зон пребывания человека. Производимая номенклатура мебели формируется исходя из планировки помещений, их назначения и содержания трудовых и бытовых процессов, количественным и профессиональным составом людей в помещениях. Согласно ГОСТу 20400 мебель классифицируют по следующим признакам: эксплутационным, функциональным, конструктивно-технологическим, по материалам, по характеру производства [8]. По функциональному назначению, мебель можно сегментировать следующим образом: бытовая мебель, мебель для гостиниц, офисная мебель, мебель для магазинов, ресторанов. Бытовая мебель по функциональному назначению делится на мебель для гостиной/жилой комнаты, мебель для спальни, кухонная мебель, мебель для обеденных зон, мягкая мебель, мебель для прихожей, мебель для детской комнаты, домашний кабинет, мебель для ванной комнаты.

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

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

1. Сложный цикл производства и высокое влияние технологий. Большинство ТДП обладают сложной технологией производства и соответственно достаточно высокой розничной ценой. Так, средняя стоимость разовой покупки мебели по разным оценкам составляет около 15-20 тысяч рублей и расходы на мебель занимают от 7 до 10% семейного бюджета, а розничная цена серийного шкафа-купе длиной в 2 метра варьируется от 7 до 20 тысяч рублей в зависимости от комплектации и используемых материалов.

2. Длительный период вывода на рынок новых моделей. Например, у крупных производителей мебели средний срок вывода на рынок новой программы серийной продукции составляет от 7 до 15 месяцев. В мероприятия по выводу программы на рынок входят:

предварительное изучение спроса отделом маркетинга (ОМ)

разработка технического задания ОМ

разработка технического предложения, технического проекта, рабочей документации отделом НИОКР

изготовление опытных образцов на производстве

испытание и доводка опытных образцов ОМ, отделом продаж (ОП), отделом НИОКР

опрос потенциальных потребителей ОМ и ОП

введение корректив в рабочую документацию отделом НИОКР

изготовление пробной партии на производстве

разработка рекламного предложения для оптово-розничных компаний ОМ

рассылка предложений и оформление заявок ОП

распространение пробной партии отделом логистики

получение и обработка откликов по серии мебели ОМ

доработка рабочей документации отделом НИОКР

запуск программы серийной мебели в массовое производство.

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

3. Высокие требования к качеству. Потребитель выбирает ТДП на основании того, как долго с надлежащим уровнем качества данный товар может удовлетворять его потребности. Исходя из этого, большинством производителей мебели решаются вопросы о выявлении приемлемого уровня качества и применения высококачественной фурнитуры и комплектующих, рассчитанных на определенное количество лет использования [9]. Например, многие производители мебели разрабатывают стратегию продвижения, используя в качестве основной идеи объяснение уровня качества и долговечности своей продукции.

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

5. Конкуренция рынков новых и поддержанных товаров. Рынок ТДП подразумевает под собой помимо существования рынка новых товаров, наличие и рынка поддержанных ТДП, бывших в употреблении. И конкуренция между ними может быть очень острой в зависимости от вида ТДП. В связи с этим перед большинством производителей стоит существенная проблема выявления оптимального срока службы производимых ТДП и создания инфраструктуры послепродажного обслуживания. Например, некоторые небольшие производители мебели делают основной акцент на развитие сервиса и предлагают услуги по ремонту и реставрации мебели, замене обивки или фасадов. В частности, доля услуг по ремонту и реставрации мебели в структуре объема бытовых услуг в 2003 г. составила 1,9%1.

6. Продолжительный период выбора и совершения покупки потребителем. ТДП относятся к товарам предварительного выбора с, как правило, отсутствием полноценной и доступной информации об ожидаемых характеристиках будущей покупки [9], которые потребитель сравнивает по степени удобства, качеству, цене и дизайну. Выбор потребителем мебели составляет от 2 до 4 недель (а в некоторых случаях откладывается на несколько месяцев до очередной выставки) и в его таблицу сравнения попадает до 10 моделей, которые сравниваются по 10-15 характеристикам. Основные сравниваемые характеристики: цена, внешний вид, расцветка, удобство использования, качество сборки, качество материалов, удобство ухода, скидки, долговечность.

7. Моральный износ товаров длительного пользования. Помимо физического износа ТДП, особое значение приобретает моральный износ. ТДП, производимые и продаваемые в настоящее время, влияют на ценность товаров проданных в прошлом [10]. Некоторые крупные операторы мирового мебельного рынка (Ikea, Nolte, Natuzzi, Rolf Benz и др.) стимулируют развитие рынка за счет агрессивной рекламной политики и вводят понятие модных тенденций в мебели, что позволяет им практиковать постоянную смену своих коллекций.

1.2 Матрица маркетинговой стратегии мебельной фабрики

С учетом приведенных выше характеристик и проведения маркетинговых исследований можно предложить вариант маркетинговой стратегии развития региональной мебельной фабрики, производящей корпусную и мягкую мебель и занимающейся оптово-розничными продажами в регионах РФ. Элементы маркетинговой стратегии включают в себя дистрибуцию, ассортиментную политику, рекламу и стимулирование сбыта (см. таблицу 1) и определяются по категориям цели, критерия оценки достижения, контрольных показателей по прошедшему периоду и необходимых мероприятий для реализации [11]. Основная цель фабрики -- провести интенсивную экспансию в регионы РФ в момент общего роста мебельного рынка [12], захватить лидирующие позиции на региональных рынках субъектов РФ в ближайшие 3 года.

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

Таблица 1.1 - Матрица маркетинговой стратегии

1.3 Обзор существующих программных продуктов

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

Достаточно упомянуть наиболее распространенную и довольно эффективную для многих приложений программу «1С: Предприятие» [13]. «1С:Предприятие 8» позволяет вести не только бухучет, но и оперативный экономический анализ в разрезе ключевых показателей эффективности: себестоимости готовой продукции, валовой, маржинальной и чистой прибыли, рентабельности производства и продаж.

Однако действительно программ удовлетворяющих данные задачи, способных не только систематизировать товары или просчитать экономические показатели, но и дать анализ продаж по категориям или регионам, существуют единицы. И все они основаны на так называемых «Knowledge-Based Mathematical Systems» - математических программных моделях, «основанных на знании», то есть являющихся самообучающимися в достаточно узком, но четком смысле этого слова. К таким алгоритмам можно отнести, нейронные сети и нечеткие множества.

Практических разработок на основе нечеткой логики в России практически нет. Если же говорить о примерах практического ее применения в мире, можно выделить следующие проекты (из их перечня видно, насколько различные области применения они охватывают) [14].

Примеры программ работающих на нечеткой логике:

Автоматическое управление воротами плотины на гидроэлектростанциях (Tokio Electric Power.)

Упрощенное управление роботами (Hirota, Fuji Electric, Toshiba, Omron)

Наведение телекамер при трансляции спортивных событий (Omron)

Замена экспертов при анализе работы биржи (Yamaichi, Hitachi)

Предотвращение нежелательных температурных флуктуаций в системах кондиционирования воздуха (Mitsubishi, Sharp)

Эффективное и стабильное управление автомобильными двигателями (Nissan)

Управление экономичной скоростью автомобилей (Nissan, Subaru)

Улучшение эффективности и оптимизация промышленных систем управления (Aptronix, Omron, Meiden, Sha, Micom, Mitsubishi, Nisshin-Denki, Oku-Electronics)

Позиционирование приводов в производстве полупроводников wafer-steppers (Canon)

Оптимизированное планирование автобусных расписаний (Toshiba, Nippon-System, Keihan-Express)

Системы архивации документов (Mitsubishi Elec.)

Системы прогнозирования землетрясений (Inst. of Seismology Bureau of Metrology, Japan)

Медицина: диагностика рака (Kawasaki Medical School)

Сочетание методов нечеткой логики и нейронных сетей (Matsushita)

Распознавание рукописных символов в карманных компьютерах (записных книжках) (Sony)

Распознавание движения изображения в видеокамерах (Canon, Minolta)

Автоматическое управление двигателем пылесосов с автоматическим определением типа поверхности и степени засоренности (Matsushita)

Управление освещенностью в камкодерах (Sanyo)

Компенсация вибраций в камкодерах (Matsushita)

Однокнопочное управление стиральными машинами (Matsushita, Hitatchi)

Распознавание рукописных текстов, объектов, голоса (CSK, Hitachi, Hosai Univ., Ricoh)

Вспомагательные средства полета вертолетов (Sugeno)

Моделирование судебных процессов (Meihi Gakuin Univ, Nagoy Univ.)

САПР производственных процессов (Aptronix, Harima, Ishikawajima-OC Engeneering)

Управление скоростью линий и температурой при производстве стали (Kawasaki Steel, New-Nippon Steel, NKK)

Управление метрополитенами для повышения удобства вождения, точности остановки и экономии энергии (Hitachi)

Оптимизация потребления бензина в автомобилях (NOK, Nippon Denki Tools)

Повышение чувствительности и эффективности управления лифтами (Fujitec, Hitachi, Toshiba)

Повышение безопасности ядерных реакторов (Hitachi, Bernard, Nuclear Fuel div.)

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

1.4 Нечеткие запросы к базам данных

Опишем основное отличие разрабатываемой системы от существующих.

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

С базами данных информационных систем, или с четкими базами данных (Crisp Databases) ситуация другая. Пусть, например, из базы данных требуется извлечь следующую информацию:

"Получить список молодых сотрудников с невысокой заработной платой"

"Найти предложения о сдаче не очень дорогого жилья близко к центру города"

Здесь высказывания "Молодой", "Невысокая", "Не очень дорогой", "Близко" имеют размытый, неточный характер, хотя заработная плата определена до рубля, а удаленность квартиры от центра - с точностью до километра. Причиной всему служит то, что в реальной жизни мы оперируем и рассуждаем неопределенными, неточными категориями. Такие запросы невозможно выполнить средствами языка SQL. И на помощь приходит концепция нечетких запросов.

Продемонстрируем ограниченность четких запросов на следующем примере [15]. Пусть требуется получить сведения о менеджерах по продажам не старше 25 лет, у которых сумма годовых сделок превысила 200 тыс. по такому-то региону. Данный запрос можно записать на языке SQL следующим образом:

select FIO from Managers

where (Managers.Age <= 25 AND Managers.Sum > 200000 AND Managers.RegionID = 1)

Менеджер по продажам 26 лет с годовой суммой продаж в 400 тыс., или 19 лет с суммой в 198 тыс. не попадут в результат запроса, хотя их характеристики почти удовлетворяют требованиям запроса.

Нечеткие запросы помогают справиться с подобными проблемами "пропадания" информации.

Рассмотрим наиболее распространенные способы генерации новых лингвистических термов на основе базового терм-множества. Это полезно для построения разнообразных семантических конструкций, которые усиливают или ослабляют высказывания, например: "очень высокая цена", "приблизительно среднего возраста" и т.д. Для этого существуют лингвистические модификаторы (linguistic hedges), усиливающие или ослабляющие высказывание. К усиливающим относится модификатор "Очень" (Very), к ослабляющим - "Более-или-менее", или "Приблизительно", "Почти" (more-or-less), нечеткие множества которых описываются функциями принадлежности вида:

Для примера формализуем нечеткое понятие "Возраст сотрудника компании". Это и будет название соответствующей лингвистической переменной. Зададим для нее область определения X = [18; 70] и три лингвистических терма - "Молодой", "Средний", "Выше среднего". Последнее, что осталось сделать - построить фунции принадлежности для каждого лингвистического терма.

Выберем трапецеидальные функции принадлежности со следующими координатами:

"Молодой" = [18, 18, 28, 34], "Средний" = [28, 35, 45, 50], "Выше среднего" = [42, 53, 60, 60].

Рисунок 1.1 - К определению возраста

Теперь можно вычислить степень принадлежности сотрудника 30 лет к каждому из нечетких множеств:

MF[Молодой](30)=0,67; MF[Средний](30)=0,29; MF[Выше среднего](30)=0.

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

В заключение определим операцию нечеткого отрицания (NOT): MF[NOT](X)=1-MF(X).

Приведенных выше сведений достаточно для построения и выполнения нечетких запросов.

Вернемся к примеру с менеджерами о продажах. Для простоты предположим, что вся необходимая информация находятся в одной таблице со следующими полями: ID - номер сотрудника, AGE - возраст и SUM (годовая сумма сделок).

ID AGE SUM

1 23 120 500

2 25 164 000

3 28 398 000

4 31 489 700

5 33 251 900

Лингвистическая переменная "Возраст" была задана ранее. Определим еще одну лингвистическую переменную для поля SUM с областью определения X = [0; 600000] и термами "Малая", "Средняя" и "Большая" и аналогично построим для них функции принадлежности:

"Малая" = [0, 0, 0, 200000], "Средняя" = [90000, 180000, 265000, 330000], "Большая" = [300000, 420000, 600000, 600000].

Рисунок 1.2 - К определению зарплаты

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

select * from Managers where (Age = "Молодой" AND Sum = "Большая")

Рассчитав для каждой записи агрегированное значение функции принадлежности MF (при помощи операции нечеткого "И"), получим результат нечеткого запроса:

ID AGE SUM MF

3 28 398 000 0,82

4 31 489 700 0,50

Записи 1,2,5 не попали в результат запроса, т.к. для них значение функции принадлежности равно нулю. Записей, точно удовлетворяющих поставленному запросу (MF=1), в таблице не нашлось. Менеджер по продажам 28 лет и годовой суммой 398000 соответствует запросу с функцией принадлежности 0,82. На практике обычно вводят пороговое значение функции принадлежности, при превышении которого записи включаются в результат нечеткого запроса.

Аналогичный четкий запрос мог бы быть сформулирован, например, так:

select * from Managers where (Age <= 28 AND Sum >= 420000)

Его результат является пустым. Однако если мы немного расширим рамки возраста в запросе, то рискуем упустить других сотрудников с чуть более большим или меньшим возрастом. Поэтому можно сказать, что нечеткие запросы позволяют расширить область поиска в соответствии с изначально заданными человеком ограничениями.

Используя нечеткие модификаторы, можно формировать и более сложные запросы:

select * from Managers where (Age = "Более-или-менее Средний" AND Sum = "Средняя")

Результат:

ID AGE SUM MF

5 33 251 900 0,85

Часто требуется оперировать не лингвистическими переменными, а нечеткими аналогами точных значений. Для этого существует нечеткое отношение "ОКОЛО" (Например, "Цена около 20"). Для реализации подобных нечетких отношений аналогично строится нечеткое множество с соответствующей функцией принадлежности, но уже на некотором относительном интервале (например, [-5; 5]) для избежания зависимости от контекста. При вычислении функции принадлежности нечеткого отношения "Около Q" (Q - некоторое четкое число) производят масштабирование на относительный интервал.

Проиллюстрируем вышесказанное на примере таблицы с данными о ценных бумагах. Пусть она имеет в своем составе следующие поля: PRICE (стоимость ценной бумаги), RATIO (отношение цены к прибыли, price-to-earnings ratio), AYIELD (усредненный доход за последний квартал, average yield, %).

ID PRICE RATIO AYIELD

1 260 11 15,0

2 380 5 7,0

3 810 6 10,0

4 110 9 14,0

5 420 10 16,0

Пусть требуется найти ценные бумаги для покупки не дороже $150, с доходностью 15% и отношением цены прибыли 11. Это эквивалентно следующему SQL-запросу:

select * FROM some_table where ((PRICE<=150) AND (RATIO=11) AND (AYIELD=15))

Результат такого запроса будет пустым.

Тогда сформулируем этот же запрос в нечетком виде с использованием отношения "ОКОЛО":

select * FROM some_table

where ((PRICE = "Около 150") AND (RATIO= "Около 11") AND (AYIELD="Около 15"))

Построим нечеткое множество для отношения "ОКОЛО" в относительном интервале [-5; 5]. Это будет трапеция с координатами [-2, -1, 1, 2].

Рассчитаем значение нечеткого запроса "Цена около 250" для цены 380. Предварительно зададим области определения каждой лингвистической переменной: PRICE - [0; 1000], RATIO - [0; 20], AYIELD - [0; 20]. Значение 130 (полученное как разница между 380 и 250) отмасштабируем на интервал [-5; 5], получим величину x=1,3 и MF(1,3)=0,7.

Рисунок 1.3 - К пояснению отношения ОКОЛО

Применив нечеткое отношение ОКОЛО к каждому полю PRICE, RATIO и AYIELD и рассчитав агрегированное значение функции принадлежности с помощью операции нечеткое "И", получим следующий результат запроса.

ID PRICE RATIO AYIELD MF

1 260 11 15,0 1

4 110 9 14,0 0,9

Недостатком нечетких запросов является относительная субъективность функций принадлежности.

1.5 Выводы по разделу

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

В прямом маркетинге очень важен этап выделения целевой аудитории, для которой будут применяться различные инструменты direct marketing. Например, это прямая почтовая реклама (direct mail), используемая при продвижении товаров и услуг организациям и частным лицам. Однако для получения максимального эффекта от direct mail необходим тщательный выбор адресатов. Если отбор адресатов будет либеральным, то возрастут неоправданные расходы на прямой маркетинг, если слишком строгим - будет потерян ряд потенциальных клиентов.

Например, компания проводит рекламную акцию среди своих клиентов о новых услугах с помощью прямой почтовой рассылки. Служба маркетинга установила, что наиболее интересен новый вид услуги будет мужчинам средних лет, отцам семейств с годовым доходом выше среднего. Для получения списка адресатов к базе данных клиентов, скорее всего, будет сделан следующий запрос: выбрать всех лиц мужского пола в возрасте от 40 до 55 лет, имеющих минимум 1 ребенка, годовой доход от 20 до 30 тысяч долл. Такие точные критерии запроса могут отсеять множество потенциальных клиентов: мужчина 39 лет, отец троих детей с доходом в 31 тысячу не попадет в результат запроса, хотя это потенциальный потребитель новой услуги.

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

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

Определим в общих словах области применения нечеткого управления.

Использование нечеткого управления рекомендуется:

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

- для нелинейных процессов высоких порядков,

- если должна производиться обработка (лингвистически сформулированных) экспертных знаний.

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

приемлемый результат может быть получен с помощью общей теории управления

уже существует формализованная и адекватная математическая модель

проблема не разрешима.

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

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

1.6 Цели и задачи

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

Для достижения данной цели требуется решить следующие задачи:

1) Проанализировать особенности проектирования систем;

2) Произвести выбор программной среды;

3) Разработать программу оптимизации оптово-розничных продажееи;

4) Изучить меры безопасности при эксплуатации электронно-вычислительной техники;

5) Дать экономическое обоснование разработанной программе.

Именно этой актуальной в наше дни теме посвещается дана дипломная работа.

2 Специальный раздел

2.1 Выбор средства и метода решения задачи и среды программирования

2.1.1 Средства Delphi для реализации алгоритмов нечеткой логики

Выше мы рассматривали пример использования запросов на языке SQL к реляционным базам данных, использующий основные положения нечеткой логики. Язык SQL встроен в аппарат обращения программ Delphi к БД и может с успехом использоваться в этом случае. Однако подобный пример позволяет лишь выбрать из БД большого объема некую информацию по нечетким критериям, а ее анализ предполагается проводить традиционными методами [16]. Как говорится, неплохо, но недостаточно. В нашу задачу входит процедура нечеткого анализа данных, поэтому мы должны «научить» программу этому. Рассмотрим примеры.

Логические операции составляют основу многих программ, имеющих элементы искусственного интеллекта (ИИ). Это касается не только экспертных систем, но и систем распознавания, машинного перевода с одного языка на другой, логических игр и др.

Формальная (бинарная) логика, известная со времен Аристотеля, реализована практически во всех языках программирования. В Delphi это тип Boolean и производные от него, операции AND, OR, NOT ... . Для систем ИИ данный подход не всегда приемлем, так как он не допускает возможности оперировать промежуточными значениями между ДА и НЕТ.

Для решения этой проблемы можно предложить различные методы.

Во-первых - применить законы теории вероятностей. Вместо логической величины используется вероятность (дробное число от 0 до 1).

Однако, попытки применения вероятностных законов не всегда приемлемы в системах ИИ. Например, экспертные оценки не удовлетворяют требованиям, предъявляемым к вероятности. Если определить вероятность, как отношение числа благоприятных исходов к общему числу всех РАВНОВОЗМОЖНЫХ НЕСОВМЕСТНЫХ исходов, то ясно, что экспертные оценки не удовлетворяют данным требованиям и применение вероятностных законов иногда приводит к курьезным результатам.

Например, эксперт определил, что надежность станка в течение смены P = 0.8. Какова вероятность того, что из 10 таких станков хотя бы один выйдет из строя? Получаем: Вероятность поломки одного N = 1 - 0.8 = 0.2 Вероятность поломки одного из 10 по закону сложения вероятностей R = 0.2 * 10 = 2. Вероятность не может превышать 1, значит экспертная оценка неверна или вероятностная методика просто не подходит в данном случае.

Второй подход состоит в применении правил нечеткой логики. Известны различные реализации логических правил. Чаще всего для операции ИЛИ используют функцию максимума, для операции И - минимума.

Эту реализацию можно (и нужно) подвергать критике, но, как ни странно, она работает в ряде экспертных систем и дает вполне нормальные результаты.

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

Значения экспертных оценок представлены числами в диапазоне от 0 до 1. Это удобно для вычислений и сохраняется аналогия с вероятностью. Значение 0 означает отсутствие данного факта (или уверенность в его отсутствии, ведь метод весьма приближенный), 1 - уверенность в том, что факт имеет место быть. Значение 1/2 - состояние неопределенности, когда не ясно присутствует или отсутствует данный факт. В ряде случаев есть потребность разделить неопределенное и неизвестное состояние. Я предлагаю для неизвестных фактов присваивать значение -1 (минус один). Оно не укладывается в систему, но ничего не поделаешь.

В литературе приводятся и другие системы измерений оценок, например пятибалльная система удобна тем, что нет надобности оперировать с вещественными числами. Целые числа обрабатываются быстрей и занимают меньше памяти. Встречались системы -1(нет) ... 0(неопределенно) ... 1 (да) и другие.

Для проверки работы модуля написаны тестовые примеры.

Первый пример иллюстрирует работу логических операций. Полосы прокрутки задают значения веса исходных фактов А, B. По нажатию одной из кнопок вычисляется результирующий факт C.

Вот пример окна теста - рисунок 2.1.

Рисунок 2.1 - Тестовый пример для иллюстрации работы логических операций

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

Например, для операции И можно попробовать формулу

R=(A*B)/(A+B).

На мой взгляд, эта формула занижает оценки, вес которых менее 0.5

Второй пример поясняет работу функций преобразования.

Эти функции используются для того, чтобы привести величины реального мира (длины, объемы, цвета и т.д.) к весу фактов. Например, рост может быть преобразован к системе НИЗКИЙ - СРЕДНИЙ - ВЫСОКИЙ. Для этого используется S-функция (RLSfun в модуле). Значения X1 - самый низкий рост, X2 - самый высокий.

После выполнения логических операций желательно выполнить обратное преобразование. В модуле обратная S-функция названа RLSarg (получить аргумент S-функции).

В примере использованы линейные функции преобразования. Именно они используются чаще всего благодаря своей простоте. Этого в большинстве случаев достаточно, но не всегда правильно работают функции преобразования. Приведенный на рисунке 2.2 пример преобразует рост человека. Если рост выходит за пределы X1 - X2 (в данном случае задан рост меньше, чем X1), то обратная функция дает неточный результат.

Рисунок 2.2 - Тестовый пример для преобразования значения роста человека

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

Попробуем для функции преобразования роста использовать формулу

Y = (X-170)^(1/5)/6+1/2.

В формуле 170 - средний рост человека.

Обратное преобразование будет иметь вид:

X = (6(Y-1/2))^5+170

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

Проверим, как поведет себя система, если оценка получена путем вычислений, например зададим значение 1 (самый высокий) и получим рост 400 сантиметров. Я таких людей не встречал. А что, если позволить экспертным оценкам немного выходить за пределы диапазона 0...1? Тогда и в крайних значениях 0 и 1 все нормально и обратные преобразования не дают погрешностей. Логические операции при этом работают по-старому (min, max).

У меня получились формулы:

Y = (X-170)^(1/3)/6+1/2

X = (6(Y-1/2))^3+170

Функция третьей степени более пологая, чем функция пятой степени и коэффициенты подобраны так, что значение оценки 1 (высокий) соответствует росту около 200 см.

График рис. 2.3 показывает соотношение линейной и кубической функций преобразования.

Рисунок 2.3 - Различные функции преобразования в нечеткой логике

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

Используя S-функцию и логические операции можно представить и другие функции. В тексте модуля присутствует несколько таких функций: V,U,A,P (русская П соответствует больше).

Z-функцию также можно вывести из S-функции при помощи операции NOT, но при этом придется пересчитывать коэффициенты (или задавать зеркальные точки в линейном случае, что не совсем удобно), поэтому Z-функция реализована отдельно.

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

Поэтому обратимся к другим средам программирования.

2.1.2 Нечеткое моделирование в среде MATLAB

Для реализации процесса нечеткого моделирования в среде МАTLAB предназначен специальный пакет расширения Fuzzy Logic Toolbox. В рамках этого пакета, который расположен в папке C:\MATLAB6pl\toolbox\fuzzy (если система МАTLAB установлена по умолчанию на диске С:), пользователь может выполнять необходимые действия по разработке и использованию нечетких моделей в одном из следующих режимов:

- в интерактивном режиме с помощью графических средств редактирования и визуализации всех компонентов систем нечеткого вывода;

- в режиме команд с помощью ввода имен соответствующих функций с необходимыми аргументами непосредственно в окно команд системы MATLAB.

Процесс разработки системы нечеткоrо вывода в интерактивном режиме

Для разработки и дальнейшего применения систем нечеткоrо вывода в интерактивном режиме могут быть использованы следующие графические средства, входящие в состав пакета Fuzzy Logic Toolbox [17].

- Редактор систем нечеткоrо вывода FIS (FIS Еditor) или сокращенно peдaктор FIS.

- Редактор функций принадлежности системы нечеткого вывода (Membership Function Editor) или сокращенно редактор функций принадлежности.

- Редактор правил системы нечеткого вывода (Rule Еditor) или сокращенно редактор правил.

- Программа просмотра правил системы нечеткого вывода (Rule Viewer) или сокращенно просмотрщик правил вывода.

- Программа просмотра поверхности системы нечеткоrо вывода (Surfасе Viewer) или сокращенно просмотрщик поверхности вывода.

Кроме этих графических средств, в состав пакета Fuzzy Logic Toolbox также входят следующие специальные программы.

- Редактор адаптивных систем нейронечеткого вывода (Adaptive Neuro-Fuzzy Inference System Editor) или сокращенно редактор гибридных сетей или редактор ANFIS.

- Программа нечеткой кластеризации методом нечетких c-средних (Fuzzy с-means clustering).

В табл. 2.1 представлены функции МАTLAB, которые могут быть использованы для вызова соответствующих графических средств.

Таблица 2.1 - Функции графического интерфейса пользователя

Функция

Назначение

anfisedit

findcluster

fuzzy

mfedit

ruleedit

ruleview

surfview

Редактор гибридных сетей ANFIS

Программа нечеткой кластеризации

Редактор системы нечеткоrо вывода FIS

Редактор функций принадлежности

Редактор правил нечеткого вывода

Программа просмотра правил и диаграммы нечеткогo вывода

Программа просмотра поверхности нечеткоrо вывода

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

Редактор систем нечеткоrо вывода FIS

Редактор систем нечеткого вывода FIS (или просто редактор FIS) является основным средством, которое используется для создания или редактирования систем нечеткого вывода в гpафическом режиме. Редактор FIS может быть открыт с помощью ввода функции fuzzy или fuzzy ('fismat') в окне команд. Эта функция предоставляет пользователю возможность задавать и редактировать на высоком уровне свойства системы нечеткого вывода, такие как число входных и выходных переменных, тип системы нечеткого вывода, используемый метод дeфаззификации и т. д.

Если функция fuzzy вызывается без аргументов, то редактор FIS вызывается для вновь создаваемой системы нечеткого вывода с именем Untitled по умолчанию. При этом по умолчанию также задается целый ряд параметров, таких как тип системы нечеткоrо вывода (Мамдани), нечеткие логические операции, методы импликации, агрегирования и дефаззификации и некоторые другие. Пользователь может согласиться с этими значениями или изменить их.

Если функция fuzzy вызывается с аргументом в форме fuzzy ('fismat') , где fismat - имя внешнеrо файла с расширением fis с уже разработанной системой нечеткого вывода, то редактор вызывается с уже загруженной системой FIS с именем fismat.

Редактор FIS обладает графическим интерфейсом и позволяет вызывать все дpyгие редакторы и программы просмотра систем нечеткого вывода. Графический интерфейс этого редактора обладает максимальным удобством и гибкостью, необходимой для интерактивной работы с отдельными компонентами системы нечеткого вывода.

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

С помощью команды New FIS… пользователь имеет возможность создать новую систему нечеткого логического вывода. При выборе этой команды появятся две альтернативы: Mamdani и Sugeno, которые определяют тип создаваемой системы. Создать систему типа Mamdani можно также нажатием Ctrl+N.

С помощью команды Import пользователь имеет возможность загрузить ранее созданную систему нечеткого логического вывода. При выборе этой команды появятся две альтернативы From Workspace… и From disk, которые позволяют загрузить систему нечеткого логического вывода из рабочей области MatLab и с диска, соответственно. При выборе команды From Workspace… появится диалоговое окно, в котором необходимо указать идентификатор системы нечеткого логического вывода, находящейся в рабочей области MatLab. При выборе команды From disk появится диалоговое окно, в котором необходимо указать имя файла системы нечеткого логического вывода. Файлы систем нечеткого логического вывода имеют расширение .fis . Загрузить систему нечеткого логического вывода с диска можно также нажатием Ctrl+N или командой

fuzzy FIS_name,

где FIS_name - имя файла системы нечеткого логического вывода.

При выборе команды Export появятся две альтернативы To Workspace… и To disk, которые позволяют скопировать систему нечеткого логического вывода в рабочую область MatLab и на диск, соответственно. При выборе команды To Workspace… появится диалоговое окно, в котором необходимо указать идентификатор системы нечеткого логического вывода, под которым она будет сохранена в рабочей области MatLab. При выборе команды To disk появится диалоговое окно, в котором необходимо указать имя файла системы нечеткого логического вывода. Скопировать систему нечеткого логического вывода в рабочую область и на диск можно также нажатием Ctrl+T и Ctrl+S, соответственно.

Команда Print позволяет вывести на принтер копию графического окна. Печать возможна также по нажатию Ctrl+P.

Команда Close закрывает графическое окно. Закрытия графического окна происходит по нажатию Ctrl+W или однократного щелчка левой кнопки мыши по кнопке Close.

Команда Undo отменяет ранее совершенное действие. Выполняется также по нажатию Ctrl+Z.

Команда Add Variable… позволяет добавить в систему нечеткого логического вывода еще одну переменную. При выборе этой команды появятся две альтернативы Input и Output, которые позволяют добавить входную и выходную переменную, соответственно.

Команда Remove Selected Variable удаляет текущую переменную из системы. Признаком текущей переменной является красная окантовка ее прямоугольника. Назначение текущей переменной происходит с помощью однократного щелчка левой кнопки мыши по ее прямоугольнику. Удалить текущую переменную можно также с помощью нажатия Ctrl+X.

Команда Membership Function… открывает редактор функций принадлежностей. Эта команда может быть также выполнена нажатием Ctrl+2.

Команда Rules… открывает редактор базы знаний. Эта команда может быть также выполнена нажатием Ctrl+3.

Меню View

Это общее меню для всех GUI-модулей, используемых с системами нечеткого логического вывода. Общий вид меню показан на рис. 7.4. Это меню позволяет открыть окно визуализауии нечеткого логического вывода (команда Rules или нажатие клавиш Ctrl+5) и окно вывода поверхности “входы-выход”, соответствующей системе нечеткого логического вывода (команда Surface или нажатие клавиш Ctrl+6).

Меню And Method

Это меню позволяет установить следующие реализации логической операции И:

min - минимум;

prod - умножение.

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

Меню Or Method

Это меню позволяет установить следующие реализации логической операции ИЛИ:

max - умножение;

probor - вероятностное ИЛИ.

Пользователь также имеет возможность установить собственную реализацию операции ИЛИ. Для этого необходимо выбрать команду Custom… и в появившемся графическом окне напечатать имя функции, реализующей эту операцию.

Меню Implication

Это меню позволяет установить следующие реализации импликации:

min - минимум;

prod - умножение.

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

Меню Aggregation

Это меню позволяет установить следующие реализации операции объединения функций принадлежности выходной переменной:

max - максимум;

sum - сумма;

probor - вероятностное ИЛИ.

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

Меню Defuzzification

Это меню позволяет выбрать метод дефаззификации. Для систем типа Мамдани запрограммированы следующие методы:

centroid - центр тяжести;

bisector -медиана;

lom - наибольший из максимумов;

som - наименьший из максимумов;

mom - среднее из максимумов.

Для систем типа Сугэно запрограммированы следующие методы:

wtaver - взвешенное среднее;

wtsum - взвешенная сумма.

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

Редактор функций принадлежности

Редактор функций принадлежности-(Membership Function Editor) редактор предназначен для задания следующей информации о терм-множествах входных и выходных переменных:

количество термов;

наименования термов;

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

Редактор функций принадлежности может быть вызван из любого GUI-модуля, используемого с системами нечеткого логического вывода, командой Membership Functions… меню Edit или нажатием клавиш Ctrl+2. В FIS-редакторе открыть редактор функций принадлежности можно также двойным щелчком левой кнопкой мыши по полю входной или выходной переменных. Общий вид редактора функций принадлежности с указанием функционального назначения основных полей графичекого окна приведен на рис. 7.5. В нижней части графического окна расположены кнопки Help и Close, которые позволяют вызвать окно справки и закрыть редактор, соответственно.

Редактор функций принадлежности содержит четыре меню - File, Edit, View, Type и четыре окна ввода информации - Range, Display Range, Name и Params. Эти четыре окно предназначенны для задания диапазона изменения текущей переменной, диапазона вывода функций принадлежности, наименования текущего лингвистического терма и параметров его функции принадлежности, соответственно. Параметры функции принадлежности можно подбирать и в графическом режиме, путем изменения формы функции принадлежности с помощью технологии “Drug and drop”. Для этого необходимо позиционировать курсор мыши на знаке режима “Drug and drop” (см. рис. 2.4), нажать на левую кнопку мыши и не отпуская ее изменять форму функции принадлежности. Параметры функции принадлежности будут пересчитываться автоматически.

Рисунок 2.4 - Редактор функций принадлежности

Редактор базы знаний

Редактор базы знаний (Rule Editor) предназначен для формирования и модификации нечетких правил. Редактор базы знаний может быть вызван из любого GUI-модуля, используемого с системами нечеткого логического вывода, командой Rules… меню Edit или нажатием клавиш Ctrl+3. В FIS-редакторе открыть редактор базы знаний можно также двойным щелчком левой кнопкой мыши по прямоугольнику с названием системы нечеткого логического вывода, расположенного в центре графического окна.

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

Рисунок 2.5 - Редактор базы знаний


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.