Моделирование работы порта

Автор работы: Пользователь скрыл имя, 01 Февраля 2011 в 22:35, курсовая работа

Краткое описание

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

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

- анализ предметной области;

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

- разработать программу;

- провести тестирование;

- оформить объяснительную записку.

Содержание работы

ВВЕДЕНИЕ……………………………………………………………………
РАЗДЕЛ 1 АНАЛИЗ ПРЕДМЕТНОЙ ОБЛАСТИ……………………………

1.1. Основные понятия теории очередей……………………………………

1.2. Моделирование работы порта……………………………………………

1.3. Модельное время…………………………………………………………

1.4. Выводы……………………………………………………………………

РАЗДЕЛ 2 ОБОСНОВАНИЕ ВЫБОРА ПРОГРАММНЫХ СРЕДСТВ……

2.1. Стандартная библиотека STL……………………………………………

2.2. Выводы……………………………………………………………………

РАЗДЕЛ 3 ОПИСАНИЕ РАЗРАБОТАННОГО

ПРОГРАММНОГО ПРОДУКТА……………………………………………

3.1. Классы и объекты…………………………………………………………

3.2. События и методы…………………………………………………………

3.3. Реализация интерфейса……………………………………………………

3.4. Выводы……………………………………………………………………

РАЗДЕЛ 4 РУКОВОДСТВО ПРОГРАММИСТА……………………………

4.1. Назначение и условия применения программы…………………………

4.2. Состав программного продукта…………………………………………

4.3. Входные и исходные данные……………………………………………

РАЗДЕЛ 5 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ……………………………

5.1. Назначение программы…………………………………………………

5.2. Условия выполнения программы…………………………………………

5.3. Сообщение пользователю…………………………………………………

ВЫВОДЫ………………………………………………………………………

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

Приложение А Текст программы……………………………………………
6

Содержимое работы - 1 файл

kursovoy.doc

— 324.50 Кб (Скачать файл)

                                     //и отчаливания

const static int storm_median=240;  //4 часа - средняя длительность  шторма

const static int storm_offset=120;  //2 часа - максимальное  отклонение

                                     //от среднего для длительности  шторма

// const static float storm_mu=0.021;  //1/48, где 48 часов - средняя

                                     //длительность "бесштормового"

                                     //интервала времени

int to_arrival;                   //время до прибытия танкера  типов 1,2,3

int to_in;                        //время до окончания причаливания

int to_out;                       //время до окончания отчаливания

ListNode<Tanker> *queue_in;       //очередь  на причаливание

ListNode<Tanker> *queue_out;      //очередь на  отчаливание

Tanker *serving;                  //обслуживаемый танкер

int que_inLength;                 //длина очереди на причаливание

int que_outLength;                //длина очереди на отчаливание

int to_sStart;                    //время до начала шторма

int to_sEnd;                      //время до окончания шторма

void *p;                          //указатель на порт

public:

Tug();

void stormStart();                //начало шторма

void stormEnd();                  //окончание шторма

void Arrival_Sea(Tanker4 *t);     //прибытие танкера  четвертого типа

void Arrival_Sea();               //прибытие танкера типов 1,2,3

  void Arrival_coast(Tanker *t);   //танкер требует отчаливания

void Departure();                 //окончание отчаливания

void Arrival();                   //окончание причаливания

void run();                       //диспетчер

void putPort(Port *a);

void choice();                    //выбор танкера для обслуживания

void Print();

};

//Класс  Порт

class Port

{

const static int volume=3;

ListNode<Tanker> *queue;          //очередь  на погрузку

Tanker **serving;                 //загружаемые танкеры

int *to_serve;                    //время до окончания погрузки

int q_length;                     //длина очереди

void *t;                          //указатель на буксир

public:

  Port();

  ~Port();

  void Arrival(Tanker *a);         //прибытие танкера

  void Complete(int i);            //завершение погрузки

  void putTug(Tug *a);

  void Print();

  int FirstAvail();

  int Busy();

  void run();                      //диспетчер

};

     3.3. Реализация интерфейса 
 

     Программа состоит из формы Form1, на которой расположены элементы label в количестве 26, 2 элемента textBox, 1 элемент button. Список элементов и их свойств представлены в таблице 3.1. 
 
 

    Таблица 3.1

    Элементы  и их основные свойства 

