Согласно варианту задания
Заказать уникальную курсовую работу- 46 46 страниц
- 3 + 3 источника
- Добавлена 10.05.2009
- Содержание
- Часть работы
- Список литературы
- Вопросы/Ответы
Содержание
Введение
Постановка задачи.
Терминология.
Алгоритм программы
Блок-схема алгоритма программы.
Инструкция к программе.
Исходный код программы
Результаты моделирования.
Выводы
Заключение
Список литературы
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
Да
Да
Перейти к следующему транзакту
Транзакт может двигаться?
Нет
Модельное время меньше конечного?
Конец
1. Шенном Р. Имитационное моделирование систем — исскуство и наука; пер с англ. — Москва: Наука, 1985.— 237 с.
2. Цифровая имитация автоматизированных систем — Москва: Институт проблем передач информации АН СССР, 1983.— 139 с.
3. Хомоненко А. Гофман В. Мещеряков Е. Никифоров В. Delphi 7 — Санкт-Петербург: БХВ-Санкт-Петербург, 2006.— 1216 с.
Вопрос-ответ:
Что такое алгоритм программы?
Алгоритм программы - это последовательность инструкций, описывающих решение конкретной задачи. Он определяет порядок выполнения операций и используемые данные.
Что такое блок-схема алгоритма программы?
Блок-схема алгоритма программы - это графическое представление алгоритма, в котором применяются различные геометрические фигуры (блоки), соединяемые стрелками, чтобы показать последовательность выполнения операций.
Какие данные используются в программе?
В программе используются данные, представленные переменными. В данном случае, используются переменные i, j и tl типа integer.
Что значит инструкция к программе?
Инструкция к программе - это отдельная команда или операция, которую исполняет компьютер. Они задают различные операции, такие как присваивание значений переменным, выполнение условий и циклов.
Какие результаты можно получить после моделирования программы?
Результаты моделирования программы могут быть различными в зависимости от поставленной задачи. В данном случае, результаты моделирования не указаны.
Что такое терминология в программировании?
Терминология в программировании - это специфические термины и понятия, используемые в области разработки программного обеспечения. Она включает в себя набор терминов, которые используются для описания синтаксиса, структуры и выполнения программы.
Что такое алгоритм программы?
Алгоритм программы - это последовательность шагов или инструкций, предназначенных для выполнения определенной задачи компьютером. Он описывает логику работы программы и определяет порядок выполнения операций.
Что такое блок-схема алгоритма программы?
Блок-схема алгоритма программы - это графическое представление алгоритма, которое использует блоки и стрелки для представления шагов выполнения программы. Она помогает визуализировать логику программы и понять порядок выполнения операций.
Что такое исходный код программы?
Исходный код программы - это текстовое представление программы, написанное на языке программирования. Он содержит инструкции и логику, которые компьютер может понять и выполнить для решения задачи, поставленной программой.
Что такое результаты моделирования?
Результаты моделирования - это выводы и данные, полученные в результате выполнения моделирования программы или процесса. Они могут включать в себя различные показатели, статистику или графики, которые помогают анализировать и оценивать работу программы или системы.
Какая задача решается в данной статье?
В данной статье рассматривается задача постановки алгоритма программы и моделирования его результатов.
Какие термины используются в данной статье?
В данной статье используются следующие термины: постановка задачи, терминология, алгоритм программы, блок схема алгоритма программы, инструкция к программе, исходный код программы, результаты моделирования, выводы, список литературы.