EdsonEAP commited on
Commit
ab0def6
1 Parent(s): e340df7

ultimo commmit eddy

Browse files
Files changed (1) hide show
  1. pages/AG_3D.py +12 -0
pages/AG_3D.py CHANGED
@@ -48,6 +48,7 @@ def seleccion_torneo(poblacion, distancias, coordenadas):
48
  seleccionados.append(seleccionado)
49
  return seleccionados
50
 
 
51
 
52
  # Funci贸n para realizar el cruce de dos padres para producir un hijo
53
  def cruzar(padre1, padre2):
@@ -55,8 +56,19 @@ def cruzar(padre1, padre2):
55
  hijo = padre1[:punto_cruce] + [
56
  gen for gen in padre2 if gen not in padre1[:punto_cruce]
57
  ]
 
 
58
  return hijo
59
 
 
 
 
 
 
 
 
 
 
60
 
61
  # Funci贸n para aplicar mutaciones en la poblaci贸n
62
  def mutar(individuo, probabilidad_mutacion):
 
48
  seleccionados.append(seleccionado)
49
  return seleccionados
50
 
51
+ checkboxCruce = st.sidebar.checkbox("Sin cruce de caminos")
52
 
53
  # Funci贸n para realizar el cruce de dos padres para producir un hijo
54
  def cruzar(padre1, padre2):
 
56
  hijo = padre1[:punto_cruce] + [
57
  gen for gen in padre2 if gen not in padre1[:punto_cruce]
58
  ]
59
+ if checkboxCruce:
60
+ hijo = corregir_camino(hijo, distancias)
61
  return hijo
62
 
63
+ # Funci贸n para corregir el camino y evitar cruces no deseados
64
+ def corregir_camino(camino, distancias):
65
+ n = len(camino)
66
+ for i in range(n):
67
+ for j in range(i + 2, n - 1):
68
+ if distancias[camino[i]][camino[i + 1]] + distancias[camino[j]][camino[j + 1]] > distancias[camino[i]][camino[j]] + distancias[camino[i + 1]][camino[j + 1]]:
69
+ # Intercambiar las conexiones para corregir el cruce
70
+ camino[i + 1], camino[j] = camino[j], camino[i + 1]
71
+ return camino
72
 
73
  # Funci贸n para aplicar mutaciones en la poblaci贸n
74
  def mutar(individuo, probabilidad_mutacion):