Объект Значение поля Text/Caption Описание
1 2 3
Label1 Время моделирования Надпись
Label2 Число танкеров четвертого типа Надпись
Label3 Завершили цикл обслуживания в порту Надпись
Label4 Из них танкеров типов 1,2,3 Надпись
Label5 Из них танкеров 4 типа Надпись
Label6 Средняя длина  очереди на причаливание Надпись
Label7 Средняя длина  очереди на отчаливание Надпись
Label9 Среднее время  пребывания на погрузку Надпись
Label10 Среднее время  пребывания на погрузке для танкеров типов 1,2,3 Надпись
Label11 Среднее время  пребывания на погрузке для танкеров 4 типа Надпись
Label12 Коэффициент загрузки буксира Надпись

Продолжение таблицы 3.1

1 2 3
Label13-22 Не рассчитано Расчетные значения
textBox1 10000 Время моделирования
textBox2 5 число танкеров 4 типа
Button1 Рассчитать Надпись. Нажать для начала расчета
GroupBox Собранные данные Поле с расчетными данными
 

class TForm1 : public TForm

{__published: // IDE-managed Components

        TGroupBox *GroupBox1;

        TLabel *Label1;

        TLabel *Label2;

        TEdit *Edit1;

        TEdit *Edit2;

        TButton *Button1;

        TLabel *Label3;

        TLabel *Label4;

        TLabel *Label5;

        TLabel *Label6;

        TLabel *Label7;

        TLabel *Label9;

        TLabel *Label10;

        TLabel *Label11;

        TLabel *Label12;

        TLabel *Label13;

        TLabel *Label14;

        TLabel *Label15;

        TLabel *Label16;

        TLabel *Label18;

        TLabel *Label19;

        TLabel *Label20;

        TLabel *Label21;

        TLabel *Label22;

        void __fastcall Button1Click(TObject *Sender);

public:  // User declarations

        __fastcall TForm1(TComponent* Owner);};

     3.4. Выводы 
 

     Созданы четыре класса: Tanker, Tanker4, Tug, Port.

     Базовым классом будет класс неименованных  заявок (Tanker), а производным от него — расширенный класс именованных заявок (Tanker4).

     Для Tanker/Tanker4 можно выделить следующие события:

    • танкер находится в очереди на причаливание. Штормит;
    • танкер находится в очереди на причаливание. Шторма нет;
    • танкер причаливает;
    • танкер находится в порту в очереди на погрузку;
    • танкер грузится в порту;
    • танкер находится в очереди на отчаливание. Штормит;
    • танкер находится в очереди на отчаливание. Шторма нет;
    • танкер отчаливает;
    • танкер типа 4 находится в пути;

     Танкеры выполняют в системе роль заявок, поэтому они не имеют моделирующих методов — все события, происходящие с ними, принимаются и обрабатываются объектами-серверами (Tug).

     Для объекта Port событий всего два:

    • прибытие очередного танкера;
    • завершение погрузки.

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

 

      РАЗДЕЛ 4 руководство программиста 
 

     4.1. Назначение и условия применения программы 
 

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

     Программный продукт может быть запущен на выполнение при наличии персонального  компьютера под управлением ОС Windows 9x/NT. 
 

     4.2. Состав программного продукта 
 

     Программный продукт состоит из следующих  файлов:

  • List.h — файл шаблоных классов;
  • random.h — файл для генерации случайных чисел (экспоненциальный и равномерный закон распределения);
  • 12-2.h — файл, в котором описываются классы Tanker, Tanker4, Tug, Port;
  • Unit1.h – файл с описанием имеющихся элементов на форме;
  • Project1.cpp — файл, содержащий функцию WINAPI WinMain;
  • Unit1.cpp – файл, кодом обработки нажатия кнопки расчета и запуска программы на выполнение;
  • Project1.exe — исполняемый файл.

 

    4.3. Входные и выходные данные 
     

     В качестве входных параметров передаются: время моделирования (в минутах), количество танкеров четвертого типа.

     Выходными данными являются:

  • количество танкеров, завершивших цикл погрузки;
  • из них танкеров 1-3 типа;
  • из них танкеров 4 типа;
  • средняя длина очереди на причаливание;
  • средняя длина очереди на отчаливание;
  • среднее время пребывания на погрузку всех видов танкеров;
  • коэффициент загрузки буксира.

 

      Раздел 5 Руководство пользователя 
 

     5.1. Назначение программы 
 

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

     5.2. Условия выполнения программы 
 

     Программный продукт может быть запущен на выполнение при наличии персонального компьютера под управлением ОС Windows9x/NT.

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

 

      5.3. Сообщение пользователю. 
 

     Результат выполнения программы выглядит следующим  образом (рис. 5.1). 

 

     Рис. 5.1 — Результат выполнения программы.

 

      выводы 
 

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

     Было  принято решение выбрать средой разработки программного продукта Borland C++ Builder.

Информация о работе Моделирование работы порта