Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Гвоздицин Александр.doc
Скачиваний:
12
Добавлен:
19.04.2013
Размер:
64 Кб
Скачать

Построение имитационной модели для нахождения оптимального количества машин на линии.

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

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

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

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

Заявки поступают в случайное время, причем в среднем за шаг времени моделирования, равного 1 минуте поступает такое количество заявок, которое характеризуется интенсивностью и описывается с помощью Уравнений 2. Моделирование проводится для одного маршрута, определяемого пользователем и для произвольно заданного пользователем числа обслуживающих каналов - машин, за период, равный одной неделе. Предполагается, что заявки начинают поступать в систему с начала работы транспортной фирмы - с 7 часов утра и заканчивают поступать в 22 часа вечера.

Программная реализация моделирования данной системы написана на языке Pascal среды визуального программирования для Windows - DELPHI и прилагается на дискете к данному курсовому проекту. Главную форму этого приложения можно увидеть в Приложении 2 (Форма 1), а листинг программы в Приложении 3.

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

Таблица 2. Оптимальное количество машин на линиях.

Маршрут N

1

2

3

4

5

Оптимальное

количество

машин

14

18

28

24

20

Прибыль(тыс)

Пассажиров

38105

16754

42233

16486

57618

16333

53855

16551

47396

16457

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

Решение основной задачи: программная реализация.

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

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

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

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

----------------------------------------------------------------------------------------------

Идентификатор Переменная

ДФ Оi

И costs

B profit

БН petrol

КПЖ pass

КМ dist

МАШ cars

ЗП salary

РМ remont

ИНТ описана в программе формулами

ДРМ описана в программе формулами

ССЛ сartime

ДН day

ВС time

----------------------------------------------------------------------------------------------

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

Программа функционирует следующим образом (при нажатии кнопки “Моделирование...”) :

Для каждого варианта (5 маршрутов и 7 маршрутов) формируется текущее время и день недели; в зависимости от этих данных формируется случайная величина пассажиропотока, которая подчинена закону распределения графика интенсивности. Затем проверяется, нет произошло ли в текущий момент времени поломок маршрутных такси. Если поломки произошли, то для каждого отдельного случая определяется длительность ремонта такси, которая зависит от срока эксплуатации данной машины, и определяется время, когда такси будет снова находиться в рабочем состоянии, путем прибавления к текущему времени время ремонта. Далее следует проверка на наличие свободного обслуживающего канала (такси на месте посадки пассажиров). Если такси присутствует, то 10 заявок или меньше (сколько на данный момент находится в очереди) обслуживаются, при этом определяется время, через которое обслуживающий канал снова будет свободен, если с ним не произойдет поломки, - к текущему времени добавляется время обслуживания заявок и возвращения обратно. Если такси на посадочной станции отсутствует, то заявки становятся в очередь, причем если только длина очереди не достигла еще 30 заявок. В последнем случае заявки покидают систему и далее не рассматриваются.

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

Издержки формируются следующим образом:

заработная плата водителям - равна 10% от выручки, и, следовательно, равна произведению - (кол-во пассажиров*стоим-ть проезда*0,1);

затраты на бензин складываются из количества пройденных машинами километров и цены бензина на километр - (2*dist*petrol*0,15) , где 0,15 - литра на километр (из расчета 15 л - 100 км);

Затраты на ремонт - случайное значение - от 1 тыс до 40 тыс рублей.

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

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

Важной характеристикой программы является то, что пользователь может изменять исходные данные для модели, имея текст программы или файл данных ‘datafile.txt’.

Данная модель, как и побочная задача, написана на языке DELPHI для Windows.

Главное окно программы показано в Приложении 2 (Форма 2), а текст программы приведен в Приложении 4.

После многократных прогонов данной модели на ЭВМ и анализа полученных результатов можно сделать вывод о том, что эффективность использования семи маршрутов, отнесенная к эффектиности использования пяти маршрутов, в данных оговоренных выше условиях равна, в среднем, 139.8%, т. е. прибыль компании, при использовании семи маршрутов вместо пяти, повышается на 39.8%, что говорит об эффективности увеличения количества используемых линий до семи. При этом величина прибыли компании увеличивается (тыс руб) со 170704 до 235451.

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

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

Пусть имеются три отношения:

I “Сведения о сотрудниках фирмы”

СФ {ФИО , Должность, Стаж, Адрес, Дата поступления на работу}

Обозначения: fio, prof, exp, addr, date

База:

Иванов директор 15 Клязьминская ул 01.09.87

Петров бухгалтер 11 Новый Арбат ул 11.10.87

Сидоров водитель 3 Череповецкая ул 01.03.95

Орлов водитель 5 Волгоградский пр-т 21.04.94

Соколов водитель 4 Алтуфьевское ш. 17.11.94

Давыдов водитель 7 Широкая ул. 08.08.92

.............. ............ .. ...............................

II “Сведения о заработной плате водителей за предыдущий месяц”

ЗП {ФИО, Зарплата}

Обозначения fio sal

База:

Сидоров 800.000

Орлов 1050.000

Соколов 945.000

Давыдов 1275.000

................. ..............

III “Сведения об ответственности за машины фирмы”

ОТ {Номер машины, Маршрут, ФИО водителя}

Обозначения: ncar, line, fio

База:

1221ммт 2 Сидоров

4545ммт 1 Орлов

3212ммт 3 Соколов

7891ммт 5 Давыдов

............... ..... .................

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

1) Найти всех водителей 1 маршрута, у которых заработная плата превышает 1 млн руб.

Решение: {V[fio]/(V1 Î ОТ)Ù(V2ÎЗП)Ù(V1(line)={“1”})Ù(V2(sal)>1000.000)}

В результате выведется фамилия (из введенных): Орлов

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

ФИО (sel Маршрут=“1” (ОТ) join Зарплата>1000.000 (ЗП))

2) Напечатать фамилии сотрудников фирмы, не являющихся водителями, стаж которых превышает 5 лет:

Решение: {V[fio]/(V1 Î СФ)Ù(V1(prof)<>{“водитель”})Ù(V1(exp)>{“5”})}

Реляц алгебра: proj ФИО( ФИО (СФ) difference ФИО(ЗП) sel Стаж>5 (СФ))

3) Найти водителей, которые являются сотрудниками фирмы с 1993 г.

Решение: {V[fio]/(V1ÎСФ)Ù(V1(prof)={“водитель”})Ù(V1(date)>=“01.01.93”)}

proj ФИО (sel Должность=“водитель” and Дата>=“01.01.93” (СФ))

4) Найти адрес водителя, работающего на машине с номером “1221ммт”

Решение: {V[addr]/(V1ÎCФ)Ù(V2ÎОТ)Ù(V1(fio)=V2(fio))Ù(V2(ncar)={“1221ммт”})}

proj Адрес (sel Номер машины=“1221ммт” join СФ)

5) Вывести номера машин 4-го маршрута, которыми управляют водители со стажем не менее 3-х лет.

Решение: {V[ncar]/(V1ÎСФ)Ù(V2ÎОТ)Ù(V2(line)=“4”)Ù(V1(exp)>=3)Ù(V1(fio)=V2(fio)}

proj Номер машины(sel Cтаж>=“3” (CФ) join sel Номер маршрута=“4” (OT)).