Файл: Маршрутное такси.pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 29.06.2023

Просмотров: 38

Скачиваний: 2

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Функция SEWK помещает узел в определенную точку пространства.

Функция GEOWAYопределяет расстояние между точками A и B по их географическим координатам.

Для данной задачи получен следующий граф (рис.1).

Рис.1. Граф модели

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

Узлы 2 и 7 имитируют соответственно очереди пассажиров и такси. Ключ 8 в начале работы модели находится в открытом состоянии (по умолчанию), а ключ 3 закрывается при приходе в очередь 2 первого транзакта. Это делается для того, чтобы в узел delet первым вошел транзакт-такси, а не пассажир (иначе пассажир станет “тележкой”).

Как только в delet войдет первый транзакт-такси, ключ 8 закрывается, а ключ 3 открывается. Теперь выходящие из генератора 6 транзакты-такси стоят в очереди 7, а транзакты-пассажиры заходят в узел delet (идет заполнение такси). Когда в узле накопится 10 транзактов-пассажиров, транзакт-такси перейдет в терминатор (заполненное такси уедет). Ключ 8 открывается, чтобы в delet мог зайти следующий транзакт-такси. Ключ 3 закрывается, чтобы транзакты-пассажиры стояли в очереди 2 до прихода в delet транзакта-такси.

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

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

#include <pilgrim.h>

float Pas=1.0; /* интервал прихода пассажиров */

float Tax=10.0; /* интервал прихода такси */

float Mod_time=360.0;

forward

{

modbeg(“Маршр. такси”, 5, Mod_time, (long)time(NULL),

none,2, none, 5, 2);

ag(“Пассажиры”, 1, none, expo, Pas, zero, zero, 2);

ag(“Такси”, 6, none, norm, Tax, Tax/3, zero, 2);

network(dummy, dummy)

{

top(2): queue(“Пассажиры”, none, 3);

clcode

if (addr[2]->na == 1)

hold(3); /* начальное размыкание ключа */

place;

top(3): key(“Есть такси?”, 4);

place;

top(4): delet(“Посадка в такси”, 0, 10, 5);

rels(3);

hold(8);

place;

top(5): term(“Такси уехало”);

hold(3);

rels(8);

place;

top(7): queue(“Такси”, none, 4);

place;

top(8): key(“Остановка свободна?”, 4);

place;

fault(123);


}

modend(“pilgrim.rep”, 1, 12, page);

return 0;

}

Анализ результатов

Результаты моделирования выводятся в виде таблицы.

Были получены следующие результаты:

Увеличим время прихода такси на остановку.

*------------------------------------------------*

| НАЗВАНИЕ МОДЕЛИ: Маршр. такси |

| ВРЕМЯ МОДЕЛИРОВАНИЯ: 360.02 Лист: 1 |

|----------------------------------------------|

| | | | | | | 2 | | | | |

| No | Наименование | Тип |Точ-|Загруз-| M [t] | C [t] |Счетчик|Кол.|Оcт.|Состояние узла|

|узла| узла | узла | ка |ка(%=),| среднее |квадрат |входов |кан.|тр. |в этот момент |

| | | | |Путь(км) время |коэф.вар.|и hold | | | |

|----+---------------+------+----+-------+---------+---------+-------+----+----+--------------|

| | | | | | | | | | | |

| 101 Пассажиры queue - - 4.99 2.07 353 1 1 открыт |

| 102 Есть такси? key - %= 52.3 5.23 0.95 36 1 0 открыт |

| 103 Посадка в такси delet - - 5.35 2.02 352 2 1 закрыт |

| 104 Такси уехало term - - 9.17 1.30 35 0 0 открыт |

| 105 Такси queue - - 4.60 2.36 37 1 1 открыт |

| 106 Остановка свобо key - %= 48.2 4.82 0.94 36 1 0 закрыт |

| 107 Пассажиры ag - - 1.02 1.02 353 1 1 открыт |

| 108 Такси ag - - 9.51 0.09 38 1 1 открыт |

 Уменьшилось ненамного число пассажиров (из-за уменьшения времени моделирования);

 Число такси увеличилось до 36 и уехало 35;

 В такси село 352 пассажира.

Заключение

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

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

Список использованной литературы

  1. Афанасьев М.Ю., Суворов Б.П. Исследование операций в конкретных ситуациях. - М.: Изд-во МГУ, 1999.
  2. Березин Д.А. Компьютерное моделирование систем массового обслуживания. Учебно-методическое пособие. Екатеринбург: Изд-во УрГУ, 2005
  3. Варфоломеев В.И. «Алгоритмическое моделирование элементов экономических систем». - М.: Финансы и статистика, 2000г.
  4. Емельянов А.А., Власова Е.А. Имитационное моделирование экономических процессов. - М. Московский международный институт эконометрики, информатики, финансов и права. 2002. – 92 с.
  5. Кеольтон В., Лод А. «Имитационное моделирование. Классика CS» издание 3-е, 2004г.;
  6. Кобелев Б.Н. Основы имитационного моделирования сложных экономических систем. - М.: Дело, 2003.