     Санкт-Петербургский государственный технический университет
                  Факультет технической кибернетики

                       Отчет по курсовой работе:
               "Моделирование систем массового обслуживания"

       Учащегося группы 1084/1 Еникеева Иннокентия

       Преподаватель : Веренинов Игорь Андреевич

                          21 марта 2002 года.

    1. Условия задачи
  -===================-

     A. 3 источника - простейшие с Lambda1,2,3 (L1=2, L2=1, L3=5).
     B. Буфер на 5 мест.
        Дисциплина записи - В порядка поступления, с выбыванием самой старой
        Дисциплина выборки  - LIFO.
     C. Прибор, простейший, со временем обслуживания Lam1 <= Lambda <= Lam2 
        (Lam1 = 1, Lam2=5, с шагом 0.4)

     Необходимо определить:
     a. Вероятность отказа заявок от обоих источников,  как функцию от
интенсивности прибора. Погрешность - 10%, доверительный интервал - 0.8
     b. Математическое ожидание, как функцию от интенсивности прибора.

    
    2. Руководство пользователя
  -=============================-
     
    а. Запуск программы осуществляется выполнение программного файла UI.EXE
    б. Рабочая среда является интегрированной системой ввода параметров
       модели и системой вывода результатов.
    в. Управление всеми элементами интерфейса осуществляется с помощью 
       манипулятора типа "мышь".
    г. Для запуска моделирования необходимо однократно нажать левую клавишу 
       манипулятора над элементов интерфейса типа "Кнопка" с надписью "OK".
        При этом начнется моделирование, и, в зависимости от текущего режима,
       (см. пункт - "ж") на графике (элементе, занимающем большую часть правой 
       половины рабочей области) начнется отображение результатов. После 
       завершения моделирования, или после его прерывания процесс можно 
       повторить.
    д. Для досрочного прекращения моделирования необходимо "нажать" на "кнопку"
       с надписью "STOP". При этом на графике будут продолжать отображаться
       уже смоделированные значения и в текстовый файл будут записаны 
       результаты (см. пункт -"и"). Для выхода из программы используется та же
       кнопка, когда на ней написано "Exit".
    е. Для изменения входных параметров модели используются т.н. "поля ввода",
       элементы интерфейса прямоугольной формы, с выведенным на них текстом
       и реагирующие на нажатия "мыши" появлением вертикальной черты - курсора -
       элемента, позволяющего определить, в какое место текста попадет 
       введенный пользователем символ. Его перемещение осуществляется с помощью
       клавиш Left, Right, Home, End, а также нажатия левой кнопки мыши в 
       область, куда требуется переместить курсор.
        Также для управления режимами отображения/работы используются т.н.
       "флажки" (CheckBox) которые имеют 2 состояния (вкл/выкл). В состоянии
       "вкл" в области перед текстом надписи квадратной формы отображается
       "галка" (символ стрелки вниз). Для изменения состояния "флажков" 
       необходимо однократное нажатие левой кнопки мыши в область текста или
       квадрата.
    ё.  В программе представлены для изменения следующие поля ввода:
          - 'Veroyatn' - Задает требуемую погрешность моделирования.
            Возможны значения как в дес. форме (напр. 0.1), так и в процентном
            задании (напр. 10%)
          - 'Dov. Int' - Задает требуемый доверительный интервал. (напр. 0.82)
          - 'Beg. Lam prib' - Начальная лямбда прибора. Эта лямбда 
            используется в отадочном режиме (см. пункт "ж")
          - 'End Lam prib' - Конечная лямбда прибора (Не исп. в отлад. режиме)
          - 'Steps' - Число итераций, при изменении лямбды прибора от начальной
            к конечной
          - 'Buf size' - Объем буфера модели.
          - 'Lambda 1'(2,3) - Лямбды всех источников.
           Также для отладочного режима существует поле ввода "KMIN", 
         в котором указывается требуемое число реализаций. Это число реализаций
         также является МИНИМАЛЬНЫМ числом реализаций в нормальном режиме.

    ж.  Программа имеет 2 возможных режима работы - Нормальный и режим отладки.
       В нормальном режиме программа решает поставленную в условии задачу, и 
       на графике отображаются зависимости, требуемые в условии.
       В отладочном режиме моделирование происходит при постоянной скорости 
       прибора, с отображением на графике зависимости вероятности отказа от 
       числа реализаций.
        Переключение режимов осуществляется с помощью "флажка" Test Mode, 
       который в сост. "вкл" активизирует отладочный режим.
    з.  Управление отображением результатов моделирование осуществляется с 
       помощью "флажков"
         'Ist<I> Potk (<Color>)' и 'Ist<I> MatO (<Color>)', где
         <I> - номер соответствующего источника,
         <Color> - Цвет соответствующей кривой на графике
         Potk  - Вероятность отказа <I>'го источника
         MatO  - Математическое ожидание ----\\----
        Нажатие на любой из этих флажков влечет за собой показ/скрытие с графика
       соответствующей кривой, причем это можно сделать в ЛЮБОЙ момент (до 
       запуска моделирования, в его процессе, или после окончания).
        Все графики имеют общую ось абсцисс (X, гориз. ось), которая в 
       нормальном режиме - текущая лямбда прибора, а в отладочном - 
       номер реализации.
        Оси ординат - различны. Графики вероятностей имеют ось от 0% до 100%,
       а все графики мат. ожидания - равномасштабную ось времени ожидания.
    и.  Также в нормальном режиме работы на каждый запуск моделирования в
       текущем сеансе создается текстовый отчет, с именем result.<n>, где
       <n> - номер запуска. В этом файле для каждой итерации выводится
       результаты моделирования. Этот файл возможно просмотреть после выхода
       из программы. 
         !ОСТОРОЖНО!
        При повторном запуске уже имеющиеся файлы, которые имеют номера 
       текущих стартов - ЗАМЕЩАЮТСЯ новыми.

    3. Реализация
  -===============-

     Курсовая работа реализована в среде Turbo Pascal с использованием
