Разработка средств моделирования систем

Понятие, основные задачи и функции общей теории систем как науки. Формулирование требований к системе, разработка концептуальной модели системы на примере системы массового обслуживания (СМО). Проектирование имитационной модели, ее реализация и испытание.

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 27.12.2010
Размер файла 131,3 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

cin>>x;

S<<x<<",";

cout<<"Max(вещественное, болше чем Mode): ";

cin>>x;

S<<x<<",";

cout<<"Mode(вещественно больше Min и меньше Max): ";

cin>>x;

S<<x<<"))";

return S.str();

}

string fUNIFORM()

{

float x;

ostringstream S;

cout<<"Stream(целое, больше либо равно 1): ";

cin>>x;

S<<"(UNIFORM("<<x<<",";

cout<<"Min(вещественное, меньше чем Max): ";

cin>>x;

S<<x<<",";

cout<<"Max(вещественное, болше чем Min): ";

cin>>x;

S<<x<<"))";

return S.str();

}

};

class GPSSOperatori:public FuncStandart

{

public:

int nF,nST,nFas,nQ;

string GENERATE()

{

int n,k,m,l;

float x,K,M,L;

ostringstream S;

S<<"GENERATE ";

M7:

cout<<"Промежуток времени между появлениями транзактов: \n";

cout<<"1 - Постоянный;\n";

cout<<"2 - Случайный;\n";

cout<<"3 - Задан функцией;\n";

cout<<"4 - Зависит от функции;\n";

cout<<"5 - Не задан;\n";

M1:

cout<<"Ваш выбор:";

cin>>n;

switch (n)

{

case 1:

cout<<"Время между появлениями транзактов: ";

cin>>x;

S<<x;

break;

case 2:

cout<<"Среднее время между появлениями транзактов: ";

cin>>x;

S<<x<<",";

cout<<"+/-: ";

cin>>x;

S<<x;

break;

case 3:

cout<<"1 - Стандартная функция;\n";

cout<<"2 - Пользовательская функция;\n";

M2:

cout<<"Ваш выбор: ";

cin>>k;

switch (k)

{

case 1:

S<<FStand();

break;

case 2:

FUNCTION();

S<<"FN$F_"<<nF;

break;

default:

cout<<"ВВедено неверно!!!\n";

goto M2;

break;

}

break;

case 4:

cout<<"Постоянное значение, зависящее от функции: ";

cin>>x;

S<<x<<",";

cout<<"Функция:\n";

cout<<"1 - Стандартная функция;\n";

cout<<"2 - Пользовательская функция;\n";

M3:

cout<<"Ваш выбор: ";

cin>>k;

switch (k)

{

case 1:

S<<FStand();

break;

case 2:

FUNCTION();

S<<"FN$F_"<<nF;

break;

default:

cout<<"ВВедено неверно!!!\n";

goto M3;

break;

}

break;

case 5:

break;

default:

cout<<"ВВедено неверно!!!\n";

goto M1;

break;

}

cout<<"Время задержки появления первого транзакта:\n";

cout<<"1 - задано;\n";

cout<<"2 - не задано;\n";

M4:

cout<<"Ваш выбор: ";

cin>>k;

switch(k)

{

case 1:

cout<<"Время: ";

cin>>K;

break;

case 2: break;

default:

cout<<"ВВедено неверно!!!\n";

goto M4;

break;

}

cout<<"Предельное число таранзактов:\n";

cout<<"1 - задано;\n";

cout<<"2 - не задано;\n";

M5:

cout<<"Ваш выбор: ";

cin>>m;

switch(m)

{

case 1:

cout<<"Количество транзактов: ";

cin>>M;

break;

case 2: break;

default:

cout<<"ВВедено неверно!!!\n";

goto M5;

break;

}

cout<<"Приоритет транзактов:\n";

cout<<"1 - задан;\n";

cout<<"2 - не задан;\n";

M6:

cout<<"Ваш выбор: ";

cin>>l;

switch(l)

{

case 1:

cout<<"Приоритет: ";

cin>>L;

break;

case 2: break;

default:

cout<<"ВВедено неверно!!!\n";

goto M6;

break;

}

if((k==1)||(m==1)||(l==1))

{

if(n%2==1) S<<",,";

else S<<",";

if((m==1)||(l==1))

{

if(k==1) S<<K<<",";

else S<<",";

if(l==1)

if(m==1) S<<M<<","<<L;

else S<<","<<L;

else S<<M;

}

else S<<K;

}

else

if(n==5)

{

cout<<"ВВедено неверно!!!\n";

goto M7;

}

S<<endl;

system("cls");

return S.str();

}

string ADVANCE()

{

int n,k;

float x;

ostringstream S;

S<<"ADVANCE ";

cout<<"Время задержки транзакта: \n";

cout<<"1 - Постоянное;\n";

cout<<"2 - Случайное;\n";

cout<<"3 - Задано функцией;\n";

cout<<"4 - Зависит от функции;\n";

M1:

cout<<"Ваш выбор:";

cin>>n;

switch (n)

{

case 1:

cout<<"Время задержки: ";

cin>>x;

S<<x<<endl;

break;

case 2:

cout<<"Среднее время задержки: ";

cin>>x;

S<<x<<",";

cout<<"+/-: ";

cin>>x;

S<<x<<endl;

break;

case 3:

cout<<"1 - Стандартная функция;\n";

cout<<"2 - Пользовательская функция;\n";

M2:

cout<<"Ваш выбор: ";

cin>>k;

switch (k)

{

case 1:

S<<FStand()<<endl;

break;

case 2:

FUNCTION();

S<<"FN$F_"<<nF<<endl;

break;

default:

cout<<"ВВедено неверно!!!\n";

goto M2;

break;

}

break;

case 4:

cout<<"Постоянное значение, зависящее от функции: ";

cin>>x;

S<<x<<",";

cout<<"Функция:\n";

cout<<"1 - Стандартная функция;\n";

cout<<"2 - Пользовательская функция;\n";

M3:

cout<<"Ваш выбор: ";

cin>>k;

switch (k)

{

case 1:

S<<FStand()<<endl;

break;

case 2:

FUNCTION();

S<<"FN$F_"<<nF<<endl;

break;

default:

cout<<"ВВедено неверно!!!\n";

goto M3;

break;

}

break;

default:

cout<<"ВВедено неверно!!!\n";

goto M1;

break;

}

return S.str();

}

string ENTER(int ukaz)

{

nST++;

int n,x;

ostringstream S,Enter,Advance,Buf;

if(ukaz!=0) S<<"U_"<<ukaz<<" ";

cout<<"Число каналов: ";

cin>>x;

file<<"St_"<<nST<<" STORAGE "<<x<<endl;

cout<<"Число захвачиваемых каналов: ";

cin>>x;

Enter<<"ENTER St_"<<nST<<","<<x<<endl;

Advance<<ADVANCE();

M2:

cout<<"Сбор статистики:\n";

cout<<"1 - нахождение в очереди перед ОУ;\n";

cout<<"2 - нахождение в ОУ;\n";

cout<<"3 - общее время обработки транзакта (1+2);\n";

cout<<"4 - не требуется;\n";

M1:

cout<<"Ваш выбор: ";

cin>>n;

switch(n)

{

case 1:

nQ++;

Buf<<Enter.str();

Enter.str("");

Enter<<"QUEUE Q_"<<nQ<<endl<<Buf.str()<<"DEPART Q_"<<nQ<<endl;

Buf.str("");

goto M2;

break;

case 2:

nQ++;

Buf<<Advance.str();

Advance.str("");

Advance<<"QUEUE Q_"<<nQ<<endl<<Buf.str()<<"DEPART Q_"<<nQ<<endl;

Buf.str("");

goto M2;

break;

case 3:

nQ++;

Buf<<Enter.str();

Enter.str("");

Enter<<"QUEUE Q_"<<nQ<<endl<<Buf.str();

Buf.str("");

Buf<<Advance.str();

Advance.str("");

Advance<<Buf.str()<<"DEPART Q_"<<nQ<<endl;

Buf.str("");

goto M2;

break;

case 4:

break;

default:

cout<<"ВВедено неверно!!!\n";

goto M1;

break;

}

S<<Enter.str()<<Advance.str()<<"LEAVE St_"<<nST<<","<<x<<endl;

system("cls");

return S.str();

}

string SEIZE(int ukaz)

{

nFas++;

int n;

ostringstream S,Seize,Advance,Buf;

if(ukaz!=0) S<<"U_"<<ukaz<<" ";

Seize<<"SEIZE F_"<<nFas<<endl;

Advance<<ADVANCE();

M2:

cout<<"Сбор статистики:\n";

cout<<"1 - нахождение в очереди перед ОУ;\n";

cout<<"2 - нахождение в ОУ;\n";

cout<<"3 - общее время обработки транзакта (1+2);\n";

cout<<"4 - не требуется;\n";

M1:

cout<<"Ваш выбор: ";

cin>>n;

switch(n)

{

case 1:

nQ++;

Buf<<Seize.str();

Seize.str("");

Seize<<"QUEUE Q_"<<nQ<<endl<<Buf.str()<<"DEPART Q_"<<nQ<<endl;

Buf.str("");

goto M2;

break;

case 2:

nQ++;

Buf<<Advance.str();

Advance.str("");

Advance<<"QUEUE Q_"<<nQ<<endl<<Buf.str()<<"DEPART Q_"<<nQ<<endl;

Buf.str("");

goto M2;

break;

case 3:

nQ++;

Buf<<Seize.str();

Seize.str("");

Seize<<"QUEUE Q_"<<nQ<<endl<<Buf.str();

Buf.str("");

Buf<<Advance.str();

Advance.str("");

Advance<<Buf.str()<<"DEPART Q_"<<nQ<<endl;

Buf.str("");

goto M2;

break;

case 4:

break;

default:

cout<<"ВВедено неверно!!!\n";

goto M1;

break;

}

S<<Seize.str()<<Advance.str()<<"RELEASE F_"<<nFas<<endl;

system("cls");

return S.str();

}

string TRANSFER(int ukaz,float ver,int uzel1,int uzel2)

{

ostringstream S;

if(ukaz!=0) S<<"U_"<<ukaz<<" ";

S<<"TRANSFER "<<ver<<",U_"<<uzel2<<",U_"<<uzel1<<endl;

system("cls");

return S.str();

}

string TERMINATE(int ukaz)

{

int x;

ostringstream S;

if(ukaz!=0) S<<"U_"<<ukaz<<" ";

cout<<"Сколько тразактов извлечь: ";

cin>>x;

S<<"TERMINATE "<<x<<endl;

system("cls");

return S.str();

}

void FUNCTION()

{

nF++;

int n;

float x;

cout<<"Номер генератора(аргумент ф-ии): ";

cin>>n;

file<<"F_"<<nF<<" FUNCTION RN"<<n<<",";

cout<<"Тип функции:\n";

cout<<"1 - С кусочно-линейной (непрерывной) аппроксимацией (С);\n";

cout<<"2 - С ступенчатой (дискретной) аппроксимацией (D);\n";

cout<<"3 - Табличное, точечное задание функции без аппроксимации (L);\n";

cout<<"4 - Задание дискретной атрибутивной (E)\n";

cout<<"5 - Задание табличной атрибутивной (M)\n";

M1:

cout<<"Ваш выбор: ";

cin>>n;

switch (n)

{

case 1:file<<"C";break;

case 2:file<<"D";break;

case 3:file<<"L";break;

case 4:file<<"E";break;

case 5:file<<"M";break;

default:

cout<<"ВВедено неверно!!!\n";

goto M1;

break;

}

cout<<"Число точек: ";

cin>>n;

file<<n<<endl;

for(int i=1;i<=n;i++)

{

cout<<"X["<<i<<"]=";

cin>>x;

file<<x<<",";

cout<<"Y["<<i<<"]=";

cin>>x;

file<<x;

if(i<n)

file<<"/";

}

file<<endl;

}

string FStand()

{

int n;

string S;

cout<<"1 - BETA(Stream,Min,Max,Shape1,Shape2);\n";

cout<<"2 - BINOMIAL(Stream,TrialCount,Probability);\n";

cout<<"3 - DUNIFORM(Stream,Min,Max);\n";

cout<<"4 - EXPONENTIAL(Stream,Locate,Scale);\n";

cout<<"5 - EXTVALA(Stream,Locate,Scale);\n";

cout<<"6 - EXTVALB(Stream,Locate,Scale);\n";

cout<<"7 - GAMMA(Stream,Locate,Scale,Shape);\n";

cout<<"8 - GEOMETRIC(Stream,Probability);\n";

cout<<"9 - INVGAUSS(Stream,Locate,Scale,Shape);\n";

cout<<"10 - INVWEIBULL(Stream,Locate,Scale,Shape);\n";

cout<<"11 - LAPLACE(Stream,Locate,Scale);\n";

cout<<"12 - LOGISTIC(Stream,Locate,Scale);\n";

cout<<"13 - LOGLAPLACE(Stream,Locate,Scale,Shape);\n";

cout<<"14 - LOGLOGIS(Stream,Locate,Scale,Shape);\n";

cout<<"15 - LOGNORMAL(Stream,Locate,Scale,Shape);\n";

cout<<"16 - NEGBINOM(Stream,SuccessCount,Probability);\n";

cout<<"17 - NORMAL(Stream,Mean,StdDev);\n";

cout<<"18 - PARETO(Stream,Locate,Scale );\n";

cout<<"19 - PEARSON5(Stream,Locate,Scale,Shape);\n";

cout<<"20 - PEARSON6(Stream,Locate,Scale,Shape1,Shape2 );\n";

cout<<"21 - POISSON(Stream,Mean);\n";

cout<<"22 - TRIANGULAR(Stream,Min,Max,Mode);\n";

cout<<"23 - UNIFORM(Stream,Min,Max );\n";

cout<<"24 - WEIBULL(Stream,Locate,Scale,Shape );\n";

M1:

cout<<"Ваш выбор: ";

cin>>n;

switch(n)

{

case 1:return fBETA();break;

case 2:return fBINOMIAL();break;

case 3:return fDUNIFORM();break;

case 4:return S="(EXPONENTIAL("+f_1();break;

case 5:return S="(EXTVALA("+f_1();break;

case 6:return S="(EXTVALB("+f_1();break;

case 7:return S="(GAMMA("+f_2();break;

case 8:return fGEOMETRIC();break;

case 9:return S="(INVGAUSS("+f_2();break;

case 10:return S="(INVWEIBULL("+f_2();break;

case 11:return S="(LAPLACE("+f_1();break;

case 12:return S="(LOGISTIC("+f_1();break;

case 13:return S="(LOGLAPLACE("+f_2();break;

case 14:return S="(LOGLOGIS("+f_2();break;

case 15:return S="(LOGNORMAL("+f_2();break;

case 16:return fNEGBINOM();break;

case 17:return fNORMAL();break;

case 18:return fPARETO();break;

case 19:return S="(PEARSON5("+f_2();break;

case 20:return fPEARSON6();break;

case 21:return fPOISSON();break;

case 22:return fTRIANGULAR();break;

case 23:return fUNIFORM();break;

case 24:return S="(WEIBULL("+f_2();break;

default:

cout<<"ВВедено неверно!!!\n";

goto M1;

break;

}

}

};

