Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Revision 0:9204c5565a45, committed 2015-11-16
- Comitter:
- JhonToroM
- Date:
- Mon Nov 16 03:30:45 2015 +0000
- Child:
- 1:6e6574fdb585
- Commit message:
- finaL?
Changed in this revision
main.cpp | Show annotated file Show diff for this revision Revisions of this file |
mbed.bld | Show annotated file Show diff for this revision Revisions of this file |
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Mon Nov 16 03:30:45 2015 +0000 @@ -0,0 +1,126 @@ +#include "mbed.h" +#include <math.h> +Serial pc(USBTX, USBRX); +int mu_q1 = 8; //Tasa de servicio de Cola Q1 +int mu_q2 = 3*3; //Tasa de servicio de Cola Q2 *3 por n�mero de servidores +int mu_q3 = 15; //Tasa de servicio de Cola Q3 + +int lamb = 10; //Tasa de llegada de paquetes + +float P = 0.5; //Probabilidad de llegada a Q2 (vs. Q1) +float S = 0.1; //Probabilidad de llegada a Q1 (vs. Salida) + +float t=0; //Inicializaci�n del tiempo actual +float Vt[]= {}; //Vector de tiempos de eventos +int k=1; //Indice de los eventos ocurridos +float Tf=1000; //Tiempo m�ximo de simulaci�n + +int C_Q1[]= {}; //Log de N�mero de paquetes en la cola Q1 +int C_Q2[]= {}; //Log de N�mero de paquetes en la cola Q2 +int C_Q3[]= {}; //Log de N�mero de paquetes en la cola Q3 + +float t_arrival=0; //Tiempo de llegada de paquetes +float t_out1=0; //Tiempo de salida de la cola Q1 +float t_out2=0; //Tiempo de salida de la cola Q2 +float t_out3=0; //Tiempo de salida de la cola Q3 +float t_min=0; //Variable auxiliar +int mini=100000; //Variable auxiliar + +float evalmin[4] = {t_arrival , t_out1 , t_out2 , t_out3}; + +float a=1103515245; +float m=4294967295; +int c=12345; +float x=100; +float u=x/m; + +// RANDOM +double r_unif(void) +{ + x= (a*x+c)-m*floor((a*x+c)/m); + u=x/m; + return u; +} + +// RANDOM EXPONENCIAL +double r_exp(float mu) +{ + double temp=-mu*log(r_unif()); + return temp; +} + + + +int main() +{ + pc.baud(115200); + for(k=1; k<3000; k++) { + t_arrival= r_exp(1/lamb); //Tiempo de llegada del siguiente paquete + if (C_Q1[k]>0) { + t_out1= r_exp(1/mu_q1); + } else { + t_out1=t_arrival+1; + } + if (C_Q2[k]>0) { + t_out2= r_exp(1/mu_q2); + } else { + t_out2=t_arrival+1; + } + if (C_Q3[k]>0) { + t_out3= r_exp(1/mu_q3); + } else { + t_out3=t_arrival+1; + } + +//Se calcula el evento que pasara primero + int i; + for (i=0; i<4; i++ ) { + if(t_min > evalmin[i]) { + t_min= evalmin[i]; + mini=i; + } + } + +// Se actualiza el vector de tiempos + t=t+t_min; +//Se actualiza el log de eventos + Vt[k]=t; + +//Ahora se analiza el evento de minimo tiempo y se aplican los cambios + + switch (mini) { + case 1: + if (r_unif() >= P) { + C_Q1[k] = C_Q1[k-1]+1; //Entra a Q1 + C_Q2[k] = C_Q2[k-1]; //Q2 permanece igual + C_Q3[k] = C_Q3[k-1]; //Q3 permanece igual + } else { + C_Q2[k] = C_Q2[k-1]+1; //Entra a Q2 + C_Q1[k] = C_Q1[k-1]; //Q1 permanece igual + C_Q3[k] = C_Q3[k-1]; //Q3 permanece igual + } + break; + case 2: //La salida de la cola 1 es primero + C_Q1[k] = C_Q1[k-1]-1; //Sale de Q1 + C_Q3[k] = C_Q3[k-1]+1; //Entra a Q3 + C_Q2[k] = C_Q2[k-1]; //Q2 permanece igual + break; + case 3: //La salida de la cola 2 es primero + C_Q2[k] = C_Q2[k-1]-1; //Sale de Q2 + C_Q3[k] = C_Q3[k-1]+1; //Entra a Q3 + C_Q1[k] = C_Q1[k-1]; //Q1 permanece igual + break; + case 4: + C_Q3[k] = C_Q3[k-1]-1; //Sale de Q3 + C_Q2[k] = C_Q2[k-1]; //Q2 permanece igual + if (r_unif()<S) { //Distr. uniforme para calcular prob 0.1 + C_Q1[k] = C_Q1[k-1]+1; //Entra a Q1 + } else { + C_Q1[k] = C_Q1[k-1]; //Q1 permanece igual + } + break; + } + pc.printf("%.2f \r\n ",C_Q1[k]); + } + +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Mon Nov 16 03:30:45 2015 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/9296ab0bfc11 \ No newline at end of file