Моделировать работу системы автоматизации проектирования в течение 6 часов

Страницы работы

Содержание работы

Министерство образования РФ

НГТУ

Кафедра ВТ

Расчетно-графическое задание по математическим методам системного анализа

Факультет: АВТ

Группа: АМ-79

Вариант: 19

Студент: Менжулин С.А.

Преподаватель: Хачатурова C.M.

Новосибирск

2001г.


Содержание

1.

 Задание

2

2.

Общие сведения

2

3.

Исходный текст программы

3

4.

Результат выполнения программы

7

5.

6.

Выводы

Блок-схема алгоритма программы.

15

16


1.  Задание.

19. Система автоматизации проектирования состоит из ЭВМ и трех терминалов. Каждый проектировщик формирует задание на расчет в интерактивном режиме. Набор строки зада­ния занимает 10±5 с. Получение ответа на строку требует 3 с работы ЭВМ и 5 с работы терминала. После набора десяти строк задание считается сформированным и поступает на решение, при этом в течение 10±3 с ЭВМ прекращает выработку ответов на вводимые строки. Вывод результата требует 8 с работы терми­нала. Анализ результата занимает у проектировщика 30 с, пос­ле чего цикл повторяется.

Смоделировать работу системы в течение 6 ч. Определить вероятность простоя проектировщика из-за занятости ЭВМ и коэффициент загрузки ЭВМ.

2. Общие сведения.

Математическая модель реализуется на языке программирования С++ в оболочке Borland C++ 3.11. В программе имитируется 6 часов работы системы. По окончании моделирования программа выдает анализ полученных результатов:

-  вероятность простоя проектировщика из-за занятости ЭВМ;

-  коэффициент загрузки ЭВМ.

Набор строки задания и время, когда ЭВМ прекращает выработку ответов на вводимые строки, распределены по равномерному закону распределения.

Значения для первых интервалов рассчитываются по формуле:

где A=2/(a+b), а B=2/(b2- a2), x – случайное число от 0 до 1.

Значения для всех последующих интервалов рассчитываются по формуле:

F(x)=M-dt+2*dt*x,

где M-мат.ожидание, dt – отклонение от мат.ожидания, x – случайное число от 0 до 1.


3. Исходный текст программы.

#include<stdlib.h>

#include<stdio.h>

#include<iostream.h>

#include<conio.h>

FILE *out;

double event[4];

int a[25];

int a1[25];

int aindex=0;

int taskcount1=0;

int taskcount2=0;

int taskcount3=0;

int taskret1=0;

int taskret2=0;

int taskret3=0;

double wait=0;

double possibility=0;

double generate()

{

int n=rand()%1000;

return (double)n/(double)1000;

}

int findmin(double *m,int n)

{

int i=n-2;

double min=m[n-1];

for(;i>=0;i--)

if(m[i]<min) min=m[i];

for(i=0;i<n;i++)

if(m[i]==min) return i;

return -1;

}

void start(int n)

{

int max=n;

while(event[3]<(double)n)

            {

int k=findmin(event,4);

if(k==-1) break;

switch(k)

{

case 0:

            {

            if(taskret1>0)

            {

            fprintf(out,"время t=%f терминал 1 занят получением ответа на строку %d\n",event[k],taskret1);

            event[k]+=(double)5;

            event[k]+=(double)5+(double)10*generate();

            taskret1=0;

            break;

            }

            if(taskcount1!=10)

                        {

            fprintf(out,"время t=%f строка %d поступила от терминала 1\n",event[k],++taskcount1);

            a[aindex]=taskcount1;

            possibility-=event[k];

            event[k]+=(double)1000;

            a1[aindex++]=1;

            break;

                        }

            if(taskret1==-1)

            {

            fprintf(out,"время t=%f на терминале 1 начался вывод результата\n",event[k]);

            taskret1=-2;

            event[k]+=(double)8;

            break;

            }

            if(taskret1==-2)

            {

            fprintf(out,"время t=%f на терминале 1 закончился вывод результата\n",event[k]);

            taskret1=0;

            taskcount1=0;

            event[k]+=(double)30;

            break;

            }

            event[k]=event[3];

            break;

            }

case 1:

            {

            if(taskret2>0)

            {

            fprintf(out,"время t=%f терминал 2 занят получением ответа на строку %d\n",event[k],taskret2);

            event[k]+=(double)5;

            event[k]+=(double)5+(double)10*generate();

            taskret2=0;

            break;

            }

            if(taskcount2!=10)

                        {

            fprintf(out,"время t=%f строка %d поступила от терминала 2\n",event[k],++taskcount2);

            a[aindex]=taskcount2;

            a1[aindex++]=2;

            possibility-=event[k];

            event[k]+=(double)1000;

            break;

                        }

            if(taskret2==-1)

            {

            fprintf(out,"время t=%f на терминале 2 начался вывод результата\n",event[k]);

            taskret2=-2;

            event[k]+=(double)8;

            break;

            }

            if(taskret2==-2)

            {

            fprintf(out,"время t=%f на терминале 2 закончился вывод результата\n",event[k]);

            taskret2=0;

            taskcount2=0;

            event[k]+=(double)30;

Похожие материалы

Информация о работе

Тип:
Расчетно-графические работы
Размер файла:
107 Kb
Скачали:
0