class GPSSText:public GPSSOperatori

{

vector<int> oper,ukazat;

vector<float> matrix;

public:

GPSSText()

{

nF=0;nST=0;nFas=0;nQ=0;

}

void Matrix()

{

int k,n,m,uzel;

float x;

cout<<"Количество узлов: ";

cin>>uzel;

system("cls");

for(int i=1;i<=uzel;i++)

{

M1:

cout<<"Введите оператор "<<i<<" узла:\n";

cout<<"1 - генератор;\n";

cout<<"2 - одноканальное устройство;\n";

cout<<"3 - многоканальное устройство;\n";

cout<<"4 - вероятностный узел;\n";

cout<<"5 - терминатор;\n";

cout<<"Ваш выбор: ";

cin>>n;

if((n<1)&&(n>5))

{

cout<<"ВВедено неверно!!!\n";

goto M1;

}

oper.push_back(n);

if(n==4)

{

M2:

cout<<"На какой узел идет (по возрастанию): ";

cin>>m;

if(m>uzel)

{

cout<<"ВВедено неверно!!!\n";

goto M2;

}

for(int i=1;i<m;i++) matrix.push_back(0);

cout<<"Вероятность: ";

cin>>x;

matrix.push_back(x);

M3:

cout<<"Второй узел: ";

cin>>k;

if(k>uzel)

{

cout<<"ВВедено неверно!!!\n";

goto M3;

}

for(int i=m+1;i<k;i++) matrix.push_back(0);

matrix.push_back(1-x);

for(int i=k+1;i<=uzel;i++) matrix.push_back(0);

}

else

if(n==5)

for(int i=0;i<uzel;i++) matrix.push_back(0);

else

{

M4:

cout<<"На какой узел идет: ";

cin>>m;

if(m>uzel)

{

cout<<"ВВедено неверно!!!\n";

goto M4;

}

for(int i=1;i<m;i++) matrix.push_back(0);

matrix.push_back(1);

for(int i=m+1;i<=uzel;i++) matrix.push_back(0);

}

system("cls");

}

}

void Programma()

{

int n,uzel1=0,uzel2=0,uzel;

float ver;

bool b;

ostringstream Proga;

Matrix();

uzel=oper.size();

for(int i=0;i<uzel;i++) ukazat.push_back(0);

Proga<<GENERATE();

for(int i=0;i<uzel;i++)

{

if(matrix[(uzel-1)*uzel+i]>0)

ukazat[i]=i+1;

if(ukazat[i]==0)

for(int j=i;j<uzel;j++)

if(matrix[j*uzel+i]>0)

ukazat[i]=i+1;

}

for(int i=1;i<uzel;i++)

{

cout<<"Узел "<<i+1<<endl;

switch(oper[i])

{

case 1:

break;

case 2:

Proga<<SEIZE(ukazat[i]);

break;

case 3:

Proga<<ENTER(ukazat[i]);

break;

case 4:

uzel1=0;

for(int j=0;j<uzel;j++)

if (matrix[i*uzel+j]>0)

if(uzel1==0)

{

uzel1=j+1;

ver=matrix[i*uzel+j];

}

else uzel2=j+1;

ukazat[uzel1-1]=uzel1;

ukazat[uzel2-1]=uzel2;

Proga<<TRANSFER(ukazat[i],ver,uzel1,uzel2);

break;

case 5:

Proga<<TERMINATE(ukazat[i]);

break;

default: break;

}

if(oper[i]!=5)

{

n=0;

for(int j=0;j<uzel;j++)

if ((matrix[i*uzel+j]>0))

for(int l=0;l<uzel;l++)

{

if((matrix[l*uzel+j]>0)&&(oper[l]!=4))

n++;

if(n>1)

{

Proga<<"TRANSFER ,U_"<<j+1<<endl;

ukazat[j]=j+1;

n=0;

}

}

}

}

file<<Proga.str();

file.close();

cout<<"\n\n\n\n\n\n\n\n\t#####################################################\n";

cout<<"\t## Работа программы закончена! ##\n";

cout<<"\t## Tекст программы находится в файле GPSStext.txt! ##\n";

cout<<"\t#####################################################\n";

}

};

