Студопедия
Главная страница | Контакты | Случайная страница

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

model.cpp

//---------------------------------------------------------------------------

 

#include <vcl.h>

#pragma hdrstop

 

#include "model.h"

#include <stdlib.h>

//---------------------------------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

//---------------------------------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

int tm=0;//модельное время

int tk=0,ak=0;//время генерации заявки и ее интервал

Device c1,c2;//ЭВМ1 и ЭВМ2

int queue1=0;//очередь

int tgen1,tgen2;//время генерация заявок

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

int t1evm1,t2evm1,t1evm2,t2evm2;//время обработки на ЭВМ1 и ЭВМ2;

 

//инициализация данных

tgen1=StrToInt(Edit1->Text);

tgen2=StrToInt(Edit2->Text);

tend=StrToInt(Edit3->Text);

t1evm1=StrToInt(Edit4->Text);

t2evm1=StrToInt(Edit5->Text);

t1evm2=StrToInt(Edit6->Text);

t2evm2=StrToInt(Edit7->Text);

c1.free=True;//ЭВМ1 свободна

c1.count=0;//текущее количество обработанных заявок равно 0

c1.time=0;

c2.free=True;//ЭВМ2 свободна

c2.count=0;

c2.time=0;

Randomize();

//открываем цикл по времени

while (tm<tend)

{

tm++;//увеличиваем модельное время

if (ak==0)//если можно создать заявку,

{

//то генерируем интервал ее поступления

ak=(tgen1-tgen2)+random(tgen2*tgen2);

tk=tk+ak;//вычисляем время генерации следующей заявки

}

if (tm==tk)//если модельное время равно времени генерации заявки, то

{

queue1++;//увеличиваем очередь на 1

}

if (c1.free&&queue1>0)//если ЭВМ1 свободна и очередь не пуста,

{

//то определяем время занятости ЭВМ1

c1.time=(t1evm1-t2evm1)+random(t2evm1*t2evm1);

//и занимаем ее

c1.free=False;

queue1--;//удаляем заявку из очереди

}

else //иначе, если свободна ЭВМ2 и очередь не пуста,

if (c2.free&&queue1>0)//то обрабатываем заявку на этом устройстве

{

c2.time=(t1evm2-t2evm2)+random(t2evm2*t2evm2);

c2.free=False;

queue1--;

}

if (c1.time>0) c1.time--;//уменьшаем время обработки на ЭВМ1

else

if (c1.time==0&&!(c1.free))//если время обслуживания завершено

//и ЭВМ1 не свободна,

{

c1.free=True;//то освобождаем ЭВМ1

c1.count++;//увеличиваем число обслуженных заявок

}

if (c2.time>0) c2.time--;//уменьшаем время обработки на ЭВМ2

else

if (c2.time==0&&!(c2.free))//если время обслуживания завершено,

{

c2.free=True;//то освобождаем ЭВМ2

c2.count++;//увеличиваем число обслуженных заявок

}

if (ak>0) ak--;//приближаемся к генерации следующей заявки

}

//вывод результатов моделирования

Edit8->Text=IntToStr(queue1);

Edit9->Text=IntToStr(c1.count+c2.count);

}

//---------------------------------------------------------------------------

 

В заголовочном файле model.h описывается структура Device, которая применяется в основном модуле программы model.cpp. Программа сначала считывает исходные данные для моделирования и инициализирует состояние системы. Затем в цикле происходит генерация новой заявки, помещение ее в очередь и занятие одним из устройств либо ЭВМ1, либо ЭВМ2. Если обе машины заняты, то возвращаемся на начало цикла и увеличиваем время моделирования системы на единицу. Цикл продолжается до тех пор, пока не истечен заданный период имитации.

Задание:

Разработать программу моделирования системы на языке С++.

 


Варианты

Вариант 1

Банк обслуживает клиентов трех типов: производящих коммунальные платежи, делающих операции по вкладам первого типа и производящих операции по вкладам второго типа. Клиенты этих типов поступают с периодом 7±3, 7±5, 20±10 минуты. На обслуживание клиентов каждого типа отводится соответственно 5±2, 11±2, 6±2 минуты. Составить схему и промоделировать работу сотрудников банка в течении 8 часов.

Вариант 2

Пакеты достигают компьютерного узла сети связи со средним временем между двумя входами равным 5 мс и передаются адресату узла. Длина сообщения - 256 байтов. Из узла может быть передано одновременно только одно сообщение. Скорость передачи по линии - 56 килобайтов в секунду (кбит/с). Если узел занят, то нельзя передавать сообщение и узел не может принимать сообщение, пока он не завершит передачу. Составить схему и промоделировать работу узла сети в течении дня.

Вариант 3

Зрители подходят к турникету на футбольном стадионе каждые7+-7 секунд и становятся в очередь, чтобы пройти на стадион. Время прохода одного зрителя распределено равномерно в диапазоне 5+-3 сек. Требуется построить схему и модель для определения времени, которое нужно для того, чтобы пройти через турникет 1000 зрителей.

Вариант 4

Участок цеха состоит из трех станков, которые обрабатывают два потока деталей различного типа. Детали первого типа обрабатываются станками E1, E2 и E3. Детали второго типа – станками E2, E1 и E3. Детали поступают с интервалами 6+-2 и 10+-4 минуты соответственно. Станок E1 обрабатывает деталь 3+-1 минуту, E2- 5+-3 минуты, E3- 4+-2 минуты. Разработать схему и модель работы цеха в течении недели.

Вариант 5

Локальная сеть состоит из трех компьютеров и сервера. К серверу подключен принтер. Компьютеры посылают на печать страницы каждые 20+-5, 40+-5ж, 30+-10 минут. Компьютеры отправляет в среднем от 5 до 10 страниц. Одну страницу принтер печатает 60+-30секунд. Разработать схему и смоделировать процесс работы сетевого принтера в течении дня.

Вариант 6

На автозаправку каждые 5+-1 минуту приезжают автомобили. Время на заправку составляет 2+-1 минуту, а время на оплату – 60+-20 секунд. Составить схему и модель работы автозаправки машин в течении смены (6 часов).




Дата добавления: 2014-12-19; просмотров: 116 | Поможем написать вашу работу | Нарушение авторских прав




lektsii.net - Лекции.Нет - 2014-2025 год. (0.285 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав