Разработка имитационной модели организации работы маршрутных микроавтобусов

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    692,9 Кб
  • Опубликовано:
    2014-03-19
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Разработка имитационной модели организации работы маршрутных микроавтобусов

Министерство образования и науки Российской Федерации

ФЕДЕРАЛЬНОЕ ГОСУДАРСТВЕННОЕ БЮДЖЕТНОЕ ОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ

ВЫСШЕГО ПРОФЕССИОНАЛЬГО ОБРАЗОВАНИЯ

"ОРЕНБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ"

Факультет экономики и управления

Кафедра прикладной информатики в экономике и управлении

 

 

 

 

Задание на курсовой проект

Разработка имитационной модели организации работы маршрутных микроавтобусов

 

 

 

Руководитель:

Кандидат экономических наук, доцент И.А. Цыганова

Исполнитель:

Студент группы 11ПИ (б) Эк А.М. Горюнова

Содержание

 

Введение

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

1.2 Содержательная постановка задачи

1.3 Обоснование выбора программного средства

2. Разработка имитационной модели

2.1 Алгоритм работы имитационной модели маршрутных микроавтобусов

2.2 Особенности функционирования разработанной имитационной модели

2.3 Описание работы имитационной модели парка маршрутных микроавтобусов

3. Испытание и исследование имитационной модели

3.1 План организации вычислительного эксперимента

3.2 Анализ результатов работы имитационной модели маршрутных микроавтобусов

Заключение

Приложения

Исходные данные

1) методические указания по выбору метода разработки программного средства и среды его реализации;

) терминологическая база теории вероятностей и теории СМО;

) статистические данные о работе парка маршрутных микроавтобусов;

) проектные данные по расчету;

Разработать:

) имитационную модель работы маршрутных

микроавтобусов;

) алгоритм имитационной модели работы маршрутных микроавтобусов;

) проект процесса имитации нескольких экономических ситуаций;

) план организации вычислительного эксперимента;

) интерфейсные компоненты программного средства.

Введение


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

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

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

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

имитационная модель маршрутный микроавтобус

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

Цель исследования:

построить имитационную модель;

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

Задачи исследования:

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

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

определить выручку со всех маршрутных микроавтобусов в течение всего рабочего дня (время имитации 16 часов).

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

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

1. Теоретические аспекты системы массового обслуживания

 

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


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

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

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

Основными компонентами в модели очереди являются:

описание входящего потока требований;

описание способа, которым выполняется обслуживание (т.е. описание дисциплины обслуживания);

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

В зависимости от наличия возможности ожидания поступающими требованиями начала обслуживания СМО подразделяются на:

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

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

Любая система массового обслуживания может включать в себя следующие элементы:

входящий поток требований или заявок на обслуживание;

очередь;

обслуживающее устройство;

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

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

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

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

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

Принципиальными характеристиками очереди являются:

длина очереди в различные моменты времени;

общая продолжительность нахождения требования в системе обслуживания (т.е. время, потраченное на ожидание в очереди, плюс собственное время обслуживания);

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

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

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

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

Для моделирования СМО необходимо иметь следующие исходные данные:

основные параметры;

граф состояний.

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

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

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

Выбор требования из очереди на обслуживание производится с помощью, так называемой, дисциплины обслуживания. Их примерами являются FCFS/FIFO (первый пришел - первым вышел), LCFS/LIFO (последний пришел - первым вышел), а также random - случайный выбор заявки на обслуживание.

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

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

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

Для видов систем массового обслуживания используются следующие показатели эффективности:

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

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

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

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

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

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

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

Поведение системы зависит от того, как связаны между собой величины a и b. Возможны три случая.

Случай b > a. Это значит, что скорость обслуживания 1/b меньше, чем скорость поступления требований 1/a, т.е. требования обслуживаются и покидают систему медленнее, чем прибывают. Следовательно, в этом случае будет образовываться очередь и она будет постоянно возрастать.

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