int main()

{

setlocale(LC_ALL,"");

GPSSText T;

T.Programma();

system("pause");

return 0;

}


Подобные документы

  • Определение основных параметров грузоперевозок, их организационная структура. Виды и функции имитационного моделирования. Разработка концептуальной модели перевозки грузов, ее представление в виде системы массового обслуживания и программная реализация.

    курсовая работа [761,6 K], добавлен 22.01.2012

  • Проектирование и реализация модели, которая будет имитировать автозаправочную станцию с постоплатой. Подбор оптимальных параметров модели с учетом требований к сети массового обслуживания. Разработка модели в среде имитационного моделирования GPSS World.

    контрольная работа [279,5 K], добавлен 16.03.2014

  • Определение назначения и описание функций имитационных моделей стохастических процессов систем массового обслуживания. Разработка модели описанной системы в виде Q-схемы и программы на языке GPSS и C#. Основные показатели работы имитационной модели.

    курсовая работа [487,4 K], добавлен 18.12.2014

  • Разработка решения задачи имитационного моделирования системы массового обслуживания (СМО), на примере склада продукции. Построение концептуальной модели системы. Сравнение результатов имитационного моделирования и аналитического расчета характеристик.

    курсовая работа [75,5 K], добавлен 26.06.2011

  • Моделирование как основная функция вычислительных систем. Разработка концептуальной модели для системы массового обслуживания и ее формализация. Аналитический расчет и алгоритмизация модели, построение блок-диаграмм. Разработка и кодирование программы.

    курсовая работа [164,8 K], добавлен 18.12.2011

  • Методика системного исследования реальной динамической сложной системы посредством разработки ее имитационной модели. Разработка программы реализации алгоритма имитационного моделирования системы массового обслуживания "Интернет-провайдерская фирма".

    курсовая работа [2,0 M], добавлен 20.01.2010

  • Основные понятия теории моделирования. Виды и принципы моделирования. Создание и проведение исследований одной из моделей систем массового обслуживания (СМО) – модели D/D/2 в среде SimEvents, являющейся одним из компонентов системы MATLab+SimuLink.

    реферат [1,2 M], добавлен 02.05.2012

  • Практические навыки системного исследования реальной динамической сложной системы на основе построения ее имитационной модели. Автоматизация работы по расчету эффективности системы массового обслуживания с понятным интерфейсом. Выбор алгоритма решения.

    курсовая работа [1,0 M], добавлен 18.08.2009

  • Разработка концептуальной модели системы обработки информации для узла коммутации сообщений. Построение структурной и функциональной блок-схем системы. Программирование модели на языке GPSS/PC. Анализ экономической эффективности результатов моделирования.

    курсовая работа [802,8 K], добавлен 04.03.2015

  • Система GPSS World как мощная универсальная среда моделирования как дискретных, так и непрерывных процессов, предназначенная для профессионального моделирования самых разнообразных процессов и систем. Системы массового обслуживания. Листинг программы.

    курсовая работа [499,6 K], добавлен 25.12.2013

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.