Автор работы: Пользователь скрыл имя, 02 Февраля 2014 в 22:36, курсовая работа
Целью курсовой работы является:
- построить имитационную модель функционирования торгового предприятия;
- сформировать план проведения эксперимента;
- построить регрессионную функцию, адекватно описывающую модель торгового предприятия;
- сделать выводы, провести анализ уравнения.
1. Цель работы 7
2. Постановка задания 7
3. Спецификация процедур и функций 7
Список используемых источников 8
Приложение А Теоретические расчеты 9
Приложение Б Контрольный пример 12
Приложение В Текст программы 13
Текст программы
//----------------------------
#include <vcl.h>
//----------------------------
#include <vcl.h>
#pragma hdrstop
#include<stdio.h>
#include <math.h>
#include "Unit1.h"
//----------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int mas1[8][4]={1,-1,-1,-1,
1,1,-1,-1,
1,-1,1,-1,
1,1,1,-1,
1,-1,-1,1,
1,1,-1,1,
1,-1,1,1,
1,1,1,1};
int mas1_1[8][4]={1,1,1,-1,
-1,-1,1,1,
-1,1,-1,1,
1,-1,-1,-1,
1,-1,-1,1,
-1,1,-1,-1,
-1,-1,1,-1,
1,1,1,1};
float mas2[8][3];
float mast[8];
float mas3_mx[8],mas4_dx[8],mas5_B[
float Yj[8],Yj1[8];
float G=0,Svospr=0,fvospr=0;
int N=8,l=3;
float Fras=0,Sad=0,Sbi=0,Sad2=0,
float Ftab=3.0,ttab=2.12,Ftab2=4.68;
float __fastcall TForm1::NormZakon(float M,float d)
{
float r,z=0,X;
for(int i=0;i<12;i++)
{
r=rand()%10000;
r/=10000;
z+=r;
}
z-=6;
X=M+d*z;
return X;
}
float __fastcall TForm1::RavnZakon(float a,float b)
{
float r,X;
r=rand()%10000;
r/=10000;
X=a+r*(b-a);
return X;
}
float __fastcall TForm1::ExpZakon(float L)
{
float r,X;
r=rand()%10000;
r/=10000;
X=(-1/L)*log(1-r);
return X;
}
void __fastcall TForm1::Immod(void)
{
randomize();
int i1,j1;
int i,j,N=100,a,b,pred,strax,Fl,p,
float prib,M,d,L,T,t,time=0,I=0,D=0;
float a1,b1,c;
pred=1000;
a=1;
b=3;
d=0;
a1=50;
b1=10;
c=40;
for(i1=0;i1<8;i1++)
for(j1=0;j1<3;j1++)
{
if(i1==0){ strax=110;
M=5,5;
L=6;
}
if(i1==1){ strax=110;
M=5,5;
L=14;
}
if(i1==2){ strax=140;
M=5,5;
L=6;
}
if(i1==3){ strax=140;
M=5,5;
L=14;
}
if(i1==4){ strax=110;
M=8,5;
L=6;
}
if(i1==5){ strax=110;
M=8,5;
L=14;
}
if(i1==6){ strax=140;
M=8,5;
L=6;
}
if(i1==7){ strax=140;
M=8,5;
L=14;
}
for(i=0;i<N;i++)
{
Kol1=0;
Kol=Kol+pred;
while(Kol>strax)
{
time+=ExpZakon(L);
p=(int)RavnZakon(a,b);
Kol-=p;
Kol1+=p;
}
T=NormZakon(M,d);
t=0;
Fl=0;
while(t<T)
{
if(Kol<=0)
{
D++; Fl=1; break;
}
t+=ExpZakon(L);
p=(int)RavnZakon(a,b);
Kol-=p;
Kol1+=p;
}
if(!Fl)
{
I++;
prib+=Kol1*a1-(pred-Kol1)*b1;
}
else prib+=pred*a1-(Kol1-pred)*c;
time+=t;
}
mas2[i1][j1]=prib;
prib=0;
}
}
//----------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
int i,j;
for(i=1;i<9;i++)
StringGrid1->Cells[0][i]=i;
StringGrid1->Cells[1][0]="X0";
StringGrid1->Cells[2][0]="X1";
StringGrid1->Cells[3][0]="X2";
StringGrid1->Cells[4][0]="X3";
StringGrid1->Cells[5][0]="Y_
StringGrid1->Cells[6][0]="Dx";
StringGrid1->Cells[7][0]="Yj";
StringGrid1->Cells[8][0]="
StringGrid1->Cells[9][0]="
StringGrid1->Cells[10][0]="
StringGrid1->Cells[11][0]="
StringGrid1->Cells[12][0]="Y_
StringGrid1->Cells[13][0]="Ym"
//*************
StringGrid2->Cells[0][1]="B0";
StringGrid2->Cells[0][2]="B1";
StringGrid2->Cells[0][3]="B2";
StringGrid2->Cells[0][4]="B3";
StringGrid2->Cells[0][5]="B12"
StringGrid2->Cells[0][6]="B13"
StringGrid2->Cells[0][7]="B23"
StringGrid2->Cells[0][8]="
//*************
StringGrid3->Cells[0][1]="t0";
StringGrid3->Cells[0][2]="t1";
StringGrid3->Cells[0][3]="t2";
StringGrid3->Cells[0][4]="t3";
StringGrid3->Cells[0][5]="t12"
StringGrid3->Cells[0][6]="t13"
StringGrid3->Cells[0][7]="t23"
StringGrid3->Cells[0][8]="
//*************
for(i=0;i<8;i++)
for(j=0;j<4;j++)
if(mas1[i][j]==-1) StringGrid1->Cells[j+1][i+1]="
else StringGrid1->Cells[j+1][i+1]="
}
//----------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
Immod();
int i,j;
for(i=0;i<8;i++)
for(j=0;j<3;j++)
mas3_mx[i]+=mas2[i][j];
for(i=0;i<8;i++)
mas3_mx[i]/=3;
for(i=0;i<8;i++)
for(j=0;j<3;j++)
mas4_dx[i]+=pow((mas2[i][j]-
for(i=0;i<8;i++) mas4_dx[i]/=2;
for(i=0;i<8;i++)
{
StringGrid1->Cells[5][i+1]=
StringGrid1->Cells[6][i+1]=
}
Button1->Enabled=false;
Button2->Enabled=true;
}
//----------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int i;
float sdx,max_dx=0;
for(i=0;i<8;i++)
{
if(max_dx<mas4_dx[i]) max_dx=mas4_dx[i];
sdx+=mas4_dx[i];
}
G=max_dx/sdx;
Edit1->Text=FloatToStr(G);
Svospr=sdx/N;
Edit2->Text=FloatToStr(Svospr)
fvospr=N*(l-1);
Edit3->Text=FloatToStr(fvospr)
Button2->Enabled=false;
Button3->Enabled=true;
}
//----------------------------
void __fastcall TForm1::Button3Click(TObject *Sender)
{
int i,j,h=4;
mas3_mx;
float Sad1;
for(i=0;i<4;i++)
for(j=0;j<8;j++)
{
mas5_B[i]+=mas1[j][i]*mas3_mx[
}
for(i=0;i<4;i++)
mas5_B[i]/=8;
for(i=0;i<4;i++)
StringGrid2->Cells[1][i+1]=
Edit4->Text=FloatToStr(mas5_B[
Edit5->Text=FloatToStr(mas5_B[
Edit6->Text=FloatToStr(mas5_B[
Edit7->Text=FloatToStr(mas5_B[
for(i=0;i<8;i++)
for(j=0;j<4;j++)
{
Yj[i]+=mas5_B[j]*mas1[i][j];
}
for(i=0;i<8;i++)
StringGrid1->Cells[7][i+1]=Yj[
//
for(i=0;i<8;i++)
{
Sad1+=pow((mas3_mx[i]-Yj[i]),
}
Sad=Sad1*l/(N-h);
Edit8->Text=FloatToStr(Sad);
Fras=Sad/Svospr;
Edit9->Text=FloatToStr(Fras);
if(Fras>Ftab) {Label12->Caption=">";Button4-
else Label12->Caption="<";
Button3->Enabled=false;
}
//----------------------------
void __fastcall TForm1::Button4Click(TObject *Sender)
{
int i,j;
for(i=0;i<8;i++)
for(j=0;j<4;j++)
if(mas1_1[i][j]==-1) StringGrid1->Cells[j+8][i+1]="
else StringGrid1->Cells[j+8][i+1]="
for(i=0;i<4;i++)
for(j=0;j<8;j++)
{
mas5_B2[i]+=mas1_1[j][i]*mas3_
}
for(i=0;i<4;i++)
mas5_B2[i]/=8;
for(i=0;i<4;i++)
StringGrid2->Cells[1][i+5]=
Sbi=sqrt(Svospr/(l*N));
Edit10->Text=FloatToStr(Sbi);
for(i=0;i<4;i++)
mast[i]=fabs(mas5_B[i])/Sbi;
for(i=0;i<4;i++)
mast[i+4]=fabs(mas5_B2[i])/
for(i=0;i<8;i++)
StringGrid3->Cells[1][i+1]=
for(i=0;i<8;i++)
if(i<4)
{
if(mast[i]>ttab) XXX[i]=mas5_B[i];
else XXX[i]=0;
}
else
{
if(mast[i]>ttab) XXX[i]=mas5_B2[i-4];
else XXX[i]=0;
}
Edit11->Text=FloatToStr(XXX[0]
Edit12->Text=FloatToStr(XXX[1]
Edit13->Text=FloatToStr(XXX[2]
Edit14->Text=FloatToStr(XXX[3]
Edit15->Text=FloatToStr(XXX[4]
Edit16->Text=FloatToStr(XXX[5]
Edit17->Text=FloatToStr(XXX[6]
Edit18->Text=FloatToStr(XXX[7]
for(i=0;i<8;i++)
for(j=0;j<4;j++)
if(XXX[j]!=0)
Yj1[i]+=XXX[j]*mas1[i][j];
for(i=0;i<8;i++)
for(j=0;j<4;j++)
if(XXX[j+4]!=0)
Yj1[i]+=XXX[j+4]*mas1_1[i][j];
for(i=0;i<8;i++)
StringGrid1->Cells[13][i+1]=
Button4->Enabled=false;
Button5->Enabled=true;
}
//----------------------------
void __fastcall TForm1::Button5Click(TObject *Sender)
{
int i,j,h=6;
float Sad1;
for(i=0;i<8;i++)
{
Sad1+=pow((mas3_mx[i]-Yj1[i]),
}
Sad2=Sad1*l/(N-h);
Edit19->Text=FloatToStr(Sad2);
Fras2=Sad2/Svospr;
if(Fras2>Ftab2) {Label26->Caption=">";}
else Label26->Caption="<";
Edit20->Text=FloatToStr(Fras2)
Button5->Enabled=false;
ShowMessage("Fras<Ftab полученное уравнение приблеженной регрессии адекватно описывает исследуемые процессы, т.е. математическая модель хорошо согласуется с эксперементальными данными");
Button6->Enabled=true;
}
//----------------------------
void __fastcall TForm1::Button6Click(TObject *Sender)
{
int i;
for(i=0;i<8;i++)
{mast[i]=0;
mas3_mx[i]=0;
mas4_dx[i]=0;
XXX[i]=0;
Yj[i]=0;
Yj1[i]=0;
}
for(i=0;i<4;i++)
{
mas5_B[i]=0;mas5_B2[i]=0;
}
G=0,Svospr=0,fvospr=0;
Fras=0;Sad=0;Sbi=0;Sad2=0;
Button1->Enabled=true;
Button6->Enabled=false;
}
//----------------------------