Documente Academic
Documente Profesional
Documente Cultură
Bernic Ermil MSP Part2
Bernic Ermil MSP Part2
Figura 2. Fluxul opririlor – flux Poisson-ian rezultat din reunire mai multor fluxuri
Poissoniene
Fie Tpo – Timpul pana la urmatoarea oprire sau intervalul dintre doua opriri consecutive.
Desi cele nf sisteme nu sunt puse simultan in functiune, pe baza proprietatii variabilei
aleatoare exponential negativa de a fi fara memorie ,deducem faptul ca Tpo є Exp( nf (λA+
λB)).Asadar,fluxul reunit este un flux Possonian.
● Deservire
Timpul de remediere pentru un sistem oprit depinde de modulul afectat de intreruperea
accidentala ,A sau B. De la Etapa1 a
rezultat ca ca cele doua variabile aleatoare primare T rA si TrB au repartitii exponential
negative de repartitii μA si μB.
Fie pA si pB probabilitatea ca la un sistem oprit,modulul care necesita interventia pentru
remediere sa fie de tipA ,respectiv tipB.
● nf si no – variabile de stare;
●Statistici construite:
STF = suma timpilor de functionare pentru ele S sisteme in perioada simulata;
STR= suma timpilor de remediere;
Precizari:
Stabilirea duratei de simulare(DS)
Durata de simulare trebuie sa asigure tratarea unui numar de intreruperi accidentale de
ordin 105 sau 107.
Intre numarul de opriri(NO) si durata simularii exista relatia:
○ Durata de simulare depinde de S, fiind mai mica pentru valori mai mari ale lui S;
○ Durata de simulare nu poate fi cunoscuta de la inceput cu exactitate, intrucat depinde de
D, tocmai necunoscuta problemei. In aceste conditii,cel mai simplu este ca sa se exprime
criteriul de stop direct in functie de numarul de opriri.
Codul Sursa:
//header.h
#pragma once
double genExp(double l);
double genGauss(double medie, double sigma);
double genTr(double uA, double uB, double pA);
double Simularea(int S);
//functii.cpp
#include<iostream>
#include<stdlib.h>
#include<math.h>
#include"Header.h"
using namespace std;
double genExp(double l)// fct pt gen random a unei variabile aleatoare cu repartitie exp neg
{
double u = (double)rand() / (RAND_MAX + 1);
return -1 / l*log(1 - u);
}
double genGauss(double medie, double sigma) //functia normala
{
double s = 0;int i;
for (i = 1;i <= 12;i++)
{
s += (double)rand() / RAND_MAX;
}
return medie += sigma*(s - 6);
}
double genTr(double uA, double uB, double pA)
{
double Tr;
double U;
U = (double)rand() / (RAND_MAX + 1);
if (U<pA)
{
Tr = genExp(uA); // repartitie exponentiala
//Tr=genGauss(1/uA,1/(3.5*uA)); //repartitie normala
}
else
{
Tr = genExp(uB);
//Tr=genGauss(1/uB,1/(3.5*uB));
}
return Tr;
}
double Simularea(int S)
{
double lamA = 0.2451;//tfa Rezultatul lamFinal din partea I
double lamB = 0.1897;//tfb Rezultatul lamFinal din partea I
double miuA = 4.6105;//tra Rezultatul lamFinal din partea I
double miuB = 4.3957;//trb Rezultatul lamFinal din partea I
double DS; //durata
double Stf = 0;//suma timpilor de functionare pentru cele S sisteme in perioad simulata
double Str = 0;//suma timpilor de remediere
double D = 0;
double O = 0;//grad de ocupare
nf++;
no--;
if (no>0)
{
Tr = genTr(miuA, miuB, pA);
Str += Tr;
}
NR++;
}
if (nf>0)
{
Tpo = genExp(nf * (lamA + lamB));
}
} while (NO<1e+6);
DS = ceas;//durata simularii
D = (Stf / (DS*S)) * 100;
O = (Str / DS) * 100;
O = Simularea(S);
}
system("pause");
return 0;
}
Etape:
Pentru cazul S=1 folosim repartitia exponentiala
1.Se verifica programul pentru valori cat mai mari ale lui S pana cand gradul
de ocupare ajunge la aproximativ 90%.
Valorile parametrilor:
�A= 0.2451;
�B=0.1897;
�A=4.6105;
�B=4.3957;
T r m≌0.22079;
Concluzia
Remarcăm în ambele cazuri că o dată cu creșterea numărului de
sisteme(S), scade treptat disponibilitatea sistemului, însă crește gradul de
ocupare. Observăm de asemenea că am atins gradul de ocupare(90%) cu 13
sisteme atunci când am utilizat repartiția exponențială, și 12 sisteme când am
utilizat repartiția normală, de aici putem concluziona că e mai bine să utilizăm
repartiția exponențială, deoarece cu același grad de ocupare muncitorul va
deservi mai multe sisteme.