Если же первоначально имеется очередь, то ее длина будет оставаться постоянной.

Случай b < a. Это значит, что скорость обслуживания больше, чем скорость поступления требований. Следовательно, какое бы ни было начальное число ожидающих обслуживания требований, длина очереди будет сокращаться до 1 или 0.

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

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

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

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

1.2 Содержательная постановка задачи


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

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

время моделирования (время работы маршрутного микроавтобуса) 16 часов. Это рабочее время реального парка микроавтобусов одного из городских маршрутов с 8: 00 до 0: 00. По истечению этого времени микроавтобусы сходят с маршрута;

интервал прихода пассажиров подчиняется экспоненциальному закону распределения.

Среднее время 2-5 минут в дневное время и 1-2 в час-пик.

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

Вероятность того, что пассажир проедет некоторое количество остановок, задана в таблице 1.1.

Вероятность

0,1

0,15

0,2

0,25

0,3

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

 3

 4

 5

 6

 7


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

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

количество микроавтобусов на маршруте. Данная информация позволит сформировать оптимальный набор парка микроавтобусов;

количество мест в маршрутном микроавтобусе. Эти данные также будут корректироваться для выявления наиболее экономически эффективного положения дел;

количество остановок на маршруте 20. Данный тип исходных данных фиксирован как и общее время имитации;

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

Рисунок 2.1 - Алгоритм поступления пассажиров на остановку

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

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

2.2 Особенности функционирования разработанной имитационной модели


В рамках курсового проекта имитационная модель работы парка микроавтобусов разработана на платформе Microsoft Visual Studio 2010 c помощью конструкций языка С#. Листинг программы представлен в приложении Б настоящего курсового проекта.

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

Класс остановка (Class ostanovk) - описывает каким образом реализованы процессы, происходящие на остановочных пунктах маршрута. В классе организовано хранение количества пассажиров на остановках, осуществляется наполнение остановок, исходя из заданного промежутка времени.

Переменные класса:

Public int [] HourRange - хранит интервалы времени соответственно часам;

Public int [] Kolvo - хранит количества пассажиров на каждом из остановочных пунктов;

Public int [] Wait - хранит время каждой остановки, через которое пассажир придёт на остановку;

Public int kol - хранит общее количество пассажиров, пришедших на остановки;

Public void Tic (int hour) - реализует подход пассажиров.

Класс автобус (Class avtobus) содержит переменные и методы необходимые для описания организации движения микроавтобусов по маршруту.

Переменные класса:

Public int [,] matr - массив хранящий элементы соответствующие количеству остановок до выхода i-го пассажира. m-количество автобусов,n-количество мест в автобусе;

Public double [] km - хранит количество остановок прошедших автобусом;

Public int [] wait - отражает процесса ожидания автобусом в очереди, если на остановке уже находится другой маршрутный микроавтобус, либо ожидание пассажиров на остановке, при наличии свободных мест отведенного почасового интервала.

Методы и функции класса:

Public void FirstAvto (int per) - освобождает автобусы и задаёт промежутки выезда per;void SetT (int i, int val) - задаёт сколько осталось до следующей остановки заданного автобуса;int GetT (int i) - выводит сколько времени осталось до следующей остановки заданного автобуса;int GetK (int i) - выводит номер остановки заданного автобуса;int free (int i) - выводит количество свободных мест в заданном автобус;int In (int i, int kol) - переключает счётчик остановок пассажиров, загружает заданное количество и возвращает скольким пассажирам на остановке не хватило мест в микроавтобусе;int Out (int i) - метод отражает выгрузку и показывает сколько пассажиров выгружено;

В программе имеют место также, помимо локальных переменных того или иного класса, глобальные переменные, а именно:

Private int oborot - хранит количество обслуженных пассажиров;

Private int avtoch - хранит время ожидания автобусов в очереди;

