Разработка средств моделирования систем
Понятие, основные задачи и функции общей теории систем как науки. Формулирование требований к системе, разработка концептуальной модели системы на примере системы массового обслуживания (СМО). Проектирование имитационной модели, ее реализация и испытание.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 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