43873

Создание рабочей версии информационной системы выбора оптимальных туристских маршрутов для внедрения в БП «Ориент»

Дипломная

Информатика, кибернетика и программирование

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

Русский

2013-11-08

1.08 MB

5 чел.

писок литературы                                                                                             -92-


Акти
вный

Лечение

Круизы

Праздники

Другой

Деловой

Экзотика

Экскурсии

Пляжный

Виды
отдыха

Содержание

[1] Содержание

[2] Введение

[3] Специальный раздел.

[4] Введение

[5] Техническое задание

[5.1] Наименование и область применения

[5.2] Основание для разработки

[5.3] Назначение разработки

[5.4] Технические требования к программе

[5.4.1]  Требования к функциональным характеристикам

[5.4.2]  Требования к надёжности

[5.5]  Условия эксплуатации

[5.6]  Требования к составу и параметрам технических средств

[5.7]  Требования к информационной и программной
совместимости

[5.8]  Требования к маркировке и упаковке

[5.9]  Требования к транспортированию и хранению

[5.10]  Специальные требования

[5.11] Технико-экономические показатели

[5.12] Стадии и этапы разработки

[5.13] Порядок контроля и приёмки

[6] Эскизный проект

[6.1] Постановка задачи

[6.2]
Предварительные НИР

[6.2.1] Обзор средств автоматизации туристского бизнеса.

[6.2.1.1] Программный комплекс «Мастер-Тур»

[6.2.1.2] 1С.Предприятие

[6.3] Потребности пользователя

[6.4] Требования к системе

[6.4.1] Выполняемые функции

[6.4.2] Требования к надёжности

[6.4.3] Требования к аппаратной и программной совместимости

[6.5] Структура входных данных

[7]
Технический проект

[7.1] Общий алгоритм работы программы

[7.2] Выбор платформы для проектирования и его обоснование.

[7.3]
Выбор метода решения задачи и обоснование

[7.4] Уточнение общего алгоритма

[7.5] Описание генетических алгоритмов

[7.5.1] История появления эволюционных алгоритмов

[7.5.2] Основы генетических алгоритмов

[7.5.3] Возможности применения генетических алгоритмов

[7.5.4] Математическая формулировка  экстремальной задачи
однокритериального выбора

[7.5.5] Понятие “оптимальное решение”

[7.5.6] Влияние параметров генетического алгоритма на эффективность поиска

[7.5.6.1] Операторы кроссовера и мутации

[7.5.6.2] Выбор родительской пары

[7.5.6.3] Механизм отбора

[7.6] Формат данных

[7.7] Разработка алгоритма генерации критерия

[7.8] Разработка алгоритма оптимизации

[7.9] Разработка структуры классов

[7.10] Разработка базы данных системы

[7.11] Конфигурация технических средств

[8] Рабочий проект

[8.1] Разработка программы

[8.2] Алгоритмы работы программы

[8.3] Методика испытаний

[8.4] Разработка программной документации

[8.5] Установка информационной системы

[9]
Технологический раздел

[9.1] Введение

[9.2] Объектно-ориентированное программирование

[9.3] Объектно-ориентированное проектирование

[9.4] Работа с базами данных в Delphi

[9.5] Использование компонентов ADO

[9.6] Методика отладки и тестирования программы

[9.6.1] Особенности тестирования программного обеспечения

[9.6.2] Встроенные средства отладки и тестирования среды разработки

[9.6.3] Основные факторы надёжности системы

[9.6.4] Метод «силовой отладки»

[9.6.5] Методы тестирования

[9.6.5.1] Алгоритмическое тестирование

[9.6.5.2] Функциональное или аналитическое тестирование

[9.6.5.3] Содержательное тестирование

[9.6.6] Виды тестов

[9.6.6.1] Вырожденный тест

[9.6.6.2] Тест граничных значений

[9.6.6.3] Аварийный тест

[9.6.6.4] Стыковочные тесты

[9.6.6.5] Комплексные тесты

[10] Организационно-экономическая часть

[10.1] Введение

[10.2] Анализ рынка туруслуг

[10.3] Постановка задачи

[10.4] Методы сегментирования

[10.5] Расчёт сегментации

[10.5.1] Шаг 1

[10.5.2] Шаг 2

[10.5.3] Шаг 3

[10.5.4] Шаг 4

[10.5.5] Шаг 5

[10.5.6] Шаг 6

[10.5.7] Шаг 7

[10.6] Выводы

[11] Раздел по технике безопасности

[11.1] Введение.

[11.2] Рабочее место турагента

[11.3] Источники опасности и вредностей

[11.4] Излучения экрана монитора

[11.5] Микроклимат помещения

[11.6] Шумы

[11.7] Психофизиологические факторы

[11.8] Нерациональное освещение.

[11.9] Выводы

[12] Заключение

[13] Список литературы


Введение

Туризм является одной из ведущих и наиболее динамично развивающихся отраслей мировой экономики. За быстрые темпы роста он признан экономическим феноменом столетия минувшего и ему пророчат блестящее будущее в столетии грядущем. Согласно прогнозу Всемирной Туристической  Организации (ВТО) рост туристической индустрии будет необратим в ХХI веке, и к 2020 году количество международных туристических посещений составит 1,6 биллиона единиц.  

Как известно, данная отрасль хозяйства является фундаментальной основой многих развитых и развивающихся стран мира. И по данным все той же ВТО, вклад ее в мировую экономику (валовое производство услуг) оценивается в 3,5 трлн долл.(данные 1993 года), что эквивалентно 10,9% мирового валового внутреннего продукта. Путешествия и туризм обеспечивают свыше 11% международных инвестиций и приносят в казну государств в виде налоговых поступлений 302 млрд. долл.

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

Как и многие другие отрасли экономики, туризм изначально базировался на договорённостях людей между собой и не был автоматизирован. Но со временем количество путешествующих несоизмеримо выросло, и постепенно появилась потребность в автоматизации различных процессов, происходящих в туризме. Туризм как и другие сферы бизнеса весьма сложен и состоит из целого ряда разнородных процессов, происходящих одновременно и иногда связанных весьма неоднозначными закономерностями. Первой подверглась автоматизации сфера денежного обращения, бухгалтерия. Существует несколько серьезных разработок, позволяющих более эффективно вести бухгалтерию и отслеживать движения денежных средств в туристической фирме. Среди них 1С, финансовый модуль «Мастер-тура» и другие.

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

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

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

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

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

Учитывая сложный критерий оптимальности и невозможность определить его характер было решено применить генетические алгоритмы для решения задачи максимизации функции, определяющей «применимость» тура к требованиям клиента. Эта функция составляется в зависимости от высказанных клиентом пожеланий. Программа собирает эти пожелания, задавая клиенту вопросы относительно того, что он бы хотел от своего путешествия. Результатом функция выдаёт наилучший тур, который предлагается клиенту. Если клиента не устроил найденный тур, можно уточнить условия.

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


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

  1.  Введение

В специальном разделе пояснительной записки я опишу исследование предметной области, постановку задачи, предварительные НИР. Также будут определены входные и выходные данные, разработаны алгоритмы работы системы. Будут проведены программометрические расчёты – конфигурация технических средств, время работы программы.

  1.  Техническое задание
    1.  Наименование и область применения

Наименование работы: «Информационная система выбора оптимальных туристских маршрутов».

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

  1.  Основание для разработки

Основанием для разработки является распоряжение заведующего кафедры.

Исполнитель: Кафедра “Информатика и программное обеспечение вычислительных систем” (ИПОВС)  Московского государственного института электронной техники (МИЭТ).

  1.  Назначение разработки

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

  1.  Технические требования к программе

  1.   Требования к функциональным характеристикам

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

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

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

  1.   Требования к надёжности

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

  1.   Условия эксплуатации

Условия эксплуатации совпадают с условиями эксплуатации IBM/PC совместимых компьютеров. Требования к обслуживающему персоналу: знание принципов работы на компьютере на уровне пользователя

  1.   Требования к составу и параметрам технических средств

Необходимое аппаратное обеспечение:

  •  IBM/PC совместимый компьютер
  •  64 Мбайт ОЗУ
  •  100 Мбайт свободного пространства на HDD
  •  видеокарта и монитор, поддерживающие разрешение 800х600
  •  мышь

  1.   Требования к информационной и программной
    совместимости

Программа работает под управлением ОС MS Windows 9x или 2000/XP. Требуется MS SQL Server для хранения БД о турах.

  1.   Требования к маркировке и упаковке

Не предъявляются.

  1.   Требования к транспортированию и хранению

Не предъявляются.

  1.   Специальные требования

Специальных требований не предъявляется.

  1.  Технико-экономические показатели

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

  1.  Стадии и этапы разработки

Основные этапы разработки – эскизный, технический и рабочий проект.

Эскизный проект.

Во время разработки эскизного проекта происходит:

  •  Исследование документов в обороте турфирмы.
  •  Структуризация информации.
  •  Создание базы данных.
  •  Исследование переборных методов.
  •  Определение параметров выбранного метода.

Технический проект.

При разработке технического проекта происходит:

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

Рабочий проект.

На этой стадии осуществляется:

  •  Реализация методов классов.
  •  Разработка интерфейса.
  •  Отладка программы
  •  Разработка документации

По окончании разработки рабочего проекта предоставляется:

  •  Текст программы
  •  Описание программы
  •  Схемы и описания алгоритмов
  •  Информация о пробном использовании
  •  Описание применения
  •  Руководство пользователя

  1.  Порядок контроля и приёмки

Приёмка работы осуществляется на технике кафедры. При сдаче программы в базу данных будет внесена информация о реальных турах, но в ограниченном объёме. Будет проведена демонстрация всех функций программы и оценка эффективности работы.

  1.  Эскизный проект
    1.  Постановка задачи

Работа турагента выражается в последовательном обслуживании клиентов, желающих куда-либо поехать. Соответственно, чем больше время, затрачиваемое на каждого из клиентов, тем меньше человек успеет обслужить менеджер, и тем меньшую прибыль получит агентство. Ускорять работу за счёт ухудшения качества обслуживания нецелесообразно ввиду большой конкуренции на туристическом рынке. Бóльшую часть времени при общении с клиентом занимает выбор тура, подходящего как по цене, так и по набору необходимых услуг. Именно этот этап и призвана ускорить и упростить система TourAdvisor. От системы требуется, чтобы получив от пользователя некоторые параметры желаемого тура, она выбрала тур, удовлетворяющий этим требованиям и наиболее оптимальный по всем параметрам. Сбор пожеланий клиента производится в виде последовательного задавания вопросов о характере тура, наличии доп. услуг, цене.  Результатом должно служить предложение тура с возможностью просмотра подробного описания тура и цены. При необходимости выбор повторяется после уточнения условий.

  1.  
    Предварительные НИР
    1.  Обзор средств автоматизации туристского бизнеса.