Private int pas - хранит количество пассажиров на остановках.

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

2.3 Описание работы имитационной модели парка маршрутных микроавтобусов


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

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

При запуске программы пользователю, которым может быть владелец парка маршрутных микроавтобусов, необходимо 2 типа исходных данных - корректируемые данные и данные, фиксированные окружающей действительностью. Интерфейс программного продукта, разработанного в рамках данного курсового проекта, представлено на рисунке 2.2 - Окно программного средства.

К корректируемым данным следует отнести:

количество автобусов, вышедших на маршрут в конкретно заданный рабочий день;

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

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

время выхода автобусов на маршрут, то есть интервал движения автобусов.

Рисунок 2.2 - Окно программного средства

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

В качестве фиксированных исходных данных модели следует пользователю заполнить такие графы как:

количество остановок на маршруте;

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

После заполнения всех граф, пользователю необходимо нажать клавишу "Старт". Это действие запустит программу. В процессе имитации будет отслеживаться очередь пассажиров и микроавтобусов на остановке. В окне программы также будет указано сколько остановок было пройдено, какова общая прибыль за день и сколько пассажиров было обслужено за весь рабочий день, то есть время имитации 16 часов (с 8: 00 ч до 0: 00 ч). Итог выполнения программы отражен на рисунке 2.3 - Окно программного средства с результатами имитации.

Рисунок 2.3 - Окно программного средства с результатами имитации

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

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

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

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

3. Испытание и исследование имитационной модели


3.1 План организации вычислительного эксперимента

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

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

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

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

)        реальным объектом (система);

2)      имитационной моделью объекта;

)        информационно-вычислительной системой (ИВС).

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

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

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

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

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

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

3.2 Анализ результатов работы имитационной модели маршрутных микроавтобусов

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

Например, при 10 микроавтобусах с вместимостью "маршруток" в 12 посадочных мест прибыль составляет 68445 рублей, но при этом чуть более трети потенциальных пассажиров так и останутся не обслуженными, хотя время задержек микроавтобусов относительно невелико - 323 минуты за 16 часов имитации. Результаты такого соотношения входа и выхода представлено на рисунке 3.1.

Рисунок 3.1 - Результаты имитации

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

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

Рисунок 3.2 - Результаты имитации

Если на маршрут города выпустить слишком много автобусов, например 40, то 10 из микроавтобусов так и останутся стоять в парке, а издержки за содержание машин у владельца парка также будут иметь место. К тому же, в этом случае будет иметь слишком большая очередь из микроавтобусов на конечной остановке, ожидающих выхода последнего. В этой связи лишь треть потенциальных пассажиров будет обслужено, а большая их часть так и останутся в очереди. Небольшое количество микроавтобусов на маршруте, но с большой вместимостью тоже не решение задачи, поскольку около половины мест будут оставаться свободными, что не рентабельно. Очевидно, что оптимальное количество микроавтобусов, порядка 10, но с небольшой вместимостью, будет приносить достаточный уровень прибыли, минимальный показатель свободных мест, низкий уровень очередей "маршруток", но, при этом, будут высоки значения очередей потенциальных пассажиров на остановке, чуть более половины из них будут обслужено (порядка 59%).

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

Рисунок 3.3 - Результаты имитации

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

Пиковое значение пассажиропотока в 9 часов утра успешно обслуживается. Очередь из людей на остановке накапливается в период с 11: 00 до примерно 14: 50 часов. После этого графики, отражающие свободные места и людей на остановке пересекаются, затем происходит стабилизация и некоторый рост свободных мест в автобусах. В выше описанной ситуации более 86% пассажиров было обслужено.

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

