Вход

Согласно варианту задания

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 128142
Дата создания 2009
Страниц 46
Источников 3
Мы сможем обработать ваш заказ (!) 26 апреля в 16:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
2 580руб.
КУПИТЬ

Содержание

Содержание

Содержание
Введение
Постановка задачи.
Терминология.
Алгоритм программы
Блок-схема алгоритма программы.
Инструкция к программе.
Исходный код программы
Результаты моделирования.
Выводы
Заключение
Список литературы

Фрагмент работы для ознакомления

Create;
Result.FModel := self;
TL := High(FTransacts);
SetLength(FTransacts,TL+2);
FTRansacts[TL+1] := Result;
end;
procedure TModel.TerminateTransact(ATransact: TTransact);
var i,j,tl:integer;
begin
// Ищем транзакт в списке
i:=Low(self.FTransacts);
tl:=High(self.FTransacts);
while i <= tl do
if ATransact = self.Ftransacts[i] then
break
else inc(i);
// Убираем из списка
if i <= tl then
begin
for j := i to tl-1 do
Ftransacts[j]:=Ftransacts[j+1];
SetLength(FTransacts,TL);
// Освобождаем ресурсы
AtRansact.Free;
end;
end;
{ TECMModel }
constructor TECMModel.Create;
begin
// Создаём три источника транзактов
GA := TTransactGenerator.Create;
GA.FModel := self;
GB := TTransactGenerator.Create;
GB.FModel := self;
GC := TTransactGenerator.Create;
GC.FModel := self;
// Создаём очередь
HDD := TTransactQ.Create;
HDD.FModel := self;
HDD.MaxCount := -1;
// И процессор
Proccessor := TProccessor.Create;
Proccessor.FModel := self;
// Задаём последовательность
GA.FNext := HDD;
GB.FNext := HDD;
GC.FNext := HDD;
HDD.FNext := Proccessor;
// Задаём разные идентификаторы классов
GA.TrClass := 0;
GB.TrClass := 1;
GC.TrClass := 2;
end;
destructor TECMModel.Destroy;
var
I: Integer;
begin
// Освобождаем ресурсы
GA.Free;
GB.Free;
GC.Free;
HDD.Free;
Proccessor.Free;
for I :=0 to High(FTransacts) do
FTransacts[i].Free;
SetLength(FTransacts,0);
inherited;
end;
procedure TECMModel.Execute;
begin
// Создаём транзакты
GA.Start;
GB.Start;
GC.Start;
inherited;
end;
function TECMModel.GetADevInterval: TModelTime;
begin
Result := GA.StdInterval;
end;
function TECMModel.GetADevWorkTime: TModelTime;
begin
Result := Proccessor.ADev;
end;
function TECMModel.GetAInterval: TModelTime;
begin
Result := GA.AverageInterval;
end;
function TECMModel.GetAWorkTime: TModelTime;
begin
Result := Proccessor.ADelay;
end;
procedure TECMModel.SetAInterval(Value: TModelTime);
begin
if Value > 0 then Ga.AverageInterval := Value;
end;
procedure TECMModel.SetAWorkTime(Value: TModelTime);
begin
if Value > 0 then Proccessor.ADelay := Value;
end;
procedure TECMModel.SetADevInterval(Value: TModelTime);
begin
if Ga.AverageInterval > Value then Ga.StdInterval:= Value;
end;
procedure TECMModel.SetADevWorkTime(Value: TModelTime);
begin
if Proccessor.ADelay > Value then Proccessor.ADev:= Value;
end;
function TECMModel.GetBDevInterval: TModelTime;
begin
Result := GB.StdInterval;
end;
function TECMModel.GetBDevWorkTime: TModelTime;
begin
Result := Proccessor.BDev;
end;
function TECMModel.GetBInterval: TModelTime;
begin
Result := GB.AverageInterval;
end;
function TECMModel.GetBWorkTime: TModelTime;
begin
Result := Proccessor.BDelay;
end;
procedure TECMModel.SetBInterval(value: TModelTime);
begin
if value > 0 then GB.AverageInterval := value;
end;
procedure TECMModel.SetBWorkTime(value: TModelTime);
begin
if value > 0 then Proccessor.BDelay := value;
end;
procedure TECMModel.SetBDevInterval(value: TModelTime);
begin
if GB.AverageInterval > value then GB.StdInterval:= value;
end;
procedure TECMModel.SetBDevWorkTime(value: TModelTime);
begin
if Proccessor.BDelay > value then Proccessor.BDev:= value;
end;
function TECMModel.GetCDevInterval: TModelTime;
begin
Result := GC.StdInterval;
end;
function TECMModel.GetCDevWorkTime: TModelTime;
begin
Result := Proccessor.CDev;
end;
function TECMModel.GetCInterval: TModelTime;
begin
Result := GC.AverageInterval;
end;
function TECMModel.GetCWorkTime: TModelTime;
begin
Result := Proccessor.BDelay;
end;
procedure TECMModel.Restart;
var i:integer;
begin
// Осуществляем перезапуск моделирования
for I :=0 to High(FTransacts) do
FTransacts[i].Free;
SetLength(FTransacts,0);
HDD.Restart;
Proccessor.Restart;
FModelTime := 0;
end;
procedure TECMModel.SetCInterval(value: TModelTime);
begin
if value > 0 then GC.AverageInterval := value;
end;
procedure TECMModel.SetCWorkTime(value: TModelTime);
begin
if value > 0 then Proccessor.CDelay := value;
end;
procedure TECMModel.SetCDevInterval(value: TModelTime);
begin
if GC.AverageInterval > value then GC.StdInterval:= value;
end;
procedure TECMModel.SetCDevWorkTime(value: TModelTime);
begin
if Proccessor.CDelay > value then Proccessor.CDev:= value;
end;
end.
unit main;
{
Модуль реализует программу, запускающую моделирование
и обрабатывающую результаты
}
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, BaseUnits, Grids;
type
TfrmMain = class(TForm)
// Кнопка, запускающая моделирование
btnStart: TButton;
SD: TSaveDialog;
edtTrParameters: TStringGrid;
Label1: TLabel;
edtTime: TEdit;
lblRes: TLabel;
lblTime: TLabel;
Label3: TLabel;
Label4: TLabel;
lblP: TLabel;
lblAvgLength: TLabel;
Label5: TLabel;
btnToFile: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure btnStartClick(Sender: TObject);
procedure btnToFileClick(Sender: TObject);
private
{ Private declarations }
FModel:TECMModel;
public
{ Public declarations }
end;
var
frmMain: TfrmMain;
implementation
{$R *.dfm}
{ TSRExponential }
procedure TfrmMain.btnStartClick(Sender: TObject);
begin
with edtTrParameters do
begin
// Устанавливаем параметры модели
Fmodel.AInterval:=StrToFloat(Cells[1,1]);
Fmodel.ADevInterval:=StrToFloat(Cells[2,1]);
Fmodel.AWorkTime:=StrToFloat(Cells[3,1]);
Fmodel.ADevWorkTime:=StrToFloat(Cells[4,1]);
Fmodel.BInterval:=StrToFloat(Cells[1,2]);
Fmodel.BDevInterval:=StrToFloat(Cells[2,2]);
Fmodel.BWorkTime:=StrToFloat(Cells[3,2]);
Fmodel.BDevWorkTime:=StrToFloat(Cells[4,2]);
Fmodel.CInterval:=StrToFloat(Cells[1,3]);
Fmodel.CDevInterval:=StrToFloat(Cells[2,3]);
Fmodel.CWorkTime:=StrToFloat(Cells[3,3]);
Fmodel.CDevWorkTime:=StrToFloat(Cells[4,3]);
// Сбрасываем состояние модели
FModel.Restart;
// Устанавливаем время окончания моделирования на требуемое количество минут
FModel.FEndModelTime := StrToFloat(edtTime.Text);
// Устанавливаем ресурсы, потребляемые при обработке заявки
FModel.Proccessor.ARes:=1;
FModel.Proccessor.BRes:=1;
FModel.Proccessor.CRes:=2;
// Запускаем моделирование
FModel.Execute;
// Отображаем результаты
lblP.Caption := FloatToStr(FModel.Proccessor.Utility);
lblAvgLength.Caption := FloatToStr(FModel.HDD.AvgCount);
lblTime.Caption := FloatToStr(FModel.HDD.FAvgTransactionTime);
end;
end;
procedure TfrmMain.btnToFileClick(Sender: TObject);
var F:TextFile;
i:integer;
begin
AssignFile(F,'result.csv');
Rewrite(F);
Writeln(F,'Номер прогона;Среднее время ожидания в очереди;Средняя длина очереди; Загрузка процессора;');
for I := 1 to 500 do
begin
btnStart.Click;
Application.ProcessMessages;
Writeln(F,i,';',FModel.HDD.FAvgTransactionTime:10:6,';',FModel.HDD.AvgCount:10:6,';',FModel.Proccessor.Utility:10:6,';');
end;
CloseFile(F);
end;
procedure TfrmMain.FormCreate(Sender: TObject);
begin
// Создание объекта - модели
FModel:=TECMModel.Create;
edtTrParameters.Cells[1,0] := 'Средний интервал появления задач данного класса';
edtTrParameters.Cells[2,0] := '+- интервала задач данного класса';
edtTrParameters.Cells[3,0] := 'Среднее время обработки задач данного класса';
edtTrParameters.Cells[4,0] := '+- времени обработки задач данного класса';
edtTrParameters.Cells[0,1] := 'Класс А';
edtTrParameters.Cells[0,2] := 'Класс B';
edtTrParameters.Cells[0,3] := 'Класс C';
edtTrParameters.Cells[1,1] := FloatToStr(20);
edtTrParameters.Cells[2,1] := FloatToStr(5);
edtTrParameters.Cells[3,1] := FloatToStr(20);
edtTrParameters.Cells[4,1] := FloatToStr(5);
edtTrParameters.Cells[1,2] := FloatToStr(20);
edtTrParameters.Cells[2,2] := FloatToStr(10);
edtTrParameters.Cells[3,2] := FloatToStr(21);
edtTrParameters.Cells[4,2] := FloatToStr(3);
edtTrParameters.Cells[1,3] := FloatToStr(28);
edtTrParameters.Cells[2,3] := FloatToStr(5);
edtTrParameters.Cells[3,3] := FloatToStr(28);
edtTrParameters.Cells[4,3] := FloatToStr(5);
end;
procedure TfrmMain.FormDestroy(Sender: TObject);
begin
// Осовбождение объекта - модели
FModel.Free;
end;
begin
// Инициализация генератора случайных чисел
Randomize;
end.
Результаты моделирования.
Загрузка – 0,8179
Средняя длина очереди – 195,7881
Среднее время ожидания в очереди – 1446,9861
Выводы
Данная система работает не в стационарном режиме, чем объясняется и большое время ожидания сравнимое со всем временем моделирования и большая средняя длина очереди сравнимая с количеством обработанных системой заявок.
Заключение
В данном курсовом проекте была создана программа, реализующая имитационную модель вычислительного центра.
Имитационное моделирование — удобный способ решить задачу исследования поведения системы в случае, если провести эксперименты на реальной модели затруднительно, дорого или вовсе невозможно.
Список литературы
1.     Шенном Р. Имитационное моделирование систем — исскуство и наука; пер с англ. — Москва: Наука, 1985.— 237 с.
2.    Цифровая имитация автоматизированных систем — Москва: Институт проблем передач информации АН СССР, 1983.— 139 с.
3.    Хомоненко А. Гофман В. Мещеряков Е. Никифоров В. Delphi 7 — Санкт-Петербург: БХВ-Санкт-Петербург, 2006.— 1216 с.
Начало
NearTime=ModelEndTime Перейти к первому транзакту
Получить параметры модели
Транзакт может двигаться?
Перейти к следующему транзакту
Нет
Да
Да
Нет
Время покидания транзактом узла меньше NearTime и больше 0?
Присвоить NearTime время покидания транзактом узла
Есть еще транзакты?
Да
Нет
Да
Передвижение транзакта
Есть еще транзакты?
Да
Нет
Нет
Перейти к первому транзакту Присвоить модельному времени значение переменной NearTime
Да
Да
Перейти к следующему транзакту
Транзакт может двигаться?
Нет
Модельное время меньше конечного?
Конец

Список литературы [ всего 3]

Список литературы
1. Шенном Р. Имитационное моделирование систем — исскуство и наука; пер с англ. — Москва: Наука, 1985.— 237 с.
2. Цифровая имитация автоматизированных систем — Москва: Институт проблем передач информации АН СССР, 1983.— 139 с.
3. Хомоненко А. Гофман В. Мещеряков Е. Никифоров В. Delphi 7 — Санкт-Петербург: БХВ-Санкт-Петербург, 2006.— 1216 с.
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.00501
© Рефератбанк, 2002 - 2024