В туристском бизнесе применяется довольно большой спектр программ для автоматизации. Небольшие компании могут ограничиваться программами MS Word, MS Excel и электронной почтой. Крупные компании, конечно, не могут существовать без использования систем учёта продаж, ведения бухгалтерии, CMS (content management system) сайтов. Для этих целей используются, например, следующие программные продукты.

  1.  Программный комплекс «Мастер-Тур»

Разработка компании «Мегатек» является абсолютным лидером среди программ, автоматизирующих деятельность как агентов, так и операторов.

«Мастер-Тур» позволяет формировать туры любой сложности, рассчитывать стоимость, распечатывать стандартные документы. Программа может работать совместно с большим семейством программ «Мастер», работающими как на стороне агента, так и на принимающей стороне.

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

  1.  1С.Предприятие

Программа 1С.Предприятие кроме стандартной бухгалтерской программы представляет среду создания приложений, в которой возможно создание целого ряда добавочных приложений, облегчающих общение продающих менеджеров с бухгалтерией. К примеру, в Бюро путешествий «Ориент» 1С.Предприятие используется для печати счетов, отслеживания предоставления документов агентствам. 1С.Бухгалтерия – крайне мощное средство автоматизации бухгалтерского учёта. Она предоставляет возможность отслеживания финансового состояния предприятия, печатать множество документов и отчётов. Программа оперативно обновляется при изменении в законодательстве РФ. Для конечного менеджера, имеющего дело с продажей программа практически бесполезна ввиду своей сложности и ориентированности на серьёзное знание бухгалтерии.

  1.  Потребности пользователя
  •  Возможность задания требований, которым должен удовлетворять тур;
  •  Возможность вывода полного описания выбранного тура с ценами;
  •  Возможность повторить поиск, уточнив параметры;
  •  Простой интерфейс;
  •  Защита от несанкционированного копирования;
  •  Возможность последующей интеграции с системами учёта продаж.

  1.  Требования к системе
    1.  Выполняемые функции
  •  Система должны выполнять следующие функции:
  •  Сбор пожеланий клиента относительно параметров тура;
  •  Формирование критерия оптимальности;
  •  Максимизация полученного критерия;
  •  Вывод информации о полученном туре;
  •  Ведение служебной базы данных, необходимой для работы.

  1.  Требования к надёжности

Для обеспечения надёжности, система должна:

  •  Использовать хорошо выверенные параметры алгоритмов;
  •  Использовать стандартные способы работы с базой данных;
  •  Делать резервные копии базы данных (реализуется на уровне сервера);
  •  Иметь защиту от несанкционированного копирования.

  1.  Требования к аппаратной и программной совместимости

Система должна работать на IBM/PC совместимых компьютерах под управлением систем Microsoft Windows. Должна быть возможность дальнейшего совершенствования системы и интегрирования её с существующими программными комплексами автоматизации туризма.

  1.  Структура входных данных

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

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

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

Существует множество видов отдыха. Вот основные из них.

Рис.1. Виды отдыха

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

  1.  
    Технический проект
    1.  Общий алгоритм работы программы

Рис.2. Схема работы системы

  1.  Выбор платформы для проектирования и его обоснование.

В качестве операционной системы для работы системы было выбрано семейство Microsoft Windows 9x/NT. Выбор был сделан по следующим причинам:

  •  Эти операционные системы очень распространены, и большинство туристических компаний использует именно эти ОС.
  •  Обширное API (Applications Programming Interface) для работы с GUI (Graphics User Interface) позволяет создавать удобные для пользователя интерфейсы без значительных затрат времени.
  •  Многозадачность этих операционных систем, позволяющая одновременно с системой пользоваться интернетом, «Мастер-туром» и многими другими прикладными приложениями.
  •  Высокая скорость работы с современными компьютерами.
  •  Высокая надёжность (семейство NT).

В качестве среды разработки был выбран продукт фирмы BorlandDelphi7. Эта среда сочетает в себе множество преимуществ. Среди них:

  •  RAD (Rapid Application Development) – система быстрого создания интерфейсов, позволяющая не тратить время на создание внешнего вида программы, а использовать API.
  •  Наличие большого числа утилит, облегчающих написание программ –  Database Desktop etc
  •  Поддержка всех операционных систем Windows семейств 9х и NT.
  •  Удобный встроенный отладчик позволяет быстро находить ошибки в программе.
  •  Возможность использования внешних компонентов, реализующих многие функции.
  •  Встроенная справка содержит большое количество информации не только по работе со средой, но и по стандартным функциям Windows API.

  1.  
    Выбор метода решения задачи и обоснование

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

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

  1.  Уточнение общего алгоритма

Необходимо определить, каким образом применить этот алгоритм, чтобы он проявлял хорошую сходимость и обеспечивал быстрый и качественный поиск. Исходя из предположения, что клиенту нужен только один – самый лучший тур, будем рассматривать задачу поиска одного экстремума. Быстрый поиск одного экстремума может быть достигнут путём использования параметров, которые способствуют максимально быстрой сходимости за счёт манипулирования только особями, обладающими лучшей приспособленностью, при этом более «слабые» члены популяции не участвуют в формировании родительских пар и не выживают после процедуры отбора. Этого можно достичь путём применения селективного выбора пар и элитного метода отбора. Размер популяции в данном случае не имеет смысла увеличивать, поскольку он влияет на фактор «исследования», который в данной задаче не так важен, как фактор «использования». Правда, слишком маленький размер приводит к ситуации, когда алгоритм замыкается на локальном максимуме, далёком от глобального – слишком велика вероятность гибели полезных генов. При отказе от стратегии элитизма поиск превращается в обычный перебор, который сходится гораздо медленнее. Вероятность кроссинговера, как основного инструмента прогресса, достаточно велика. А вот излишняя вероятность мутации или инверсии только ухудшает сходимость. Опытным путём были установлены оптимальные вероятности: для кроссинговера – 0.8, для инверсии и мутации – по 0.1.

  1.  Описание генетических алгоритмов
    1.  История появления эволюционных алгоритмов

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

Теория эволюции повлияла на изменение мировоззрения людей с самого своего появления. Теория, которую Чарльз Дарвин представил в работе, известной как "Происхождение видов", в 1859 году, стала началом этого изменения. Многие области научного знания в настоящее время наслаждаются свободой мысли в атмосфере, которая многим обязана революции, вызванной теорией эволюции и развития. Но Дарвин, подобно многим своим современникам, кто предполагал, что в основе развития лежит естественный отбор, не мог не ошибаться. Например, он не смог показать механизм наследования, при котором поддерживается изменчивость. Его гипотеза о пангенезисе оказалась неправильной. Это было на пятьдесят лет до того, как теория наследственности начала распространяться по миру, и за тридцать лет до того, как "эволюционный синтез" укрепил связь между теорией эволюции и относительно молодой наукой генетикой. Однако Дарвин выявил главный механизм развития: отбор в сочетании с изменчивостью или, как он его называл, "спуск с модификацией". Во многих случаях, специфические особенности развития через изменчивость и отбор все еще не бесспорны, однако, основные механизмы объясняют невероятно широкий спектр явлений, наблюдаемых в Природе.

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

История эволюционных вычислений началась с разработки ряда различных независимых моделей. Основными из них были генетические алгоритмы и классификационные системы Голланда (Holland), опубликованные в начале 60-х годов и получившие всеобщее признание после выхода в свет книги, ставшей классикой в этой области, - "Адаптация в естественных и искусственных системах" ("Adaptation in Natural and Artifical Systems", 1975). В 70-х годах в рамках теории случайного поиска Растригиным Л.А. был предложен ряд алгоритмов, использующих идей бионического поведения особей. Развитие этих идей нашло отражение в цикле работ Букатовой И.Л. по эволюционному моделированию. Развивая идеи Цетлина М.Л. о целесообразном и оптимальном поведении стохастических автоматов, Неймарк Ю.И. предложил осуществлять поиск глобального экстремума на основе коллектива независимых автоматов, моделирующих процессы развития и элиминации особей. Большой вклад в развитие эволюционного программирования внесли Фогел (Fogel) и Уолш (Walsh). Несмотря на разницу в подходах, каждая из этих "школ" взяла за основу ряд принципов, существующих в природе, и упростила их до такой степени, чтобы их можно было реализовать на компьютере.

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

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

Конечно, на практике мы не можем разделять эти вещи так строго. Эти категории - просто два полюса, между которыми лежат различные вычислительные системы. Ближе к первому полюсу - эволюционные алгоритмы, такие как Эволюционное Программирование (Evolutionary Programming), Генетические Алгоритмы (Genetic Algorithms) и Эволюционные Стратегии (Evolution Strategies). Ближе ко второму полюсу - системы, которые могут быть классифицированы как Искусственная Жизнь (Artificial Life).

Конечно, эволюция биологических систем не единственный "источник вдохновения" создателей новых методов, моделирующих природные процессы. Нейронные сети (neural networks), например, основаны на моделировании поведения нейронов в мозге. Они могут использоваться для ряда задач классификации, например, задачи распознавания образов, машинного обучения, обработки изображений и др. Область их приложения частично перекрывается со сферой применения ГА. Моделируемый отжиг (simulated annealing) - другая методика поиска, которая основана скорее на физических, а не биологических процессах.

  1.  Основы генетических алгоритмов

Генетические Алгоритмы - адаптивные методы поиска, которые в последнее время часто используются для решения задач функциональной оптимизации. Они основаны на генетических процессах биологических организмов: биологические популяции развиваются в течении нескольких поколений, подчиняясь законам естественного отбора и по принципу "выживает наиболее приспособленный" (survival of the fittest), открытому Чарльзом Дарвином. Подражая этому процессу генетические алгоритмы способны "развивать" решения реальных задач, если те соответствующим образом закодированы. Например, ГА могут использоваться, чтобы проектировать структуры моста, для поиска максимального отношения прочности/веса, или определять наименее расточительное размещение для нарезки форм из ткани. Они могут также использоваться для интерактивного управления процессом, например на химическом заводе, или балансировании загрузки на многопроцессорном компьютере. Вполне реальный пример: израильская компания Schema разработала программный продукт Channeling для оптимизации работы сотовой связи путем выбора оптимальной частоты, на которой будет вестись разговор. В основе этого программного продукта и используются генетические алгоритмы.

Основные принципы ГА были сформулированы Голландом (Holland, 1975), и хорошо описаны во многих работах. В отличии от эволюции, происходящей в природе, ГА только моделируют те процессы в популяциях, которые являются существенными для развития. Точный ответ на вопрос: какие биологические процессы существенны для развития, и какие нет? - все еще открыт для исследователей.

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

ГА используют прямую аналогию с таким механизмом. Они работают с совокупностью "особей" - популяцией, каждая из которых представляет возможное решение данной проблемы. Каждая особь оценивается мерой ее "приспособленности" согласно тому, насколько "хорошо" соответствующее ей решение задачи. Например, мерой приспособленности могло бы быть отношение силы/веса для данного проекта моста. (В природе это эквивалентно оценке того, насколько эффективен организм при конкуренции за ресурсы.) Наиболее приспособленные особи получают возможность "воспроизводит" потомство с помощью "перекрестного скрещивания" с другими особями популяции. Это приводит к появлению новых особей, которые сочетают в себе некоторые характеристики, наследуемые ими от родителей. Наименее приспособленные особи с меньшей вероятностью смогут воспроизвести потомков, так что те свойства, которыми они обладали, будут постепенно исчезать из популяции в процессе эволюции.

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

Имеются много способов реализации идеи биологической эволюции в рамках ГА. Традиционным считается ГА, представленный на схеме.

НАЧАЛО /* генетический алгоритм */

Создать начальную популяцию

Оценить приспособленность каждой особи

останов := FALSE

ПОКА НЕ останов ВЫПОЛНЯТЬ

НАЧАЛО /* создать популяцию нового поколения */

ПОВТОРИТЬ (размер_популяции/2) РАЗ

НАЧАЛО /* цикл воспроизводства */

Выбрать две особи с высокой приспособленностью из предыдущего поколения для скрещивания

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

Оценить приспособленности потомков

Поместить потомков в новое поколение

КОНЕЦ

ЕСЛИ популяция сошлась ТО останов := TRUE

КОНЕЦ

КОНЕЦ

В последние годы, реализовано много генетических алгоритмов и в большинстве случаев они мало похожи на этот ГА. По этой причине в настоящее время под термином "генетические алгоритмы" скрывается не одна модель, а достаточно широкий класс алгоритмов, подчас мало похожих друг от друга. Исследователи экспериментировали с различными типами представлений, операторов кроссовера и мутации, специальных операторов, и различных подходов к воспроизводству и отбору.

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

  1.  Возможности применения генетических алгоритмов

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

Тем не менее, возможно наиболее популярное приложение генетических алгоритмов - оптимизация многопараметрических функций. Многие реальные задачи могут быть сформулированы как поиск оптимального значения, где значение - сложная функция, зависящая от некоторых входных параметров. В некоторых случаях, представляет интерес найти те значения параметров, при которых достигается наилучшее точное значение функции. В других случаях, точный оптимум не требуется - решением может считаться любое значение, которое лучше некоторой заданное величины. В этом случае, генетические алгоритмы - часто наиболее приемлемый метод для поиска "хороших" значений. Сила генетического алгоритма заключена в его способности манипулировать одновременно многими параметрами, эта особенность ГА использовалось в сотнях прикладных программ, включая проектирование самолетов, настройку параметров алгоритмов и поиску устойчивых состояний систем нелинейных дифференциальных уравнений.

Однако нередки случаи, когда ГА работает не так эффективно, как ожидалось.

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

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

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

  1.  Математическая формулировка  экстремальной задачи
    однокритериального выбора

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

Предположим, что конкретный объект (техническое устройство, физический или технологический процесс, экономическая система и т.д.) может быть охарактеризован конечной совокупностью существенных свойств, которые могут быть объективно измерены. Количественная оценка существенных свойств осуществляется с помощью величин, называемых параметрами. Можно выделить следующие типы параметров: c= (c1..cm) - внешние параметры, характеризующие внешнюю по отношению к объекту среду и оказывающие влияние на его функционирование; x=(x1..xm) - внутренние параметры, характеризующие свойства отдельных элементов объекта.

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

Объединенную совокупность внешних и внутренних параметров будем называть множеством входных параметров.

Величины, характеризующие свойства объекта в целом как системы, будем называть выходными параметрами (характеристиками), которые можно только измерять или вычислять, но непосредственно изменять нельзя. Обозначим их вектором φ=(φ1..φm).

Управляемые переменные x и характеристики φ определяют существенные свойства исследуемого объекта, а внешние параметры c являются, как правило, константами и характеризуют внешнюю среду. При этом внутренние параметры x играют роль независимых переменных, а выходные параметры φ являются зависящими от них величинами. Будем считать, что соотношения, выражающие эти зависимости, заданы в виде “черного ящика”, который имеет n входов xi, i=1..n 

и s выходов φ, i=1..s.

В процессе принятия решения значения управляемых переменных x могут варьироваться в некоторых пределах, определяемых системой неравенств:

,; ,                                   (2.1)

где   -нижнее и верхнее предельно-допустимые значения, соответственно, для i-ой переменной и j-ой характеристики. Область управляемых переменных, в которой выполняется система ограничений (2.1), будем называть областью поиска D, а любой вектор x, принадлежащий множеству D - допустимым решением.

Для выбора из области поиска D одного или нескольких “лучших” допустимых решений часто приходится вводить критерий оптимальности Q - количественный показатель, посредством которого осуществляется объективное измерение в некоторой числовой шкале Y какого-либо одного наиболее важного для задачи принятия решения выходного параметра i. Здесь под измерением по шкале Y понимается отображение Q, которое каждому решению  ставит в соответствие числовую оценку    таким образом, чтобы отношения между числами сохраняли бинарные отношения предпочтения между решениями:

1)  “предпочтительнее”  тогда и только тогда,

   когда Q() < Q();

2)   “не менее предпочтительнее”   тогда и только тогда,

   когда Q()  Q();                                                                       (2.2)

3)     “эквивалентно”   тогда и только тогда,

    когда Q() = Q().

Из соотношений (2.2) следует, что механизм выбора “лучшего” решения сводится к отбору тех и только тех решений, которые доставляют наименьшее значение критерию оптимальности Q в области поиска D :

,           (2.3)

где x- оптимальное решение; - наименьшее значение критерия оптимальности, получаемое при принятии оптимального решения.

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

  1.  Понятие “оптимальное решение” 

Минимизируемая многопараметрическая функция Q(x), выражающая зависимость критерия оптимальности Q от управляемых переменных x , может быть как унимодальной, так и многоэкстремальной функцией. Независимо от вида функции Q(x)  оптимальное решение   должно удовлетворять условию:

 для всех    (2.4)

В случае унимодальной функции (одноэкстремальной функции, которая может быть разрывной, недифференцируемой и т.д.) оптимальное решение задачи (2.3) является единственным и достигается в точке локального минимума x:

 для всех ,    (2.5)

где  - -окрестность точки локального минимума.

В случае многоэкстремальной функции (функции Q(x), имеющей несколько локальных минимумов  в области поиска D) оптимальное решение задачи (2.3) является глобальным минимумом - наименьшим из всех локальных минимумов:

 ,     (2.6)

где   - к-ый локальный минимум функции Q(x);

l - число локальных минимумов в области поиска D.

В общем случае оптимальное решение задачи (2.3) может достигаться на некотором подмножестве допустимых решений   D, удовлетворяющих условию:

=Q* для всех .                 (2.7)

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

  1.  Влияние параметров генетического алгоритма на эффективность поиска
    1.  Операторы кроссовера и мутации

