Консультация № 183552
08.06.2011, 18:04
54.28 руб.
0 14 1
Здравствуйте! Прошу помощи в следующем вопросе:
Информационная система (ИС) представляет собой одно рабочее место , на котором производится обработка некоторой информации. Заявка на обработку информации, поступившая в момент времени, когда рабочее место занято , получает отказ. Интенсивность потока заявок лямда= 0,8 (заявок в секунду), среднее время обработки t =1,5с. Все потоки считаются простейшими. Требуется определить:
a) относительную пропускную способность ИС ;
b) абсолютную пропускную способность ИС;
c) среднюю долю не обслуженных заявок;
d) фактическую пропускную способность ИС.
Задачу написать в среде Turbo Pascal к каждой строчке написать пояснение пожалуста!!!!

Обсуждение

Неизвестный
09.06.2011, 01:06
общий
09.06.2011, 12:26
Ниже приведен код по задаче. Если возникнут вопросы - можем попробовать порешать :).
В чем разница между абсолютной и фактической пропускной способностью? Я посчитал, что это одно и то же.
Возможно, имелись в виду фактическая и номинальная пропускная способность? (обратите внимание на выделение в коде - по задаче этого не требовалось, но там посчитано значение для номинальной пропускной способности).
Код:
{
Информационная система (ИС) представляет собой одно рабочее место, на котором производится обработка некоторой
информации. Заявка на обработку информации, поступившая в момент времени, когда рабочее место занято, получает отказ.
Интенсивность потока заявок лямда = 0,8 (заявок в секунду),
среднее время обработки t =1,5с.
Все потоки считаются простейшими. Требуется определить:
a) относительную пропускную способность ИС ;
b) абсолютную пропускную способность ИС;
c) среднюю долю не обслуженных заявок;
d) фактическую пропускную способность ИС.
}
uses {раздел объявления используемых модулей}
crt; {стандартный модуль Crt}
const {раздел описания констант}
l = 0.8; {интенсивность потока}
t = 1.5; {среднее время обслуживания}
var {раздел описания переменных}
mu, {интенсивность потока обслуживания}
O, {относительная пропускная способность}
A, {абсолютная пропускная способность}
N, {номинальная пропускная способность}
Potk, {средняя доля необслуженных заявок}
PS : real; {фактическая пропускная способность}
i, count, served, denied: word; {переменные для расчетов}
isfree: boolean; {ИС свободна}
timeout: real; {время до завершения занятости ИС}
begin {начало}
clrscr; {очистка экрана}
mu := 1 / t; {интенсивность потока обслуживания}
O := mu / (mu + l); {относительная пропускная способность}
writeln('a) Otnositel''naya propusknaya sposobnost'': ', O:7:4); {вывод на экран}
A := l * O; {абсолютная/фактическая пропускная способность}
writeln('bd) Absolutnaya (facticheskaya) propusknaya sposobnost'': ', A:7:4); {вывод на экран}
Potk := 1 - O; {средняя доля необслуженных заявок}
writeln('c) Srednyaya dolya neobslugenych zakazov: ', Potk:7:4); {вывод на экран}

N := 1/t; {номинальная пропускная способность}
writeln('Nominal''naya propusknaya sposobnost'': ', N:7:4); {вывод на экран}

writeln; {разрыв в сообщениях}
writeln('Modeling:'); {моделирование}
write('Enter the number of attempts: '); {приглашение для ввода количества повторений}
readln(count); {ввод числа}
served := 0; {обслужено}
denied := 0; {отказов в обслуживании}
isfree := true; {ИС свободна}
timeout := 0; {время до освобождения ИС}
for i := 1 to count do begin {повторим нужное число раз}
if (isfree) then begin {если ИС свободна}
Inc(served); {возьмем задачу в обслуживание}
timeout := t; {запустим таймер}
isfree := false; {отметим занятость системы}
end else begin {иначе (когда занята!)}
Inc(denied); {откажем задаче в обслуживании}
timeout := timeout - l; {"выждем" время до поступления следующей задачи}
if (timeout <= 0) then {если система освободилась}
isfree := true; {сообщим "свободная касса"}
end;
end;
writeln('Number of attempts: ', count); {количество повторений опыта}
writeln('Served: ', served, ' (', 100*(served/count):7:4, '%)'); {обслужено}
writeln('Denied: ', denied, ' (', 100*(denied/count):7:4, '%)'); {отказов в обслуживании}
writeln('Round served ', served/(count*l):0:4, ' in time.'); {в среднем обслуживалось в единицу времени}

writeln('Done. Press any key...'); {работа завершена}
readkey; {нажмите любую клавишу}
end. {конец}
давно
Профессионал
304622
583
09.06.2011, 01:43
общий
А разве моделирование не должно использовать случайные числа?
Неизвестный
09.06.2011, 11:15
общий
это ответ
Здравствуйте, [b]Артем Воробьев[/b]!

Пример с подробными комментариями находится в приложении.
При моделировании использовался принцип последовательной проводки заявок.

Успехов!

Приложение:
program Q183552;

uses
Crt;

{ Функция, определяющая время в секундах }
{ до следующего события }
{ lambda - интенсивность (событий/с.) }
function getNext(const lambda: real): real;
begin
getNext:= -1*Ln((1+Random(MaxInt))/MaxInt)/lambda;
end;

const
{ Интенсивность потока заявок }
LAMBDA: real = 0.8;
{ Интенсивность обслуживания }
IOBSL: real = 1/1.5;
{ Общее количество заявок }
{ (продолжительность эксперимента) }
EXPNUM: integer = 5000;

