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.
- Cuando “B” este en verde, solamente “A” puede estar en verde al
mismo tiempo.
- Cuando “C” este en verde, solamente “D” puede estar en verde al
mismo tiempo.
- Cuando “D” este en verde, solamente “C” puede estar en verde al
mismo tiempo.
Condiciones representadas gráficamente.

Diseño de curce.
Cruce
que se usó en la interfaz de programación.
Código
de programa
- Public Class Form1
-
Dim contador As Integer
-
Private Sub
Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
-
contador = 0
-
End Sub
-
Private Sub
Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
-
Timer1.Enabled = True
-
Timer1.Interval = 1000
-
End Sub
-
-
Private Sub
Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
-
contador = contador + 1
-
PictureBox10.Visible = False
-
PictureBox6.Left += 30
-
PictureBox7.Left -= 30
-
If contador = 1 Then
-
Button2.Visible = False
-
Button3.Visible = True
-
Button4.Visible = True
-
-
Button5.Visible = True
-
Button6.Visible = True
-
Button7.Visible = False
-
-
Button8.Visible = True
-
Button9.Visible = True
-
Button10.Visible = False
-
-
Button11.Visible = False
-
Button12.Visible = True
-
Button13.Visible = True
-
End If
-
-
If contador = 5 Then
-
Button2.Visible = False
-
Button3.Visible = True
-
Button4.Visible = True
-
-
Button5.Visible = True
-
Button6.Visible = False
-
Button7.Visible = True
-
-
Button8.Visible = True
-
Button9.Visible = False
-
Button10.Visible = True
-
-
Button11.Visible = False
-
Button12.Visible = True
-
Button13.Visible = True
-
End If
-
If contador = 6 Then
-
Button2.Visible = False
-
Button3.Visible = True
-
Button4.Visible = True
-
-
Button5.Visible = True
-
Button6.Visible = True
-
Button7.Visible = True
-
-
Button8.Visible = True
-
Button9.Visible = True
-
Button10.Visible = True
-
-
Button11.Visible = False
-
Button12.Visible = True
-
Button13.Visible = True
-
End If
-
If contador = 7 Then
-
Button2.Visible = False
-
Button3.Visible = True
-
Button4.Visible = True
-
-
Button5.Visible = True
-
Button6.Visible = False
-
Button7.Visible = True
-
-
Button8.Visible = True
-
Button9.Visible = False
-
Button10.Visible = True
-
-
Button11.Visible = False
-
Button12.Visible = True
-
Button13.Visible = True
-
End If
-
If contador = 8 Then
-
Button2.Visible = False
-
Button3.Visible = True
-
Button4.Visible = True
-
-
Button5.Visible = True
-
Button6.Visible = True
-
Button7.Visible = True
-
-
Button8.Visible = True
-
Button9.Visible = True
-
Button10.Visible = True
-
-
Button11.Visible = False
-
Button12.Visible = True
-
Button13.Visible = True
- End If
-
If contador = 9 Then
-
Button2.Visible = False
-
Button3.Visible = True
-
Button4.Visible = True
-
-
Button5.Visible = True
-
Button6.Visible = False
-
Button7.Visible = True
-
-
Button8.Visible = True
-
Button9.Visible = False
-
Button10.Visible = True
-
-
Button11.Visible = False
-
Button12.Visible = True
-
Button13.Visible = True
-
End If
-
If contador = 10 Then
-
Button2.Visible = False
-
Button3.Visible = True
-
Button4.Visible = True
-
-
Button5.Visible = True
-
Button6.Visible = True
-
Button7.Visible = True
-
-
Button8.Visible = True
-
Button9.Visible = True
-
Button10.Visible = True
-
-
Button11.Visible = False
-
Button12.Visible = True
-
Button13.Visible = True
-
End If
-
If contador = 11 Then
-
Button2.Visible = True
-
Button3.Visible = True
-
Button4.Visible = False
-
-
Button5.Visible = False
-
Button6.Visible = True
-
Button7.Visible = True
-
-
Button8.Visible = False
-
Button9.Visible = True
-
Button10.Visible = True
-
-
Button11.Visible = True
-
Button12.Visible = True
-
Button13.Visible = False
-
End If
If contador > 4 Then
-
PictureBox10.Visible = True
-
End If
-
If contador > 5 And contador < 10 Then
-
PictureBox10.Left += 50
-
End If
-
If contador > 11 And contador < 35 Then
-
PictureBox8.Top -= 50
-
PictureBox9.Top += 50
-
End If
-
-
If contador = 20 Then
-
contador = 10
-
End If
-
End Sub
- 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
Publicar un comentario