объектно-ориентированного программирования, и использованием собственной 
графической библиотеки.
     Проект состоит из файлов, которые будут описаны ниже. Более
подробное описание приводится для файлов "WIN2k2.PAS", а также в файлах
"core.pas" и "ui.pas" в качестве комментариев.

   UI.PAS     -  Головной модуль программы. Его необходимо запускать.
   CORE.PAS   -   Основной рабочий модуль программы. Описаны все объекты и 
                 взаимоотношения между ними.

   ------ Далее следуют составные части графической библиотеки -----
   WIN2k2.pas    - Основной составной модуль графическо-интерфейсной библиотеки.
    WTypes.inc   - Описание основных типов
    procW2K2.inc - Реализация основных функций библиотеки
    WMs.inc      - Основные константы
    errors.inc   - Коды ошибок
    GDI.inc      - Реализ. графических функций
    cursors.asm  \ Используемые курсоры. Для использования необходимо компилиро-
    cur2.asm     / вать в COM файл и переименовать его в cursors.cur 
                   (2 разные версии)
    egavga.obj   - Линкуемый к основной библиотеке драйвер egavga.bgi

   CoolKey.pas   - Модуль для работы с клавиатурой, использует собственный 
                   обработчик клавиатурного прерывания (INT 09)
   CoolMice.Pas  - Модуль для работы с мышью. Интерфейс для INT 33h
   CContr.pas    - Модуль, работающий с библиотекой Win2k2, реализующий 
                   стандартные элементы интерфейса
                   (EditBox, Button, CheckBox, Label, XYPlot)

    4. Модуль Win2k2
  -==================-

   Данный модуль был написан для быстрого и простого создания 
 высокотехнологических графических интерфейсов с некоторой долей 
 многозадачности. За основу была взята графическая часть широкоизвестной
 операционной системы Windows серии 95. Данный модуль - попытка воссоздать т.н.
 архитектуру взаимоотношений Win32 API. Её ядром является система обмена и 
 обработки сообщений (messages), которая позволяет одной части программной 
 среды взаимодействовать с другой. Данный модуль по возможности имеет те же 
 имена типов и функций, что и аналогичные в системе Windows. 
   В реализации данного модуля используется низкоуровневый модуль работы с 
 клавиатурой и мышью.

---------------------------
 Все права защищены.
 Windows 95, Win32 API - Регистрированные торговые марки Microsoft Corp.
 Все описанные исходные коды являются интеллектуальной собственностью 
 Еникеева Иннокентия и их использование без согласия автора недопустимы.