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