Одной из особенностей предлагаемого генетического алгоритма является отход от традиционной схемы "размножения", используемой в большинстве реализованных генетических алгоритмов  и повторяющих классическую схему, предложенную Голландом. Классическая схема предполагает ограничение численности потомков путем использования так называемой вероятности кроссовера. Такая модель придает величине, соответствующей численности потомков, вообще говоря, недетерминированный характер. В качестве генетических операторов получения новых генотипов "потомков", используя генетическую информацию хромосомных наборов родителей я применял только один из двух типов кроссоверов - одноточечный. Вычислительные эксперименты показали, что даже для простых функций нельзя говорить о преимуществе одно- или двухточечного оператора. При решении более сложных задач, можно применять сразу оба варианта. Более того, было показано, что использование механизма случайного выбора одно- или двух точечного кроссовера для каждой конкретной брачной пары подчас оказывается более эффективным, чем детерминированный подход к выбору кроссоверов, поскольку достаточно трудно априорно определить который из двух операторов более подходит для каждого конкретного ландшафта приспособленности. Одноточечный более эффективен на тестовых функциях De Jong'а 2 и 5, на двумерной функции Griewank'а и на двумерной функции Растригина, однако для функции De Jong'а 3, функции Griewank'а и Растригина от 10 переменных можно говорить о преимуществе выбора двухточечного оператора. Для данной задачи было решено сначала реализовать одноточечный кроссовер, и как показала практика, его оказалось достаточно для хорошей сходимости, хотя в ряде случаев (функции Griewank'а, 10-мерная функция Растригина) применение случайного механизма в выборе кроссовера дало бы лучшие результаты по сравнению с детерминированными подходами.
Повышение эффективности поиска при использовании случайного выбора операторов кроссовера повлияло на то, чтобы применить аналогичный подход при реализации процесса мутагенеза новых особей, однако в этом случае преимущество перед детерминированным подходом не так очевидно в силу традиционно малой вероятности мутации (в моих экспериментах вероятность мутации составляла 0.05 - 0.2).

  1.  Выбор родительской пары

В процессе эволюции необходимо выбирать пары для скрещивания. Рассмотрю несколько вариантов выбора этих пар.

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

  1.  Механизм отбора

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

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

  1.  Формат данных

В процессе использования программы данные пребывают в нескольких состояниях: исходные данные – в обычном виде, называемые биологическим термином «фенотип», в процессе оптимизации работа идёт с преобразованными данными, или «генотипом». На выход, пользователь снова получает расшифрованную информацию. Таким образом, в генотипе отражены все свойства объекта, и наоборот, можно из генотипа получить фенотип. Всё функционирование алгоритма происходит на уровне генотипа, то есть позволяет обойтись без сведений о структуре используемых объектов. Обычно (и в моём случае тоже) каждому атрибуту объекта соответствует один ген в генотипе. Ген представляет собой битовую строку длиной 32 бита. Для кодирования признаков используется способ кодирования, при котором соседние числа отличаются меньшим количеством позиций, чем при стандартном – код Грея (табл. 1).

Таблица 1 Соответствие десятичных кодов и кодов Грея

Двоичное кодирование

Кодирование по коду Грея

Десятичный код

Двоичное значение

Шестнадцатеричное значение

Десятичный код

Двоичное значение

Шестнадцатеричное значение

0

0000

0h

0

0000

0h

1

0001

1h

1

0001

1h

2

0010

2h

3

0011

3h

3

0011

3h

2

0010

2h

4

0100

4h

6

0110

6h

5

0101

5h

7

0111

7h

6

0110

6h

5

0101

5h

7

0111

7h

4

0100

4h

8

1000

8h

12

1100

Ch

9

1001

9h

13

1101

Dh

10

1010

Ah

15

1111

Fh

11

1011

Bh

14

1110

Eh

12

1100

Ch

10

1010

Ah

13

1101

Dh

11

1011

Bh

14

1110

Eh

9

1001

9h

15

1111

Fh

8

1000

8h

Для простоты длина генов фиксирована. В более сложных задачах может потребоваться применение генов разной длины.

Выходные данные представляются пользователю в виде документа в формате MS Word. Это позволяет удобно просмотреть подробное описание с ценами и распечатать при необходимости. Путь к файлу описания берётся из базы после оптимизации.

  1.  Разработка алгоритма генерации критерия

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

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

  •  вид отдыха – должен влиять на значимость различных параметров, например, то, что важно для пляжного отдыха, совершенно не нужно в активном;
  •  наличие или отсутствие каких либо услуг – должно увеличивать рейтинг туров, где условие выполнено;
  •  качество тех или иных услуг – должно поднимать оценку туров, у которых эти качества близки к требуемым.

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

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

Для формирования окончательного критерия необходимо сложить следующие числа:

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

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

  1.  Разработка алгоритма оптимизации

Рассмотрим схему функционирования генетического алгоритма в его классическом варианте.

  1.  Инициировать начальный момент времени t=0. Случайным образом сформировать начальную популяцию, состоящую из k особей. B0 = {A1,A2,…,Ak)
  2.  Вычислить приспособленность каждой особи FAi = fit(Ai) , i=1…k и популяции в целом Ft = fit(Bt) (также иногда называемую термином фиттнес). Значение этой функции определяет насколько хорошо подходит особь, описанная данной хромосомой, для решения задачи.
  3.  Выбрать особь Ac из популяции. Ac = Get(Bt)
  4.  С определенной вероятностью (вероятностью кроссовера Pc) выбрать вторую особь из популяции Аc1 = Get(Bt) и произвести оператор кроссовера Ac = Crossing(Ac,Ac1).
  5.  С определенной вероятностью (вероятностью мутации Pm) выполнить оператор мутации. Ac = mutation(Ac).
  6.  С определенной вероятностью (вероятностью инверсии Pi) выполнить оператор инверсии Ac = inversion(Ac).
  7.  Поместить полученную хромосому в новую популяцию insert(Bt+1,Ac).
  8.  Выполнить операции, начиная с пункта 3, k раз.
  9.  Увеличить номер текущей эпохи t=t+1.
  10.  Если выполнилось условие останова, то завершить работу, иначе переход на шаг 2.

Теперь рассмотрим подробнее отдельные этапы алгоритма.

Наибольшую роль в успешном функционировании алгоритма играет этап отбора родительских хромосом на шагах 3 и 4. При этом возможны различные варианты. Наиболее часто используется метод отбора, называемый рулеткой. При использовании такого метода вероятность выбора хромосомы определяется ее приспособленностью, то есть PGet(Ai) ~ Fit(Ai)/Fit(Bt). Использование этого метода приводит к тому, что вероятность передачи признаков более приспособленными особями потомкам возрастает. Другой часто используемый метод – турнирный отбор. Он заключается в том, что случайно выбирается несколько особей из популяции (обычно 2) и победителем выбирается особь с наибольшей приспособленностью. Кроме того, в некоторых реализациях алгоритма применяется так называемая стратегия элитизма, которая заключается в том, что особи с наибольшей приспособленностью гарантировано переходят в новую популяцию. Использование элитизма обычно позволяет ускорить сходимость генетического алгоритма. Недостаток использования стратегии элитизма в том, что повышается вероятность попадания алгоритма в локальный минимум.

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

  1.  Разработка структуры классов

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

Рис.3 Диаграмма классов

Класс TGene представляет собой описатель гена, в котором свойство BegPos означает положение гена в хромосоме, а свойство Degree – длину гена. Как я уже упоминал, в этой конкретной системе длина гена постоянна и равна 32 битам.

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

Класс TGeneticAlgorithm описывает непосредственно алгоритм оптимизации и содержит в разделе private множество параметров, которые определяют работу алгоритма. Функциями этого класса реализуются генетические операторы, а также механизмы функционирования алгоритма в целом. В этом классе агрегированы объекты класса TChromosome в количестве, определяемом параметром ChromosomeCount класса.

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

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

Действие класса TChromosome покажу на диаграмме состояний.

Рис. 4 Диаграмма состояний – TChromosome.

Класс предназначен исключительно для хранения информации и не представляет особой сложности. На следующей диаграмме – класс TGeneticAlgorithm.

Рис.5 Диаграмма состояний – TGeneticAlgorithm

  1.  Разработка базы данных системы

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

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

Таблица 2. Поля в БД – таблица tblMain

Название поля

Значение

ID

Идентификатор

HotelName

Название отеля

RoomQ

Качество проживания

SeaDistance

Расстояние до моря (или другой цели тура)

FoodQ

Качество питания

RoomPrice

Стоимость проживания

Heal

Количество болезней, которые лечат

HealQ

Качество лечения

PreHeal

Количество болезней, от которых профилактика

Climat

Насколько климат способствует лечению

HealPrice

Стоимость лечения

TransferDist

Расстояние трансфера

TransferQ

Качество трансфера

TransferLong

Продолжительность трансфера

TransferMan

Количество человек в транспорте во время трансфера

TransferPrice

Стоимость трансфера

ExcursionNumber

Количество экскурсий

ExcursionDist

Расстояние до мест жкскурсий

ExcursionPrice

Стоимость экскурсий

Additional

Дополнительные услуги

AdditionalQ

Качество дополнительных услуг

DescriptionPath

Путь к полному описанию

В единственной таблице tblMain содержится информация о турах в следующем виде: все численные данные нормализованы, все качественные данные преобразованы в численные и также нормализованы. Дополнительные услуги хранятся в поле Additional в виде битовой строки, каждой услуге выделено по 1 биту. Таким образом, данные подготовлены к работе алгоритма. Приведение данных в нужный вид производится в модуле заполнения базы данных. Преобразование из понятного пользователю набора параметров в абстрактные числа производится автоматически.

Формат битовой строки Additional:

Таблица 3. Структура поля Additional

Номер бита

Значение бита

1

Спортзал

2

Корт

3

Столы для настольного тенниса

4

Тренажёрный зал

5

Бильярд

6

Прокат спортинвентаря

7

Библиотека

8

Парикмахерская

9

Косметический кабинет

10

Кафе

11

Бар

12

Продажа сувениров

13

Фотоуслуги

14

Автостоянка

15

Камера хранения

16

Гид

17

Дискотека

18

Казино

19

Детская комната

20

Детские аттракционы

21

Бассейн

22

Собственный пляж

23

Лодочная станция

24

Медпункт

25

Кинозал

26

Сауна

27

Солярий

28

Фитнесс-центр

29

Русская баня

30

Место для шашлыков

31

Конюшня

32

Аптека

33

Фитобар

34

Тир

35

Джакузи

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

База данных выполнена в СУБД Microsoft Access. Эта СУБД предоставляет удобное средство для проектирования баз данных, позволяет легко подключиться к полученной базе благодаря драйверам ODBC, включённым во все средства разработки. Использование драйверов ODBC позволяет в дальнейшем сменить базу данных без особых затрат времени.

Ограничения целостности реализованы только на уровне модуля заполнения базы ввиду абстрактности данных, хранящихся в БД. Более серьёзные ограничения потребовали бы значительного усложнения базы данных, что в данном случае не оправдано.

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

  1.  Конфигурация технических средств

Программа занимает в оперативной памяти компьютера 8 MB. Поскольку база данных выполнена в виде MS Access, память на сервер базы данных не требуется. Программа работает в семействе Windows, причем одновременно с множеством других программ. Исходя из этого, можно определить минимальные требования, предъявляемые программой:

Процессор – Intel Celeron 500 (AMD K6-2 500)

Память – 64 MB

HDD – 30 MB свободных

Screen – 800x600 SVGA

Принтер – любой (опционально)

Рекомендуемые требования значительно выше. Это является следствием ресурсоёмкости эвристических алгоритмов, применяемых в программе. Улучшение параметров компьютера очень сильно влияет на скорость сходимости алгоритма, и прирост производительности откликается скоростью работы программы. Поэтому рекомендуемые требования следующие:

Процессор – AMD Atlon (Duron) 1000 или Intel Pentium 3 (Celeron) 1000

Память – 256 MB DDR 

HDD – 30 MB свободных

Screen – 800x600 SVGA

Принтер

Даже эти рекомендуемые требования не являются ничем запредельным в настоящее время, когда ведущие производители процессоров преодолели частоту 3ГГц, а память дешевеет на глазах, в SD-RAM и вовсе не выпускается. Таким образом, любой современный компьютер позволяет комфортно работать с программой. Поскольку остальные программы, применяемые в туризме уже требуют определённых ресурсов, применение моей системы не потребует от фирмы модернизации парка компьютеров.

  1.  Рабочий проект
    1.  Разработка программы

Разработка программы проводилась модульным способом. Все модули были созданы в среде Borland Delphi. Ниже приведу описание одного из самых сложных модулей, который реализует работу генетического алгоритма.

В модуле объявлены классы TChromosome и TGeneticAlgorithm. Это основные классы алгоритма, рассмотрим их подробнее.

Класс TChromosome порождён от TBits и представляет собой хранилище информации, включающее методы обработки информации. В нём объявлены следующие переменные:

 Private //Раздел частных объявлений класса

   fDegree    : integer; //Разрядность генов

   fGeneCount : integer; //Количество генов

   fGene : array of TGene; //Собственно, гены

Работа с объектами этого класса происходит при помощи следующих методов.

   procedure SetGeneCount(Value : integer); // Установка количества генов

   function  GetGeneSize:integer; //Установка размеров генов

   procedure SetGeneSize(Value:integer); //Установка размера конкретного гена

   function  GetGene(Index:integer):LongWord; //Получение значения гена

   procedure SetGene(Index:integer;Value:LongWord); //Установка значения гена

   function  GetGeneAsInteger(Index:integer):LongInt; //Получение значения гена

   procedure SetGeneAsInteger(Index:integer;Value:LongInt); //Получение значения гена

   function  GetGeneAsFloat(Index:integer):double; //Получение значения гена

   procedure SetGeneAsFloat(Index:integer;Value:double); //Получение значения гена

В разделе открытых объявлений содержатся поле Suitability, которое хранит текущую приспособленность хромосомы, конструктор, деструктор и следующие методы и свойства.

   procedure Assign(Source: TChromosome); //Копирование информации из одной хромосомы в другую

   property GeneCount : integer read fGeneCount write SetGeneCount; //Количество генов

   property GeneSize : Integer read GetGeneSize write SetGeneSize; //Размер генов

   property GeneValue[Index:integer] : Longword read GetGene write SetGene; //Значение гена

   property GeneAsInteger[Index:integer] : LongInt read GetGeneAsInteger write SetGeneAsInteger; //Значение гена

   property GeneAsFloat[Index:integer] : double read GetGeneAsFloat write SetGeneAsFloat; //Значение гена

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

Переменная fPopulation хранит набор хромосом, то есть рабочий материал для работы алгоритма.

В переменной fEpoch хранится номер текущей эпохи, который может быть использован для остановки программы, если алгоритм не сходится слишком долго.

Свойство Sutability хранит текущую приспособленность популяции, но его значение доступно только через свойство fSutability, описание которого находится в разделе public.

Функция fGetSutability – это указатель на внешнюю функцию, которая определяет фитнесс-функцию текущей хромосомы.

fBestChromosome – лучшая особь данной популяции.

fInversion, fCrossover, fMutation – вероятности инверсии, кроссовера и мутации – важных параметров алгоритма.

Процедура OneEpoch производит один шаг эволюции.

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

  1.  Алгоритмы работы программы

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

Рис.6 Схема общего алгоритма работы программы

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

Рис.7 Схема алгоритма инициализации

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

Рис.8 Схема алгоритма оптимизации

Генные операторы кроссовера, мутации, инверсии реализованы функциями класса TGeneticAlgorithm. Проверка приспособленности производится фитнесс-функцией, сформированной программой.

Рис.9 Схема алгоритма преобразования данных

Преобразование в код Грея и обратно производится с помощью таблиц преобразования.

 GrayToDec : array[0..15] of byte = (0,1,3,2,7,6,4,5,15,14,12,13,8,9,11,10);

 DecToGray : array[0..15] of byte = (0,1,3,2,6,7,5,4,12,13,15,14,10,11,9,8);

  1.  Методика испытаний

Любой программный продукт должен пройти тестирование, без которого нельзя утверждать ни о какой надёжности или совместимости. Тестирование можно разделить на два этапа – тестирование во время разработки и тестирование готового продукта. Во время разработки можно отладить алгоритмы, проверить граничные условия, функциональность программы. В этот момент разработчику доступен код, что позволяет исправлять большое количество ошибок прямо в процессе разработки. Особое внимание уделялось корректной работе алгоритма оптимизации. Для установки корректности работы этого алгоритма было решено несколько схожих задач оптимизации с определёнными фитнесс-функциями, про которые известно, какой результат должна давать оптимизация. Среди них минимизация (максимизация) функций Расстригина и Де-Джонга. Лишь после убеждения в полной работоспособности алгоритма дорабатывались прочие модули.

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

Тестирование окончательной версии программы показало, что все ошибки были найдены и исправлены, и релиз избавлен от недоработок.

  1.  Разработка программной документации

В рамках работы над дипломным проектом были созданы следующие документы: схемы алгоритмов, текст программы и руководство оператора.

Текст всех модулей приведён в приложении 1. Руководство оператора – в приложении 2.

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

  1.  Установка информационной системы

Для корректной работы системы, её необходимо сначала установить на компьютер при помощи программы setup.exe, поставляемой вместе с системой. Программа установки не отличается от подобных программ, поскольку была создана при помощи популярной программы InstallShield, и с результатами работы этой программы сталкивался практически каждый пользователь.

По умолчанию, программа устанавливается в каталог C:\Program Files\TourAdviser\, однако при установке пользователь имеет возможность выбрать другой каталог.

Окно установщика выглядит следующим образом.

 

Рис. 10 Окно установщика TourAdviser

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

В этом разделе я приведу описания технологий, использованных в процессе разработки информационной системы. Это в первую очередь принципы объектно-ориентированного программирования, описание среды разработки Borland Delphi. Также будет включено описание принципов работы с базами данных, в том числе технологии ADO, позволяющей подключаться к различным базам данных. Особое внимание уделено методам отладки, как инструментам создания надёжных программных продуктов.

  1.  Объектно-ориентированное программирование

При написании системы использовался объектно-ориентированный подход. Преимущества такого метода очевидны:

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

Основой объектно-ориентированного программирования является объектная модель. Она имеет 4 главных элемента:

  •  абстрагирование;
  •  инкапсуляция;
  •  модульность;
  •  иерархия.

Кроме главных, имеются ещё 3 дополнительных элемента:

  •  типизация;
  •  параллелизм;
  •  сохраняемость.

Рассмотрю эти составляющие подробнее.

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

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

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

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

Иерархия – это упорядочивание абстракций по уровням. Примером иерархии является наследование – важнейший инструмент объектно-ориентированного программирования. Второй важной разновидностью иерархии является агрегация, определяющая отношение “part of”.

Понятие типизации взято из теории абстрактных типов данных. Типизация – это способ защититься от использования объектов одного класса вместо другого, или по крайней мере управлять таким использованием.

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

Ну и наконец, последний из элементов объектно-ориентированной модели - сохраняемость. Она представляет из себя способность объекта существовать во времени, переживая породивший его процесс, и(или) в пространстве, перемещаясь из своего адресного пространства.

  1.  Объектно-ориентированное проектирование

Рассмотрю принципы объектно-ориентированного проектирования, которое основано на объектно-ориентированной модели. Обычно процессы программирования и проектирования, отделенный от процесса управления (или микропроцесс в определении Гради Буча [16]), состоит из следующих видов деятельности:

  •  выявление классов и объектов на данном уровне абстракции;
  •  выявление семантики этих классов и объектов;
  •  выявление связей между этими классами и объектами;
  •  спецификация интерфейса и реализация этих классов и объектов.

При этом в микропроцессе перемешаны фазы анализа и проектирования. Рассмотрю эти процессы более подробно.

Цель выявления классов и объектов состоит в том, чтобы найти границы предметной области. Кроме того, эта деятельность является первым шагом в продумывании объектно-ориентированной декомпозиции разрабатываемой системы. Этот шаг в анализе применяется, когда обнаруживается задача абстракции, составляющие словарь предметной области. Такие действия необходимы при проектировании, когда изобретаются новые абстракции, которые являются составными частями решения. Переходя к программной реализации, применяется процедура выявления, чтобы изобрести простые абстракции, из которых строятся более сложные, и обнаружить общие черты существующих абстракций с целью упростить архитектуру системы. Результатом выявления классов и объектов является обновляющийся по мере развития проекта словарь данных. Словарь данных – центральное хранилище относящихся к системе абстракций.

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

Целью выявления связей между классами и объектами – уточнить границы каждой ранее обнаруженной в микропроцессе абстракции и опознать все сущности, с которыми она взаимодействует. Это действие формализует концептуальное физическое размежевание между абстракциями, начатое на предыдущем шаге. Этот шаг применяется в анализе для спецификации связей между классами и объектами (включая некоторые важные отношения наследования и агрегации). Существование ассоциации подразумевает некоторую семантическую зависимость между двумя абстракциями и возможность перехода от одной сущности к другой. Этот этап проектирования нужен, чтобы специфицировать взаимодействия, которые формируют механизмы архитектуры и группирование классов в категории и модулей в подсистемы. Результатами этого шага являются диаграммы классов, объектов и модулей.

Реализация классов и объектов доводит существующие абстракции до уровня, достаточного для обнаружения новых классов и объектов, необходимых на следующем уровне абстракции. При проектировании с целью реализации становится создание осязаемого представления абстракций путём выпуска последовательных исполнимых версий системы (макропроцесс). Этот шаг намеренно выполняется позже всех, так как макропроцесс концентрирует внимание на поведении и откладывает решения о представлении. На этом шаге принимается решение о представлении каждой абстракции и об отображении каждой абстракций в физическую модель. В начале процесса разработки формулируются тактические решения о представлении в форме уточненных спецификаций классов. Решения, имеющие общий интерес, или подходящие для повторного использования, документируются на диаграммах классов (показывающих их статическую семантику), состояний или взаимодействия (показывающих их динамическую семантику). Когда становится ясно, на каком языке реализовывать проект, начинается программирование в псевдокоде или исполнимом коде. Для раскрытия связей между логическим и физическим уровнем, вводятся диаграммы модулей, которые затем можно использовать, чтобы показать отображение архитектуры в программную реализацию. С реализацией связано одно главное действие – выбор структур и алгоритмов, которые представляют семантику определённых ранее микропроцессом абстракций. В отличие от первых трех стадий микропроцесса, сосредоточенных на внешних представлениях абстракций, этот этап акцентирует внимание на их внутреннем представлении. На стадии анализа результаты этого действия относительно абстрактны, поскольку разработчик не столько обеспокоен реализацией сколько заинтересован в отыскании новых абстракций, которым можно делегировать обязанности. На стадии проектирования, особенно на поздних стадиях проектирования классов, нужно переходить к практическим решениям.

  1.  Работа с базами данных в Delphi

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

Для хранения данных был выбран реляционный тип базы данных. Это связано с тем, что этот тип БД позволяет удобно работать с большими объёмами данных, его поддерживают многие современные СУБД. И опять же нельзя было забывать о интеграции с существующими системами, которые используют именно этот тип баз данных.

Delphi содержит целый ряд визуальных компонентов для работы с базами данных, поддерживающих самые разные технологии. В данной системе были использованы компоненты, пользующиеся технологией ADO. Эта технология позволяет легко подключаться к базам данных, например через драйвер ODBC, который имеют все современные базы данных. Соответственно, для изменения базы данных, к которой подключается программа, нужно всего лишь изменить настройки компонента.

Для создания базы данных не была использована стандартная утилита, входящая в DelphiDatabase Desktop. Это связано с неудобным способом хранения таблиц, принятом в этой программе. Кроме того, хотелось избежать установки BDE на компьютеры клиента. Поэтому разработка базы данных проводилась в среде Microsoft Access, а программа подключалась к ней через драйвер ODBC. Это доказало независимость системы от выбора базы данных, что гарантирует лёгкий переход к использованию других баз после интеграции с внешними программами.

При работе использовались компоненты ADOConnection и ADOQuery. Эти компоненты предоставляют доступ к базе данных и возможность производить любые действия, изменяя свойство SQL компонента ADOQuery и выполняя метод ExecSQL. В модуле наполнения базы данных были использованы компоненты визуальной работы с базой данных. Это DBGrid, DBNavigator, DBText и DBEdit.

  1.  Использование компонентов ADO

Расскажу поподробнее про технологию ADO, которая использовалась для подключения к базе данных. ADO (ActiveX Data Objects) является частью универсального механизма доступа к данным фирмы Microsoft (Microsoft Universal Data Access), который позволяет осуществить доступ как к реляционным, так и к нереляционным источникам данных, таким как файловая система, данные электронной почты, многомерные хранилища данных и др. Универсальный механизм доступа к данным (Universal Data Access) являет собой стратегию предоставления доступа к любому типу информации предприятия. Он обеспечивает высокопроизводительный доступ к различным источникам информации (включая реляционные и нереляционные данные), в том числе к данным, хранящимся на мэйнфреймах, данным электронной почты и файловой системы, текстовым, графическим и географическим данным и др.

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

Назначение универсального механизма доступа к данным фирмы Microsoft — предоставить доступ к перечисленным источникам данных с помощью единой модели доступа к данным.

В настоящее время универсальный механизм доступа к данным фирмы Microsoft поддерживает все наиболее популярные настольные и серверные СУБД.

Microsoft ActiveX Data Objects (ADO) представляет собой программный интерфейс для доступа к данным из приложений. С точки зрения программирования ADO и его расширения являются упрощенным высокоуровневым объектно-ориентированным интерфейсом к OLE DB.

OLE DB — это низкоуровневый интерфейс для доступа к данным. ADO использует OLE DB, но можно использовать OLE DB и напрямую, минуя ADO.

Open Database Connectivity (ODBC) - стандартный способ доступа к реляционным данным. Этот компонент универсального механизма доступа к данным оставлен с целью обеспечения совместимости с прежними версиями программного обеспечения. В современных приложениях применению ODBC-драйверов предпочитают использование OLE DB-провайдеров.

Рассмотрим вышеупомянутые технологии поподробнее.

OLE DB представляет собой программный интерфейс для доступа к различным источникам данных, таким как реляционные и нереляционные данные, текстовые, графические и географические данные, архивы электронных писем, файловая система, бизнес-объекты. В спецификации OLE DB определен набор COM-интерфейсов (COM, Component Object Model, компонентная модель объектов Microsoft, являющаяся составной частью 32-разрядных версий Windows), инкапсулирующих различные сервисы управления данными и предоставляющих однотипный доступ к перечисленным выше данным. Эти интерфейсы могут быть использованы в приложениях, предоставляющих доступ к данным.

На самом верхнем уровне можно отметить три главных компонента OLE DB: потребители (consumers), провайдеры данных (data providers) и сервисные компоненты (service components).

Любой компонент программного обеспечения, применяющий интерфейсы OLE DB, является потребителем. Это может быть какое-либо офисное приложение или иное бизнес-приложение, средство разработки типа Visual Basic или Delphi либо даже COM-объекты для доступа к данным, применяющие интерфейсы OLE DB. Потребители могут обращаться к данным посредством ActiveX Data Objects, представляющих собой высокоуровневый интерфейс к OLE DB, или применять OLE DB непосредственно, используя OLE DB-провайдер.

Провайдер — это часть программного обеспечения, в которой реализованы интерфейсы OLE DB. С точки зрения OLE DB существуют два типа OLE DB-провайдеров — провайдеры данных и сервисные компоненты.

Провайдер данных — это компонент программного обеспечения, манипулирующий данными. Он располагается между потребителем данных и базой данных. В OLE DB все провайдеры представляют данные в табличном формате (аналогичном тому, в котором хранятся данные в реляционных СУБД и файлах электронных таблиц), в виде виртуальных таблиц. Провайдер данных выполняет следующие функции:

  •  получение от потребителя запросов на получение или модификацию данных;
  •  получение данных из базы данных или их модификацию в базе данных;
  •  возвращение данных потребителю.

Примером провайдеров данных является провайдер Microsoft Jet 4.0 OLE DB Provider, который используется для доступа к данным Microsoft Access, а также к данным I-ISAM (Installable Indexed Sequential Access Method), файлам рабочих книг Excel, хранилищ данных Microsoft Outlook и Microsoft Exchange, таблиц dBase и Paradox, текстовым файлам, файлам в формате HTML и др. Еще один пример OLE DB-провайдера — Microsoft OLE DB Provider for SQL Server, применяемый для доступа к базам данных Microsoft SQL Server 6.5 и 7.0.

Провайдер сервисов (или сервисный компонент) реализует расширенную функциональность, не поддерживаемую обычными провайдерами данных, например сортировку и фильтрацию данных, обработку транзакций и SQL-запросов, управление курсором и др. Сервисный компонент может обращаться к хранилищу данных непосредственно или с помощью соответствующего провайдера данных — в этом случае провайдер сервисов является одновременно и провайдером, и потребителем. Например, сервисные компоненты, такие как Microsoft Cursor Service for OLE DB и Microsoft Data Shaping Service for OLE DB, могут использоваться совместно с провайдерами данных OLE DB для расширения их функциональности.

С рядом продуктов Microsoft поставляется набор MDAC (Microsoft Data Access Components), в который входит ряд провайдеров.

Таблица 4. Список провайдеров, доступных в MDAC

Провайдер

Описание

Microsoft OLE DB Provider for ODBC Drivers

Позволяет осуществить доступ к любому ODBC-источнику

Microsoft Jet 4.0 OLE DB Provider

Применяется для доступа к данным Microsoft Access и некоторых других СУБД

Microsoft OLE DB Provider for SQL Server

Используется для доступа к данным Microsoft SQL Server

Microsoft OLE DB Provider for Oracle

Используется для доступа к данным Oracle

Microsoft OLE DB Provider for Internet Publishing

Используется для доступа к Web-серверам и ресурсам, обслуживаемым Microsoft FrontPage или Microsoft Internet Information Server

OLE DB Provider for Microsoft Directory Services

Применяется для доступа к гетерогенным службам каталогов с помощью Microsoft Active Directory Service Interfaces (ADSI)

Microsoft OLE DB Provider for Microsoft Index Server

Предоставляет доступ «только для чтения» к файловой системе и данным Web, индексированным с помощью Microsoft Indexing Service

Microsoft OLE DB Simple Provider

Используется для доступа к текстовым файлам

Cursor Service for OLE DB

Расширяет функциональность курсора

Data Shaping Service for OLE DB

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

OLE DB Persistence Provider

Используется для сохранения наборов данных в форматах ADTG (Advanced Data Table Gram) или XML (eXtensible Markup Language)

OLE DB Remoting Provider

Позволяет обращаться к провайдерам данных на удаленных компьютерах

Microsoft OLE DB Provider for OLAP Services

Применяется с расширением ADO Multi-Dimensional (ADO MD) для доступа к многомерным данным, созданным с помощью Microsoft SQL Server 7.0 OLAP Services

ADO представляет собой высокоуровневый программный интерфейс для доступа к OLE DB-интерфейсам. Он позволяет манипулировать данными с помощью любых OLE DB-провайдеров, как входящих в состав Microsoft Data Access Components некоторых других продуктов Microsoft, так и произведенных сторонними производителями. ADO содержит набор объектов, используемых для соединения с источником данных, для чтения, добавления, удаления и модификации данных.

Объект ADO Connection применяется для установки связи с источником данных. Он представляет единственную сессию. Этот объект позволяет изменить параметры соединения с базой данных, а также начать или завершить транзакцию. Используя объект Connection, мы можем выполнять команды (например, SQL-запросы) с помощью метода Execute. Если команда возвращает набор данных, автоматически создается объект Recordset, который возвращается в результате выполнения этого метода.

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

Объект Command представляет собой команду, которую можно выполнить в источнике данных. Команда может содержать SQL-предложение или вызов хранимой процедуры. В последнем случае для определения параметров процедуры может быть использована коллекция Parameters объекта Command.

Объект Recordset - это набор записей, полученных из источника данных, и может быть использован для добавления, удаления, изменения, просмотра записей. Данный объект может быть открыт непосредственно или создан с помощью объектов Connection или Command.

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

Библиотека ADO 2.5, являющаяся составной частью операционной системы Windows 2000, содержит два новых объекта - Record и Stream.

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

Объект Stream представляет двоичные данные, связанные с объектом Record. Например, если объект Record представляет собой файл, то его объект Stream должен содержать данные внутри этого файла.

  1.  Методика отладки и тестирования программы

Важным этапом разработки программы является её тестирование. Только тестирование может дать ответ на вопрос, все ли ошибки исправлены, реализует ли программа требуемые функции, не содержит ли она «дыр» в безопасности.

  1.  Особенности тестирования программного обеспечения

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

Процесс тестирования обычно включает в себя:

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

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

  1.  Встроенные средства отладки и тестирования среды разработки

Среда Borland Delphi характеризуется рядом особенностей, влияющих на отладку. Среди них наличие обширного API, который предоставляет большой набор функций, при этом будучи хорошо отлаженным. Библиотека VCL содержит компоненты для создания множества стандартных объектов, причём в их надёжности не приходится сомневаться. Принцип модульности позволяет локализовать ошибку с точностью до модуля и, создавая тестовые модули, отладить отдельно взятый фрагмент.

ИСР Delphi содержит синтаксический анализатор, который ещё в процессе создания отлавливает ошибки в написании конструкций языка. Программист во время написания кода имеет возможность быстро получать доступ к именам свойств и методов классов, что исключает возможность указания неверного идентификатора.

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

  1.  Основные факторы надёжности системы

Система выбора оптимальных туристских маршрутов имеет следующие наиболее важные аспекты надёжности работы:

  •  корректность работы базы данных;
  •  сходимость алгоритма за конечное время;
  •  устойчивость к неверному вводу информации.

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

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

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

  1.  Метод «силовой отладки»

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

Рис. 11 Тестовая форма с параметрами алгоритма и выходными значениями

  1.  Методы тестирования

Существует два основных подхода к тестированию:

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

Тестирование программы как “белого ящика”. Стратегия белого ящика, или стратегия тестирования, управляемого логикой программы, позволяет использовать внутреннюю структуру программы. В этом случае программист получает тестовые данные путем анализа логики программы.

Также существует 3 основных способа тестирования: алгоритмическое, аналитическое и содержательное.

  1.  Алгоритмическое тестирование

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

  1.  Функциональное или аналитическое тестирование

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

  1.  Содержательное тестирование

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

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

  1.  Виды тестов

Тестирование программы можно производить разными способами. Но среди них можно выделить самые важные.  

  1.  Вырожденный тест

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

  1.  Тест граничных значений

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

  1.  Аварийный тест 

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

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

  1.  Стыковочные тесты

Предназначаются для проверки взаимосвязи (стыковки) уже отлаженных частей программы.

  1.  Комплексные тесты

Проверяют правильность работы всех или большинства частей программы после их объединения.


  1.  Организационно-экономическая часть
    1.  Введение

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

  1.  Анализ рынка туруслуг

Статистика показывает рост активности туристов во всём мире в последние годы. Это же подтверждают наблюдения руководителей туристских фирм, отмечающих рост числа отправляемых туристов из года в год. Рынок постоянно расширяется, открывая всё новые страны для посещения для всё большего числа людей. Всемирная Туристская Организация (ВТО) пророчит дальнейший рост туристской индустрии. При анализе тенденций развития называются числа порядка 1,6 миллиарда человек, совершивших туристические поездки к 2020 году. На графиках показаны тенденции развития рынка по данным ВТО.

Рис. 12 Рост рынка туруслуг

По мнению ВТО туризм является всемирной индустрией, лидирующей по темпам роста, и нет никаких признаков, что в 21 веке эти темпы замедлятся. В последние 16 лет доходы от международного туризма увеличивались в среднем на 9% в год, достигнув в 2000 году 476 млрд. долларов США. За этот же период объемы международных прибытий в среднем возрастали на 4,6% в год, составив в 2000 году 698 млн. человек.

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

  1.  Постановка задачи

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

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

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

  •  Измеряемость - степень, с которой размер и покупательная способность рынка может быть измерена.
  •  Доступность - степень, с которой рынка можно достичь и обеспечить необходимым количеством продуктов.
  •  Реальность - степень прибыльности и размера сегмента. Фирма должна ориентировать свою маркетинговую стратегию на самую большую гомогенную группу потребителей.
  •  Действенность - степень, с которой эффективная маркетинговая программа может быть использована для привлечения потребителей.

  1.  Методы сегментирования

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

В рамках первого метода. именуемого "а рriory" предварительно известны признаки сегментирования, численность сегментов, их количество, характеристики, карта интересов. То есть подразумевается, что сегментные группы в данном методе уже сформированы. Метод "а рriory" используют в тех случаях, когда сегментирование не является частью текущего исследования, а служит вспомогательным базисом при решении других маркетинговых задач. Иногда этот метод применяют при очень четкой определенности сегментов рынка, когда вариантность сегментов рынка не высока. "A priory" допустим и при формировании новой продукта, ориентированного на известный сегмент рынка.

В рамках второго метода, именуемого "post hoc ( cluster based) подразумевается неопределенность признаков сегментирования и сущности самих сегментов. Исследователь предварительно выбирает ряд интерактивных по отношению к респонденту (метод подразумевает проведение опроса) переменных и далее в зависимости от высказанного отношения к определенной группе переменных, респонденты относятся к соответствующему сегменту. При этом карта интересов, выявленная в процессе последующего анализа, рассматривается как вторичная. Этот метод применяют при сегментировании потребительских рынков, сегментная структура которых не определена в отношении продаваемого продукта.

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

Например, в США широко распространен кластерный анализ систем, называемый PRIZM, который начинает кластеризацию, сокращая набор из 1000 возможных социально-демографических показателей. Данная система формирует социально-демографические сегменты для всей территории CШA. Так, выделен кластер 28 - семьи, которые попали в этот кластер, включают лиц с наиболее успешной профессиональной или управленческой карьерой. Этот кластер также отражает высокий доход, образование, собственность, приблизительно средний возраст. Хотя данный кластер представляет только 7% населения США, он является критическим для предпринимателей, продающих дорогие товары. Существуют другие примеры сегментации потребителей на основе кластерного анализа. Например, среди "психологических" секторов весьма важное место занимает "отношение потребителя к новизне товара" (рис. 3)

Рисунок 13 Сегментация рынка по психологическому признаку

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

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

  1.  Расчёт сегментации

Для определения сегментов воспользуемся неформализованным методом – методом логической сегментации (семишаговой). Для реализации этого метода, необходимо проделать 7 шагов:

  •  Шаг 1 – необходимо указать широкий рынок товаров.
  •  Шаг 2 – выявить потребности потенциальных покупателей.
  •  Шаг 3 – выделить однородные субрынки (узкие рынки) товаров.
    Шаг 4 – выявить ключевые параметры рынков.
  •  Шаг 5 – дать названия возможным рынкам товаров.
  •  Шаг 6 – уточнить возможное поведение потребителей и откорректировать выделенные сегменты.
  •  Шаг 7 – оценить размер каждого сегмента (или продаж).

Пройдём все эти шаги, чтобы определить, в каком сегменте работает компания.

  1.  Шаг 1

Необходимо выбрать широкий рынок товаров. В нашем случае – это внутренний выездной туризм.

  1.  Шаг 2

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

  1.  Шаг 3

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

  •  экономичные туры с не слишком высоким качеством;
  •  экскурсионные туры с обширной программой
  •  туры среднего уровня

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

  1.  Шаг 4

Теперь, необходимо выявить ключевые параметры полученных субрынков. Рассмотрим, к примеру, экономичные туры. В этом сегменте играет большую роль цена, поскольку их приобретают люди, которые по той или иной причине не хотят (не могут, не намерены etc) отдать за тур большие деньги. При этом они хотят получить по возможности больше. Обычно на этом субрынке предлагаются отели, расположенные дальше от моря, либо с более слабой материальной базой. Часто дополнительные услуги можно получить за отдельную плату на месте или в соседнем отеле.

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

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

  1.  Шаг 5

Полученным сегментам для простоты работы с ними нужно дать названия. Назовём выбранные сегменты – «Экономичный», «Средний»  и «Экскурсионка».

  1.  Шаг 6

Уточним полученные сегменты.

В «Экономичный» могут поехать студенты, молодые специалисты, а также семьи среднего достатка.

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

Желание поехать в «Экскурсионку» время от времени возникает почти у каждого человека. Ни пол, ни возраст не повлияют на желание культурно отдохнуть. Требуется только небольшое количество денег и желание потратить некоторое время на то, чтобы внутренне обогатиться.

  1.  Шаг 7

На этом шаге требуется оценить размеры полученных сегментов, чтобы понять целесообразность работы на каждом из них. На самом деле непопулярные сегменты я выбросил ещё на шаге 3. Выбранные сегменты являются весьма перспективными. По объёму продаж наиболее интересен, пожалуй, «Средний» сегмент, поскольку он охватывает огромное количество потенциальных клиентов и в России есть очень большое количество отелей, работающих в данном ценовом диапазоне.

Завершающей стадией формирования сегментных групп является "критериальная оценка" выделенных сегментов в рамках которых рассматривается их соответствие ряду маркетинговых критериев успешности позиционирования на них продуктов.

Рассматривают несколько критериальных оценок:

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

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

Критерий существенности сегмента - это оценка того, насколько эта группа потребителей устойчива по своим основным объединяющим признакам. Является ли данный сегмент растущим, устойчивым или уменьшающимся, стоит ли на него ориентировать свои производственные мощности.

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

По всем критериям сегменты показывают себя с положительной стороны – сегменты очень ёмкие, доступные, устойчивые. Основные конкуренты, правда, не готовы поступиться этими сегментами, но крайне сильные позиции компании на рынке, известное имя и огромный опыт работы сводят влияние этого фактора на «нет».

Проверим полученные сегменты. Выделим из потребителей 4 группы – студенты, молодые специалисты, служащие среднего уровня и состоятельные граждане. Из характеристик тура возьмём качество, стоимость, количество дополнительных услуг и расстояние, на которое нужно ехать. Составим матрицу наблюдений. Оценки ставятся по 5-балльной шкале.

Таблица 5. Матрица наблюдений

Качество

Стоимость

Доп. услуги

Расстояние

Студенты

2

5

4

1

Молодые специалисты

3

4

4

1

Служащие среднего уровня

4

3

3

3

Состоятельные граждане

5

2

5

4

Поскольку все характеристики оценивались баллами, нормировка не требуется. Построим матрицу расстояний.

Таблица 6. Матрица расстояний

0

8

4

5

8

0

4

9

4

4

0

7

5

9

7

0

Для расчета расстояний используем формулу линейного расстояния.

Обозначив 2 интервала – [0..5] и [6..9] и заместив числа знаками «х» и «-» получим диаграмму Чекановского.

Таблица 7. Диаграмма Чекановского

х

-

х

х

-

х

х

-

х

х

х

-

х

-

-

х

Виден сегмент среднего уровня и молодых специалистов, который соответствует выбранному в методе семишаговой сегментации «Среднему». Следовательно, сегмент был выбран верно.

  1.  Выводы

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


  1.  Раздел по технике безопасности
    1.  Введение.

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

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

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

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

  1.  Рабочее место турагента

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

Турагент (менеджер) выполняет следующие функции:

  •  Общение с клиентом, подбор тура по требованиям клиента
  •  Анализ предложений операторов, определение конкретного тура, подходящего по цене и прочим параметрам
  •  Отправка заявки туроператору (по факсу, e-mail, через Интернет, по телефону).
  •  Выдача клиенту путёвки и прочих документов
  •  Приём денег
    1.  Источники опасности и вредностей

При работе менеджер подвергается следующим источникам опасности:

  •  электромагнитные излучения экрана монитора;
  •  микроклимат;
  •  нерациональное освещение;
  •  шумы и вибрации, возникающие при работе механических и электрических устройств системы;
  •  психофизиологические перегрузки:
  •  физические перегрузки (статические);
  •  утомление, связанное с монотонностью работы;
  •  перенапряжение зрительных анализаторов;
  •  эмоциональные и умственные перегрузки.
    1.  Излучения экрана монитора

Поскольку компьютеры заняли прочное место на столах менеджеров, последние подвергаются постоянному воздействию излучения мониторов. В одном помещении часто расположено достаточно большое количество мониторов, вследствие чего человек получает излучение не только своего, но и соседних мониторов. Особую опасность представляют собой мониторы на электронно-лучевой трубке. Устройство этих мониторов таково, что содержит электронную пушку, которая излучает поток электронов. Результатом является наличие в спектре излучения от инфракрасных до рентгеновских волн. Существует несколько стандартов безопасности, которые ограничивают пороги излучения. В настоящее время действуют стандарты TCO-95, TCO-99 и MPR. В России также существуют ГОСТы, гармонизированные со шведскими стандартами.

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

Кроме того, неправильно подобранный монитор может оказывать очень сильное воздействие на зрение человека. При долговременной работе у человека появляется утомляемость зрения. Поэтому при работе с монитором рекомендуется делать 15-минутные перерывы каждый час или делать специальные упражнения для глаз. Учёные установили, что люди, работающие помногу с монитором, страдают заболеваниями зрения на 70% чаще, чем люди, лишь изредка садящиеся за компьютер.

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

  •  использовать современные мониторы не менее 15’’;
  •  использовать мониторы, поддерживающие не менее 85 Гц в рабочем разрешении;
  •  не сидеть близко к монитору, рекомендуется не ближе 70 см;
  •  использовать мониторы, имеющие хорошее антибликовое покрытие, что исключит посторонние блики, повышающие утомляемость зрение;
  •  не располагать монитор перед источником света;
  •  не располагать монитор таким образом, что задняя стенка направлена на другого человека.

В последнее время всё большей популярностью начинают пользоваться жидкокристаллические дисплеи. С точки зрения безопасности этот тип монитора намного предпочтительнее ЭЛТ-мониторов, поскольку излучают на порядок меньше, отсутствует раздражающее человеческий глаз мерцание, благодаря чему уже на частоте 60 Гц не вызывают усталости глаз и позволяют комфортно работать. К тому же за последние годы этот тип мониторов непрерывно дешевеет и 15’’ монитор сегодня стоит немногим больше $300, что несравнимо меньше стоимости этих же мониторов всего год-два назад. Если к этому прибавить высокую эргономику LCD мониторов, то получается практически идеальный вариант для фирмы, которая заботится о здоровье сотрудников.

  1.  Микроклимат помещения

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

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

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

Оптимальные нормы температуры, относительной влажности и скорости движения воздуха в рабочей зоне производственного помещения в соответствии с ГОСТ 12.1.005-88 [15] приведены в табл.

Таблица 8. Оптимальные нормы температуры, относительной влажности

и скорости движения воздуха

Период года

Категория работы

Температура, С

Относительная влаж. воздуха, %

Скорость движения воздуха, не более м/с

Холодный и переходный

легкая

20-23

60-40

0,2

Теплый

легкая

22-25

60-40

0,2

  1.  Шумы

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

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

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

Современная шумоизоляция, применяемая при строительстве также оказывает положительный эффект на шумовое давление.

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

Оптимальные показатели уровня шумов в рабочих помещениях конструкторских бюро, кабинетах расчетчиков, программистов определяются по ГОСТ 12.1.003-83 [16].

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

Таблица 9. Уровни звукового давления в октавных полосах

Уровень шума, Дб

63

152

250

500

1000

2000

4000

8000

Частота, Гц

71

61

54

49

45

42

40

38

Допустимый уровень шума при умственном труде, требующем сосредоточенности - 50дБ.

  1.  Психофизиологические факторы

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

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

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

Работа менеджера не слишком разнообразна и практически представляет собой цикл повторяющихся действий. Такой режим работы приводит к утомлению, что снижает производительность труда. Для того чтобы избежать влияния этого фактора, рекомендуется делать перерывы в работе, в течение которых выходить из-за компьютера, желательно на улицу. Также не следует «зарабатываться» даже при большом количестве работы – здоровье важнее.

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

  1.  Нерациональное освещение.

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

СанПиН 2.2.2.542-96 устанавливает следующие нормы для искусственной  освещённости. Освещенность на поверхности стола в зоне размещения рабочего документа должна быть не менее 300 лк. Допускается установка светильников местного освещения для подсветки документов. При работе с монитором Ен должно составлять 150 лк. Следует ограничивать неравномерность распределения яркости в поле зрения пользователя ВДТ и ПЭВМ, при этом соотношение яркости между рабочими поверхностями не должно превышать 3 : 1 - 5 : 1, а между рабочими поверхностями и поверхностями стен и оборудования - 10 : 1. В качестве источников света при искусственном освещении должны применяться преимущественно люминесцентные лампы типа ЛБ. При устройстве отраженного освещения в производственных и административно - общественных помещениях допускается применение металлогалогенных ламп мощностью до 250 Вт. Допускается применение ламп накаливания в светильниках местного освещения.

Для уменьшения усталости глаз чрезвычайно важно правильное освещение в рабочем помещении. Слишком слабое или сильное освещение приводит к утомлению глаз, неравномерное освещение – раздражает. Рассчитаем общее искусственное освещение в офисе методом использования светового потока.

Выбираем рекомендованные для машинного зала люминесцентные лампы для общего искусственного освещения.

Будем использовать светильники типа УСП-35 с двумя лампами типа ЛБ-40.

Длина помещения А = 16 м

Ширина помещения В = 8 м

Согласно нормам, нормируемая минимальная освещенность при общем освещении: Eн = 300 лк.

Так как запыленность воздуха меньше 1 мг/м³, то коэффициент запаса:

Кз = 1.5.

Площадь помещения S = A*B = 16*8 = 128 [м²].

Так как мы предполагаем создать достаточно равномерное освещение, то коэффициент неравномерности освещения: z = 1.15.

Индекс помещения:

Коэффициенты отражения светового потока принимаем:

от потолка ρп = 70%,

от стен ρс = 50%,

от пола ρпола = 10%.

Тогда по таблице находим коэффициент использования светового потока:

η = 0.46.

Так как затенения предполагаем не создавать, то коэффициент затенения:

γ = 1.

По таблице находим световой поток лампы ЛБ-40: Фл = 3120 лм.

Световой поток светильника: Фсв = 2*Фл = 6240 [лм].

Количество светильников в одном ряду:

Таким образом, для освещения комнаты офиса размера 16х8 используем 12 светильников типа УСП-35 с двумя лампами типа ЛБ-40.

  1.  Выводы

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

Заключение

Результатом работы над дипломным проектом стало создание рабочей версии информационной системы выбора оптимальных туристских маршрутов. В конечной версии программы реализованы все заложенные в ТЗ функции, программа отлажена и протестирована. Программа предназначена для внедрения в БП «Ориент». Актуальность программы позволит ускорить процесс продажи, а следовательно приведёт к увеличению прибыли.


Список литературы

Батищев Д.И. «Генетические алгоритмы решения экстремальных задач», Н.Новгород, 2006 г.

Зубов Н.Н., Пьянзин А.Я. Методические указания к дипломному проектированию по специальности «Программное обеспечение вычислительной техники и автоматизированных систем» /Под ред. В.Ф. Шаньгина; МИЭТ. М., 2010 г.

Карпов В.Э. «Об оформлении программной документации»

Статья «Генетические алгоритмы – эволюционные методы поиска» Исаев С.А. (http://saisa.chat.ru/ga/text/part1.html)

Статья «Популярно о генетических алгоритмах» Исаев С.А. (http://saisa.chat.ru/ga/ga-pop.html)

Статья «Эволюционно-генетический подход к решению задач невыпуклой оптимизации» Батищев Д.И., Исаев С.А., Ремер Е.К. (http://saisa.chat.ru/ga/summer98.html)

Статья «Оптимизация многоэкстремальных функций с помощью генетических алгоритмов» Батищев Д.И., Исаев С.А. (http://saisa.chat.ru/ga/summer97.html)

Статья «Генетические алгоритмы – математический аппарат» Стариков А. (http://www.basegroup.ru/genetic/math.htm)

Статья «Генетические алгоритмы» (http://www.math.nsc.ru/AP/benchmarks/UFLP/uflp_ga.html)

Илюшечкин В.М. “Конспект лекций по курсу “Базы данных”, 2008 г.

Архангельский А.Я. “Программирование в среде Delphi 6”,  “Издательство Бином”, 2009 г.

Ильина Е.И. «Туроперейтинг:  стратегия и финансы», М., «Финансы и статистика», 2007 г.

Квартальнов В.А. «Туризм», М., «Финансы и статистика», 2006 г.

Каракеян В.И. “Безопасность жизнедеятельности”, Москва, 2009 г.

«Руководство пользователя ПК «Мастер-тур»

Буч Г. «Объектно-ориентированный анализ и проектирование», «Издательство Бином», 2008 г.

Грин Н., Стаут У., Тейлор Д. «Биология» М., «Мир», 2010 г



 

А также другие работы, которые могут Вас заинтересовать

12021. Финансовые аспекты деятельности Фонда социального страхования РФ (на примере Воронежского регионального отделения Фонда) 116.87 KB
  2 ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА НА ТЕМУ: Финансовые аспекты деятельности Фонда социального страхования РФ на примере Воронежского регионального отделения Фонда СОДЕРЖАНИЕ Введение 1 Теоретические основы финансов Фонда социального стр
12022. Основы банковского дела 786.5 KB
  Т.М. Иванова Основы банковского дела Учебно-методический комплекс Челябинск Содержание Методические указания 3 Тема 1. История возникновения и развития банков
12023. Виды банковских услуг и проблемы их развития 794 KB
  В настоящее время происходит изменение структуры дохода коммерческих банков. Пора получения сверхвысоких прибылей от спекулятивных операций на рынке про
12024. Пример проведения оценки финансового состояния коммерческого банка с точки зрения рейтинговой системы CAMEL(S) 739.5 KB
  PAGE 7 EMBED Equation.3 EMBED Equation.3 EMBED Equation.3 EMBED Equation.3 EMBED Equation.3 EMBED Equation.3 EMBED Equation.3 EMBED Equation.3 EMBED Equation.3 EMBED Equation.3 ВВЕДЕНИЕ Наблюдавшаяся в последнее десятилетие нестабильность мировых финансовокредитных отно
12025. Регулирования информационных и телекоммуникационных рисков на примере ОАО АКИБАНК 750.5 KB
  Содержание Введение 1.Банковские риски роль и место риска использования информационных и телекоммуникационных систем в кредитных организациях РФ 1.1 Понятие и сущность операционного риска 1.2 Управление банковскими рисками 2. Оценка и анализ рисков использов
12026. Банкротство и санация банков: целевые приоритеты и методы реализации 564.5 KB
  ДИПЛОМНАЯ РАБОТА На тему: Банкротство и санация банков: целевые приоритеты и методы реализации СОДЕРЖАНИЕ ВЕДЕНИЕ Несостоятельность банкротство кредитной организации Развитие законодательства о банк...
12027. Інфляція: суть, причини та соціально-економічні наслідки 633.5 KB
  КУРСОВА РОБОТА З дисципліни: Політична економія На тему: Інфляція: суть причини та соціальноекономічні наслідки І. Вступ Перехід нашої економіки на ринкові відносини різко підвищив значення грошей. Проблеми грошового господарства с
12028. Анализ действующей практики предоставления услуг коммерческими банками в Республики Казахстан 670 KB
  СОДЕРЖАНИЕ ВВЕДЕНИЕ Теоретические аспекты предоставления услуг коммерческими банками Сущность банковских услуг и продуктов Классификация банковских услуг Анализ действующей практики предоставления услуг коммерческ
12029. ПУТИ СОВЕРШЕНСТВОВАНИЯ КРЕДИТНЫХ РЕСУРСОВ В СБЕРБАНКЕ РФ 637.5 KB
  СОДЕРЖАНИЕ ВВЕДЕНИЕ 5 1 ИСТОЧНИКИ И ЗНАЧЕНИЕ КРЕДИТНЫХ 11 РЕСУРСОВ В ДЕЯТЕЛЬНОСТИ БАНКА 1.1 Понятие кредитных ресурсов факторы определяющие 11 их объем и структуру 1.2 Особенности формирования кредитных ресурсов 29 в Сбербанке РФ 2 АНАЛИЗ ПРАК