Заключение


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

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

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

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

)        определить интервал движения микроавтобусов. Слишком частое циркулирование маршрутных микроавтобусов несет большие топливные издержки, большой же интервал движения влечет за собой длинные очереди на конечной остановке и большой объем пассажиров в ожидании на других остановочных пунктах. В результате проведенной работы выявлено, что время ожидания на остановках потенциальных пассажиров при наличии свободных мест лучше установить в 2 минуты, а интервал выхода на маршрут равным 1 минуте;

)        определить выручку со всех маршрутных микроавтобусов в течение всего рабочего дня (время имитации 16 часов). При выше описанных входных данных денежная прибыль составит 98265 рублей.

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

Приложения


Приложение А

Алгоритм работы имитационной модели


Приложение Б

Листинг программного средства имитационной модели

using System;System. Collections. Generic;System.componentModel;System. Data;System. Drawing;System. Linq;System. Text;System. Windows. Forms;WindowsFormsApplication1

{partial class Form1: Form

{mbit; Graphics gr; // графикаForm1 ()

{();

}DateTime time;double [] GrGetedPas,GrIncome,GrPas;avtobus avtopark;ostanovk ost;int oborot, avtoch, pas, oborothour, svobodnihmest,kolvopas;double maxi (double a, double b)

{(a > b)a;b;

}ostanovk

{int [] HourRange, Kolvo, Wait;int n,kol;ostanovk (int n)

{. kol = 0;. n = n;. HourRange = new int [16];. Kolvo = new int [n];. Wait = new int [n];(int i = 0; i < n; i++). Wait [i] = 0;

}void Tic (int hour)

{r = new Random ();(int i = 0; i < n; i++)(Wait [i] < 1)

{++;. Kolvo [i] ++;( (hour>15) && (hour<0)). Wait [i] = r. Next (-1,1) +HourRange [hour];. Wait [i] = r. Next (-1,1) +HourRange. Max ();

}. Wait [i] - -;

}

}avtobus

{int [,] matr;double [] km;int [] wait;int m, n;avtobus (int m, int n) // конструктор

{. matr = new int [m, n + 2];. m = m;. n = n;. km=new double [m];. wait = new int [m];

}void FirstAvto (int per) // опустошает автобусы и задаёт промежутки выезда

{(int i = 0; i < m; i++)(int j = 0; j < n; j++). matr [i, j] = - 1;(int i = 0; i < m; i++)

{ this. km [i] = 0; this. matr [i, n] = per * i; this. wait [i] = - 1; }(int i = 0; i < m; i++)

this. matr [i, n + 1] = 0;

}int GetT (int i) // выводит сколько осталось до след ост заданного авт

{matr [i, n];

}void SetT (int i, int val) // задаёт сколько осталось до след ост заданного авт

{. matr [i, n] = val;

}int GetK (int i) // выводит номер остановки заданного авт

{matr [i, n + 1];

}void SetK (int i, int val) // задаёт номер остановки заданного авт

{. matr [i, n + 1] = val;

}int free (int i) // выводит количество свободных мест в заданом авт

{k = 0;(int j = 0; j < n; j++)(matr [i, j] == - 1)++;k;

}int In (int i, int kol) // переключает счётчик остановок пасажиров, загружает заданное колво и возвращает сколько не вместилось

{(int j = 0; j < n; j++)(matr [i, j]! = - 1). matr [i, j] - -;k = 0;r = new Random ();(this. free (i)! = 0)(int j = 0; j < n; j++)( (matr [i, j] == - 1) && (k < kol))

{ this. matr [i, j] = r. Next (2,5); k++; }kol - k;

}int Out (int i) // выгружает и показывает сколько выгрузил

{k = 0;(int j = 0; j < n; j++)(matr [i, j] == 0)

{ this. matr [i, j] = - 1; k++; }k;

}bool CheckWork () // выводит true если на маршруте есть хотябы один автобус

{(int i = 0; i < m; i++)(matr [i,n]! =-1)true;

return false;

}void Tic () // уменьшает время до остановки всех автобусов

{(int i = 0; i < m; i++)(matr [i, n] > - 1). matr [i, n] = matr [i, n] - 1;

}int Exit (int i) // сход с маршрута возвращает выгруженных пасажиров

{k=0;(int j = 0; j < n; j++)(matr [i,j]! =-1)

{ this. matr [i, j] = - 1; k++; }. SetT (i, - 1);k;

}

}void Form1_Load (object sender, EventArgs e)

{= Convert. ToDateTime ("01.05.2014 08: 00: 00");. Text = Convert. ToString (time). Remove (0,11);

}void timer1_Tick (object sender, EventArgs e)

{r = new Random ();. Text = Convert. ToString (avtopark. GetK (comboBox1. SelectedIndex));. Text = Convert. ToString (avtopark. free (comboBox1. SelectedIndex));. Text = Convert. ToString (avtopark. km [comboBox1. SelectedIndex]);(avtopark. CheckWork ())

{(int i = 0; i < avtopark. matr. GetLength (0); i++)

{

{

// обработка очередей

{( (avtopark. matr. GetLength (0) > 1) && (avtopark. GetT (i)! = - 1))

{( ( (avtopark. km [i - 1] - avtopark. km [i]) < 1) && (avtopark. GetT (i - 1)! = - 1))

{ avtopark. SetT (i, avtopark. GetT (i) + 1); avtoch++; }

}( ( (avtopark. km [i] - avtopark. km [avtopark. matr. GetLength (0) - 1] - ost. n) > - 1) && (avtopark. GetT (avtopark. matr. GetLength (0) - 1)! = - 1))

{ avtopark. SetT (i, avtopark. GetT (i) + 1); avtoch++; }

}

}

}

// обработка проезда(avtopark. GetT (i) == 0)

{( (avtopark. GetK (i) == 0) && (time >= Convert. ToDateTime ("02.05.2014 00: 00: 00")))+= avtopark. Exit (i);

{ // на остановке+= avtopark. Out (i);(avtopark. free (i) > ost. Kolvo [avtopark. GetK (i)])(avtopark. wait [i])

{- 1: { avtopark. SetT (i, r. Next (1,3)); avtopark. wait [i] = 0; } break; // ожидание на остановке0:

{. Kolvo [avtopark. GetK (i)] = avtopark. In (i, ost. Kolvo [i]);. km [i] ++;(avtopark. GetK (i)! = ost. Kolvo. GetLength (0) - 1). SetK (i, avtopark. GetK (i) + 1);. SetK (i, 0);. SetT (i, Convert. ToInt32 (textBox3. Text));. wait [i] = - 1;

} break;

}

{. Kolvo [avtopark. GetK (i)] = avtopark. In (i, ost. Kolvo [i]);. km [i] ++;(avtopark. GetK (i)! = ost. Kolvo. GetLength (0) - 1). SetK (i, avtopark. GetK (i) + 1);. SetK (i, 0);. SetT (i, Convert. ToInt32 (textBox3. Text));. wait [i] = - 1;

}

}

}

}

}

{(true);. Enabled = false;. Enabled = false;. Enabled = true;. Text = Convert. ToString (oborot*Convert. ToInt32 (textBox5. Text));. Text = Convert. ToString (avtoch);. DroppedDown = false;. Items. Clear ();= new Bitmap (pictureBox1. Width, pictureBox1. Height);= Graphics. FromImage (mbit);MyPen = new Pen (Color. Lime);. FillRectangle (Brushes. Black, 0, 0, pictureBox1. Width, pictureBox1. Height);. DrawLine (MyPen, 20, 185, 20, 1); gr. DrawLine (MyPen, 21, 185, 21, 1);. DrawLine (MyPen, 20, 185, 310, 185); gr. DrawLine (MyPen, 20, 184, 310, 184);(int i = 0; i < 16; i++). DrawString (Convert. ToString (i + 8), new Font ("Arial",

), new SolidBrush (Color. Lime), 24 + i * 17, 186);. DrawString (Convert. ToString (0), new Font ("Arial",

), new SolidBrush (Color. Lime), 24 + 16 * 17, 186);(int i = 0; i < 17; i++). DrawLine (MyPen, 31 + i * 17, 185, 31 + i * 17, 1);(int i = 1; i < 17; i++). DrawLine (MyPen, 31 + (i - 1) * 17, - Convert. ToInt32 (165 * (GrIncome [i - 1] / GrIncome. Max ())) + 20 + 165, 31 + i * 17, - Convert. ToInt32 (165 * (GrIncome [i] / GrIncome. Max ())) + 20 + 165);. Image = mbit;= new Bitmap (pictureBox2. Width, pictureBox2. Height);= Graphics. FromImage (mbit);. FillRectangle (Brushes. Black, 0, 0, pictureBox2. Width, pictureBox2. Height);. DrawLine (MyPen, 20, 185, 20, 1); gr. DrawLine (MyPen, 21, 185, 21, 1);. DrawLine (MyPen, 20, 185, 310, 185); gr. DrawLine (MyPen, 20, 184, 310, 184);(int i = 0; i < 16; i++). DrawString (Convert. ToString (i + 8), new Font ("Arial",

), new SolidBrush (Color. Lime), 24 + i * 17, 186);. DrawString (Convert. ToString (0), new Font ("Arial",

), new SolidBrush (Color. Lime), 24 + 16 * 17, 186);(int i = 0; i < 17; i++). DrawLine (MyPen, 31 + i * 17, 185, 31 + i * 17, 1);. Color = Color. Red;(int i = 1; i < 17; i++). DrawLine (MyPen, 31 + (i - 1) * 17, - Convert. ToInt32 (165 * (GrPas [i - 1] / maxi (GrPas. Max (), GrGetedPas. Max ()))) + 20 + 165, 31 + i * 17, - Convert. ToInt32 (165 * (GrPas [i] / maxi (GrPas. Max (), GrGetedPas. Max ()))) + 20 + 165);. Color = Color. Yellow;(int i = 1; i < 17; i++). DrawLine (MyPen, 31 + (i - 1) * 17, - Convert. ToInt32 (165 * (GrGetedPas [i - 1] / maxi (GrPas. Max (), GrGetedPas. Max ()))) + 20 + 165, 31 + i * 17, - Convert. ToInt32 (165 * (GrGetedPas [i] / maxi (GrPas. Max (), GrGetedPas. Max ()))) + 20 + 165);. Image = mbit;

}

// графики( (time. Minute == 0) && (time <= Convert. ToDateTime ("02.05.2014 00: 00: 00")))

{k=time. Hour - 8;(k < 0) k = 16;[k] = pas;[k] = (oborot-oborothour) *Convert. ToInt32 (textBox5. Text);[k] = svobodnihmest;= oborot;= 0;= 0;

}(int i = 0; i < ost. n; i++)+=ost. Kolvo [i];(int i = 0; i < avtopark. matr. GetLength (0); i++)+= avtopark. free (i);(time == Convert. ToDateTime ("02.05.2014 00: 00: 00")). Text = Convert. ToString (oborot) + "/" + Convert. ToString (ost. kol);. Tic ();. Tic (time. Hour - 8);= time. AddMinutes (1);. Text = Convert. ToString (time). Remove (0,11);. PerformStep ();(button1. Text == "Продолжить"). Enabled = false;

}void textBox3_TextChanged (object sender, EventArgs e)

{s = "";(int i = 0; i < textBox3. TextLength; i++)( (textBox3. Text [i] <= '9') && (textBox3. Text [i] >= '0'))= s + textBox3. Text [i];. Text = s;

}void textBox2_TextChanged (object sender, EventArgs e)

{s = "";(int i = 0; i < textBox2. TextLength; i++)( (textBox2. Text [i] <= '9') && (textBox2. Text [i] >= '0'))= s + textBox2. Text [i];. Text = s;

}void textBox1_TextChanged (object sender, EventArgs e)

{s = "";(int i = 0; i < textBox1. TextLength; i++)( (textBox1. Text [i] <= '9') && (textBox1. Text [i] >= '0'))= s + textBox1. Text [i];. Text = s;

}void textBox4_TextChanged (object sender, EventArgs e)

{s = "";(int i = 0; i < textBox4. TextLength; i++)( (textBox4. Text [i] <= '9') && (textBox4. Text [i] >= '0'))= s + textBox4. Text [i];. Text = s;

}void textBox6_TextChanged (object sender, EventArgs e)

{s = "";(int i = 0; i < textBox6. TextLength; i++)( (textBox6. Text [i] <= '9') && (textBox6. Text [i] >= '0'))= s + textBox6. Text [i];. Text = s;

}void OnOff (bool b)

{. Enabled = b; textBox2. Enabled = b; textBox3. Enabled = b; textBox4. Enabled = b; textBox5. Enabled = b; textBox6. Enabled = b;. Enabled = b; textBox8. Enabled = b; textBox9. Enabled = b; textBox10. Enabled = b; textBox11. Enabled = b; textBox12. Enabled = b;. Enabled = b; textBox14. Enabled = b; textBox15. Enabled = b; textBox16. Enabled = b; textBox17. Enabled = b; textBox18. Enabled = b;. Enabled = b; textBox20. Enabled = b; textBox21. Enabled = b; textBox22. Enabled = b;

}void button2_Click (object sender, EventArgs e)

{(false);= Convert. ToDateTime ("01.05.2014 08: 00: 00");. Value = 0;= 0; avtoch = 0; pas = 0; oborothour = 0; svobodnihmest = 0; kolvopas = 0;= new avtobus (Convert. ToInt32 (textBox1. Text), Convert. ToInt32 (textBox2. Text));=new double [17];=new double [17];= new double [17];[0] = 0;[0] = 0;[0] = 0;(int i = 0; i < Convert. ToInt32 (textBox1. Text); i++). Items. Add (i);. SelectedIndex = 0;. FirstAvto (Convert. ToInt32 (textBox4. Text));= new ostanovk (Convert. ToInt32 (textBox6. Text) * 2);. HourRange [0] = Convert. ToInt32 (textBox7. Text);. HourRange [1] = Convert. ToInt32 (textBox8. Text);. HourRange [2] = Convert. ToInt32 (textBox9. Text);. HourRange [3] = Convert. ToInt32 (textBox10. Text);. HourRange [4] = Convert. ToInt32 (textBox11. Text);. HourRange [5] = Convert. ToInt32 (textBox12. Text);. HourRange [6] = Convert. ToInt32 (textBox13. Text);. HourRange [7] = Convert. ToInt32 (textBox14. Text);. HourRange [8] = Convert. ToInt32 (textBox15. Text);. HourRange [9] = Convert. ToInt32 (textBox16. Text);. HourRange [10] = Convert. ToInt32 (textBox17. Text);. HourRange [11] = Convert. ToInt32 (textBox18. Text);. HourRange [12] = Convert. ToInt32 (textBox19. Text);. HourRange [13] = Convert. ToInt32 (textBox20. Text);. HourRange [14] = Convert. ToInt32 (textBox21. Text);. HourRange [15] = Convert. ToInt32 (textBox22. Text);. Enabled = true;. Enabled = false;. Enabled = true;. Enabled = false;

}void button1_Click (object sender, EventArgs e)

{. Enabled =! timer1. Enabled;(timer1. Enabled == true)

{button1. Text = "Пауза"; button4. Enabled = false; }

{ button1. Text = "Продолжить"; button4. Enabled = true; }

}void comboBox1_SelectedIndexChanged (object sender, EventArgs e)

{(button1. Enabled==true)

{. Text = Convert. ToString (avtopark. GetK (comboBox1. SelectedIndex));. Text = Convert. ToString (avtopark. free (comboBox1. SelectedIndex));. Text = Convert. ToString (avtopark. km [comboBox1. SelectedIndex]);

}

}void button3_Click (object sender, EventArgs e)

{

}void button3_Click_1 (object sender, EventArgs e)

{( (button1. Enabled == true) && (time. Hour>8))

{(true);. Enabled = false;. Enabled = false;. Text = "Пауза";. Enabled = false;. Enabled = true;. Text = Convert. ToString (oborot * Convert. ToInt32 (textBox5. Text));. Text = Convert. ToString (avtoch);. DroppedDown = false;. Items. Clear ();= new Bitmap (pictureBox1. Width, pictureBox1. Height);= Graphics. FromImage (mbit);MyPen = new Pen (Color. Lime);. FillRectangle (Brushes. Black, 0, 0, pictureBox1. Width, pictureBox1. Height);. DrawLine (MyPen, 20, 185, 20, 1); gr. DrawLine (MyPen, 21, 185, 21, 1);. DrawLine (MyPen, 20, 185, 310, 185); gr. DrawLine (MyPen, 20, 184, 310, 184);(int i = 0; i < 16; i++). DrawString (Convert. ToString (i + 8), new Font ("Arial",

), new SolidBrush (Color. Lime), 24 + i * 17, 186);. DrawString (Convert. ToString (0), new Font ("Arial",

), new SolidBrush (Color. Lime), 24 + 16 * 17, 186);(int i = 0; i < 17; i++). DrawLine (MyPen, 31 + i * 17, 185, 31 + i * 17, 1);(int i = 1; i < 17; i++). DrawLine (MyPen, 31 + (i - 1) * 17, - Convert. ToInt32 (165 * (GrIncome [i - 1] / GrIncome. Max ())) + 20 + 165, 31 + i * 17, - Convert. ToInt32 (165 * (GrIncome [i] / GrIncome. Max ())) + 20 + 165);. Image = mbit;= new Bitmap (pictureBox2. Width, pictureBox2. Height);= Graphics. FromImage (mbit);. FillRectangle (Brushes. Black, 0, 0, pictureBox2. Width, pictureBox2. Height);. DrawLine (MyPen, 20, 185, 20, 1); gr. DrawLine (MyPen, 21, 185, 21, 1);. DrawLine (MyPen, 20, 185, 310, 185); gr. DrawLine (MyPen, 20, 184, 310, 184);(int i = 0; i < 16; i++). DrawString (Convert. ToString (i + 8), new Font ("Arial",

), new SolidBrush (Color. Lime), 24 + i * 17, 186);. DrawString (Convert. ToString (0), new Font ("Arial",

), new SolidBrush (Color. Lime), 24 + 16 * 17, 186);(int i = 0; i < 17; i++). DrawLine (MyPen, 31 + i * 17, 185, 31 + i * 17, 1);. Color = Color. Red;(int i = 1; i < 17; i++). DrawLine (MyPen, 31 + (i - 1) * 17, - Convert. ToInt32 (165 * (GrPas [i - 1] / GrPas. Max ())) + 20 + 165, 31 + i * 17, - Convert. ToInt32 (165 * (GrPas [i] / GrPas. Max ())) + 20 + 165);. Color = Color. Yellow;(int i = 1; i < 17; i++). DrawLine (MyPen, 31 + (i - 1) * 17, - Convert. ToInt32 (165 * (GrGetedPas [i - 1] / GrGetedPas. Max ())) + 20 + 165, 31 + i * 17, - Convert. ToInt32 (165 * (GrGetedPas [i] / GrGetedPas. Max ())) + 20 + 165);. Image = mbit;

}

}void button4_Click (object sender, EventArgs e)

{. Enabled = true;

}

}

}

Похожие работы на - Разработка имитационной модели организации работы маршрутных микроавтобусов

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!