var
i: integer;
x: real;

t, { Общее время эксперимента }
t1: real; { Время завершения обслуживания }
nOtk, { Количество отказов }
nObsl: integer; { Количество обслуженных заявок }
pOtk: real; { Вероятность отказа }
begin
{ Инициализация }
Randomize;
t:= 0.0;
t1:= 0.0;
nOtk:= 0;
nObsl:= 0;

{ Эксперимент }
for i:=0 to EXPNUM do
begin
{ Определяем время поступления заявки }
{ (оно же текущее время) }
t:= t + getNext(LAMBDA);

{ Проверка занятости канала обслуживания }
if (t > t1) then
begin
{ Канал свободен }
inc(nObsl); { Увеличиваем количество обслуженных заявок }
{ Определяем время обслуживания }
t1:= t1 + getNext(IOBSL);
end
else
begin
{ Канал занят }
inc(nOtk); { Увеличиваем количество отказов }
end;
end;

{ Вычисляем вероятность отказа }
pOtk:= nOtk/EXPNUM;

{ Выводим результаты }

writeLn;

{ Относительная пропускная способность }
{ равна вероятности обслуживания }
x:= (1 - pOtk)*100.0;
writeLn('Относительная пропускная способность = ',
x:4:1, '%');

{ Абсолютная пропускная способность }
{ Произведение вероятности обслуживания }
{ на интенсивность потока заявок }
x:= (x*LAMBDA/100.0);
writeLn('Абсолютная пропускная способность = ',
x:7:4, ' заявок/с.');

{ Доля необслуженных заявок }
{ (равна вероятности отказа) }
x:= pOtk*100.0;
writeLn('Доля необслуженных заявок = ',
x:4:1, '%');

{ Фактическая пропускная способность }
{ Определяется по фактическому количеству }
{ обслуженных заявок }
x:= nObsl/t;
writeLn('Фактическая пропускная способность = ',
x:7:4, ' заявок/с.');

{ Ждём отклика пользователя }
writeLn;
readLn;
end.
Прикрепленные файлы:
Неизвестный
09.06.2011, 12:04
общий
ну я написал то условие какое мне дали!!!! А можно еще сделать пожалуйста описание программы???
Неизвестный
09.06.2011, 12:09
общий
А что Вы подразумеваете под описанием программы?
Неизвестный
09.06.2011, 12:11
общий
Цитата: Сергей Бендер
А разве моделирование не должно использовать случайные числа?
Может, но не должно :)
Неизвестный
09.06.2011, 12:18
общий
обьяснить программу словами по пунктам что и как в ней происходит
Неизвестный
09.06.2011, 12:26
общий
Цитата: 330614
обьяснить программу словами по пунктам что и как в ней происходит
Артем, в фигурных скобках {} в конце каждой строки кода как раз и содержится описание того, что происходит.
Неизвестный
09.06.2011, 12:36
общий
1 Проводится инициализация генератора случайных чисел и переменных, используемых в программе.
2 Эксперимент
2.1 Проводится имитация поступления EXPNUM заявок (в приведённом мной примере равно 5000).
2.1.1 Определяется текущее время (оно же время поступления текущей заявки) t
2.1.2 Проверяется доступность канала обслуживания (рабочего места). Если оно доступно, добавляем заявку на обработку (увеличиваем счётчик обработанных заявок nObsl) и вычисляем время, когда будет завершена обработка заявки (t1). Если недоступно, увеличиваем счётчик заявок, получивших отказ (nOtk).
3 Считаем и выводим результаты (формулы см. в тексте программы).
Неизвестный
09.06.2011, 12:47
общий
Цитата: 299564
Может, но не должно :)

Насколько мне известно, простейший поток событий является случайным, а значит при моделировании простейших потоков должно.
Неизвестный
09.06.2011, 14:44
общий
Цитата: 4837
Насколько мне известно, простейший поток событий является случайным, а значит при моделировании простейших потоков должно.
Регулярный поток событий не перестает быть простейшим, однако места случайности в нем я не вижу.
Неизвестный
09.06.2011, 17:07
общий
Цитата: 299564
Регулярный поток событий не перестает быть простейшим, однако места случайности в нем я не вижу.

А вот здесь Вы ошибаетесь. Регулярный поток не является "простейшим", так как он обладает последействием: моменты появления событий в таком потоке жестко зафиксированы.
давно
Профессионал
304622
583
09.06.2011, 20:27
общий
Регулярный поток событий не перестает быть простейшим, однако места случайности в нем я не вижу.


Вообще-то, из контекста задачи вполне очевидно, что речь идёт о случайном процессе. К тому же, если не предполагать случайного разброса, то бессмысленно говорить про "среднее время обработки". В вашей программе это просто "время обработки". Фиксированное.
Неизвестный
09.06.2011, 21:03
общий
Цитата: 4837
А вот здесь Вы ошибаетесь. Регулярный поток не является "простейшим", так как он обладает последействием: моменты появления событий в таком потоке жестко зафиксированы.

Цитата: Сергей Бендер
Вообще-то, из контекста задачи вполне очевидно, что речь идёт о случайном процессе. К тому же, если не предполагать случайного разброса, то бессмысленно говорить про "среднее время обработки". В вашей программе это просто "время обработки". Фиксированное.
Коллеги, спасибо. Я не большой специалист в потоках , посему ваши пояснения в этой ветке были мне особенно полезны .
Форма ответа