Semaforo en C#

Introducción:
La configuración de los parámetros debe ser adaptado a cada tipo de problema, el autoajuste de parámetros se refiere al uso de técnicas que permiten la evolución o adaptación de varios parámetros de un Algoritmo Genético mientras se está ejecutando.
Este tipo de método adaptativo utiliza una serie de parámetros iniciales que se modifican durante la ejecución del algoritmo y no requieren de la participación o modificación por parte del desarrollador.
Un semáforo en programación es una estructura diseñada para sincronizar dos o más threads (hilos) de modo que su ejecución se realice de forma ordenada y sin conflictos entre ellos. Esta es una estructura formada por una posición de memoria y dos instrucciones, una para reservarlo y otra para liberarlo, además, se le puede añadir una cola para recordar el orden en el que se hicieron las peticiones.
Secuencia lógica: Una secuencia lógica es una sucesión ordenada de ideas que guardan alguna relación entre sí, una continuidad o una sucesión ordenada.
Objetivo:
En esta práctica programaremos un sistema adaptativo, el programa consiste en un cruce de calles controladas por su respectivo semáforo, tenemos que controlar el tráfico de cada calle. No solo se tiene que tomar en cuenta el tráfico de la calle, si no también tenemos que prevenir que los semáforos de calles contrarias se enciendan al mismo tiempo para evitar un choque. Entonces, el objetivo de esta práctica es implementar un sistema que se adapte a la necesidad de ese cruce de calles, que se minimicen las congestiones y sea un sistema funcional, adaptable y con el menor número de fallos.
Desarrollo:
Se desarrolla una aplicación en C# ambientada en la IDE de Visual Studio 2017
Como parámetros se toman el tiempo, y el color de luces que están en otro semáforo.
Condiciones representadas en el siguiente grafo:
1.    Cuando “A” este en verde, solamente “B” puede estar en verde al mismo tiempo.
  1. Cuando “B” este en verde, solamente “A” puede estar en verde al mismo tiempo.
  2. Cuando “C” este en verde, solamente “D” puede estar en verde al mismo tiempo.
  3. Cuando “D” este en verde, solamente “C” puede estar en verde al mismo tiempo.




Condiciones representadas gráficamente.
Elipse: D


                                                                                                                      

                        
Diseño de curce.









Cruce que se usó en la interfaz de programación.







Código de programa
  1. Public Class Form1
  2.     Dim contador As Integer
  3.     Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
  4.         contador = 0
  5.     End Sub
  6.     Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
  7.         Timer1.Enabled = True
  8.         Timer1.Interval = 1000
  9.     End Sub
  10.  
  11.     Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
  12.         contador = contador + 1
  13.         PictureBox10.Visible = False
  14.         PictureBox6.Left += 30
  15.         PictureBox7.Left -= 30
  16.         If contador = 1 Then
  17.             Button2.Visible = False
  18.             Button3.Visible = True
  19.             Button4.Visible = True
  20.  
  21.             Button5.Visible = True
  22.             Button6.Visible = True
  23.             Button7.Visible = False
  24.  
  25.             Button8.Visible = True
  26.             Button9.Visible = True
  27.             Button10.Visible = False
  28.  
  29.             Button11.Visible = False
  30.             Button12.Visible = True
  31.             Button13.Visible = True
  32.         End If
  33.  
  34.         If contador = 5 Then
  35.             Button2.Visible = False
  36.             Button3.Visible = True
  37.             Button4.Visible = True
  38.  
  39.             Button5.Visible = True
  40.             Button6.Visible = False
  41.             Button7.Visible = True
  42.  
  43.             Button8.Visible = True
  44.             Button9.Visible = False
  45.             Button10.Visible = True
  46.  
  47.             Button11.Visible = False
  48.             Button12.Visible = True
  49.             Button13.Visible = True
  50.         End If
  51.         If contador = 6 Then
  52.             Button2.Visible = False
  53.             Button3.Visible = True
  54.             Button4.Visible = True
  55.  
  56.             Button5.Visible = True
  57.             Button6.Visible = True
  58.             Button7.Visible = True
  59.  
  60.             Button8.Visible = True
  61.             Button9.Visible = True
  62.             Button10.Visible = True
  63.  
  64.             Button11.Visible = False
  65.             Button12.Visible = True
  66.             Button13.Visible = True
  67.         End If
  68.         If contador = 7 Then
  69.             Button2.Visible = False
  70.             Button3.Visible = True
  71.             Button4.Visible = True
  72.  
  73.             Button5.Visible = True
  74.             Button6.Visible = False
  75.             Button7.Visible = True
  76.  
  77.             Button8.Visible = True
  78.             Button9.Visible = False
  79.             Button10.Visible = True
  80.  
  81.             Button11.Visible = False
  82.             Button12.Visible = True
  83.             Button13.Visible = True
  84.         End If
  85.         If contador = 8 Then
  86.             Button2.Visible = False
  87.             Button3.Visible = True
  88.             Button4.Visible = True
  89.  
  90.             Button5.Visible = True
  91.             Button6.Visible = True
  92.             Button7.Visible = True
  93.  
  94.             Button8.Visible = True
  95.             Button9.Visible = True
  96.             Button10.Visible = True
  97.  
  98.             Button11.Visible = False
  99.             Button12.Visible = True
  100.             Button13.Visible = True
  101.         End If
  1.         If contador = 9 Then
  2.             Button2.Visible = False
  3.             Button3.Visible = True
  4.             Button4.Visible = True
  5.  
  6.             Button5.Visible = True
  7.             Button6.Visible = False
  8.             Button7.Visible = True
  9.  
  10.             Button8.Visible = True
  11.             Button9.Visible = False
  12.             Button10.Visible = True
  13.  
  14.             Button11.Visible = False
  15.             Button12.Visible = True
  16.             Button13.Visible = True
  17.         End If
  18.         If contador = 10 Then
  19.             Button2.Visible = False
  20.             Button3.Visible = True
  21.             Button4.Visible = True
  22.  
  23.             Button5.Visible = True
  24.             Button6.Visible = True
  25.             Button7.Visible = True
  26.  
  27.             Button8.Visible = True
  28.             Button9.Visible = True
  29.             Button10.Visible = True
  30.  
  31.             Button11.Visible = False
  32.             Button12.Visible = True
  33.             Button13.Visible = True
  34.         End If
  35.         If contador = 11 Then
  36.             Button2.Visible = True
  37.             Button3.Visible = True
  38.             Button4.Visible = False
  39.  
  40.             Button5.Visible = False
  41.             Button6.Visible = True
  42.             Button7.Visible = True
  43.  
  44.             Button8.Visible = False
  45.             Button9.Visible = True
  46.             Button10.Visible = True
  47.  
  48.             Button11.Visible = True
  49.             Button12.Visible = True
  50.             Button13.Visible = False
  51.         End If

              If contador > 4 Then
  1.             PictureBox10.Visible = True
  2.         End If
  3.         If contador > 5 And contador < 10 Then
  4.             PictureBox10.Left += 50
  5.         End If
  6.         If contador > 11 And contador < 35 Then
  7.             PictureBox8.Top -= 50
  8.             PictureBox9.Top += 50
  9.         End If
  10.  
  11.         If contador = 20 Then
  12.             contador = 10
  13.         End If
  14.     End Sub
  15. End Class
Tablas de verdad.
A
B
C
D
DECISIÓN
1
1
0
0
PASA A Y B
0
0
1
1
PASA C Y D
1
1
1
1
CHOQUE
0
0
0
0
NADIE


Video de practica: 



Comentarios

Entradas populares de este blog