9. Anexos.
9. Anexos. 9. Anexos.
If SolucionMST(i).Inactivo = False Then ReDim Preserve Solucion(Tamano) Tamano = Tamano + 1 Solucion(j) = SolucionMST(i) j = j + 1 End If Next i End Sub 9.2.2.3. El algoritmo de Dijkstra. Módulo: Dijkstra.bas Option Explicit Option Base 1 Private Type Reg_L Valor As Long Visto As Boolean End Type Dim Mat_C() As Long Dim Mat_L() As Reg_L Dim NodosAdy() As Lista_Ady Anexos. Public Sub Hallar_CamMin_Dijkstra(ByRef Vector() As Reg_Arcos, NumeroNodos As Long, NodosOrigen() As Long, Solucion() As Reg_Arcos, Origen As Integer) Dim i As Integer, j As Integer Dim D() As Single Calcular_Matriz_Pesos Vector, NumeroNodos, D() Calcular_Adyacentes Vector, NodosAdy, False Dijkstra NodosOrigen(Origen), NumeroNodos, D() Interpreta_MatrizAdy Vector, Solucion, D(), NodosOrigen(Origen) If Origen < UBound(NodosOrigen) Then 34
Else End If Origen = Origen + 1 Origen = 1 End Sub Sub Calcular_Matriz_Pesos(ByRef Vector() As Reg_Arcos, ByVal NumeroNodos As Long, D() As Single) Dim i As Long, j As Long ReDim D(NumeroNodos, NumeroNodos, 3) For i = 1 To UBound(Vector()) If Vector(i).Inactivo = False Then D(Vector(i).Origen, Vector(i).Destino, 1) = Vector(i).Longitud D(Vector(i).Destino, Vector(i).Origen, 1) = Vector(i).Longitud D(Vector(i).Origen, Vector(i).Destino, 3) = i D(Vector(i).Destino, Vector(i).Origen, 3) = i End If Next For i = 1 To NumeroNodos - 1 For j = i + 1 To NumeroNodos If D(i, j, 3) = 0 Then D(i, j, 1) = Exp(16) D(j, i, 1) = Exp(16) End If Next Next End Sub Anexos. Public Sub Calcular_Adyacentes(ByRef Vector() As Reg_Arcos, ByRef NodosAdy() As Lista_Ady, ByVal CalcularPosicion As Boolean) Dim j As Long ReDim NodosAdy(NumeroNodos) For j = 1 To UBound(Vector) NodosAdy(Vector(j).Origen).numero = NodosAdy(Vector(j).Origen).numero + 1 ReDim Preserve NodosAdy(Vector(j).Origen).Mady(NodosAdy(Vector(j).Origen).numero) NodosAdy(Vector(j).Origen).Mady(NodosAdy(Vector(j).Origen).numero).Nodo = Vector(j).Destino 35
- Page 1 and 2: 9. Anexos. 9.1. Anexo A: La optimiz
- Page 3 and 4: steinb6.txt 6 12 1 9 36 1 10 17 1 1
- Page 5 and 6: X j , N − X N , j= { 1 if j∈T
- Page 7 and 8: ∂ c1 ∂ c 1 ∂ x 1 ∂c 2 ∂ x
- Page 9 and 10: obliga a usar algoritmos del tipo m
- Page 11 and 12: %Vector -> Array (Vx3) con arcos no
- Page 13 and 14: Código. Preparación de las restri
- Page 15 and 16: end DCeq(i,i)=Xij(i+size(Xij,1)/2);
- Page 17 and 18: Nodo Inicial VectorDir Nodo Final C
- Page 19 and 20: Anexos. viceversa. Esto es así deb
- Page 21 and 22: CN XM 1 2 3 4 5 6 7 8 9 10 11 12 13
- Page 23 and 24: Constraints Number of nonlinear ine
- Page 25 and 26: Anexos. que dependerá del tipo de
- Page 27 and 28: Dim TiempoSol As Single Dim Iteraci
- Page 29 and 30: For i = 2 To UBound(Entrada()) Busc
- Page 31 and 32: Esta1 = False Esta2 = False j = 1 W
- Page 33: Eliminar = False End If Next k End
- Page 37 and 38: j = j + 1 Wend ReDim Mat_L(NumeroNo
- Page 39 and 40: Wend AnadirArco Vector, Solucion, O
- Page 41 and 42: CosteTotal = CosteTotal + Vector(So
- Page 43 and 44: indic = 1 ReDim Xij0(UBound(Solucio
- Page 45 and 46: If bFileExists(sFile) = True Then O
- Page 47 and 48: Else ReDim ListaArchivos(UBound(Aux
- Page 49 and 50: .Columns.AutoFit Next i .Columns.Au
- Page 51: Public Vector() As Reg_Arcos Public
Else<br />
End If<br />
Origen = Origen + 1<br />
Origen = 1<br />
End Sub<br />
Sub Calcular_Matriz_Pesos(ByRef Vector() As Reg_Arcos, ByVal NumeroNodos As Long, D() As Single)<br />
Dim i As Long, j As Long<br />
ReDim D(NumeroNodos, NumeroNodos, 3)<br />
For i = 1 To UBound(Vector())<br />
If Vector(i).Inactivo = False Then<br />
D(Vector(i).Origen, Vector(i).Destino, 1) = Vector(i).Longitud<br />
D(Vector(i).Destino, Vector(i).Origen, 1) = Vector(i).Longitud<br />
D(Vector(i).Origen, Vector(i).Destino, 3) = i<br />
D(Vector(i).Destino, Vector(i).Origen, 3) = i<br />
End If<br />
Next<br />
For i = 1 To NumeroNodos - 1<br />
For j = i + 1 To NumeroNodos<br />
If D(i, j, 3) = 0 Then<br />
D(i, j, 1) = Exp(16)<br />
D(j, i, 1) = Exp(16)<br />
End If<br />
Next<br />
Next<br />
End Sub<br />
<strong>Anexos</strong>.<br />
Public Sub Calcular_Adyacentes(ByRef Vector() As Reg_Arcos, ByRef NodosAdy() As Lista_Ady, ByVal<br />
CalcularPosicion As Boolean)<br />
Dim j As Long<br />
ReDim NodosAdy(NumeroNodos)<br />
For j = 1 To UBound(Vector)<br />
NodosAdy(Vector(j).Origen).numero = NodosAdy(Vector(j).Origen).numero + 1<br />
ReDim Preserve NodosAdy(Vector(j).Origen).Mady(NodosAdy(Vector(j).Origen).numero)<br />
NodosAdy(Vector(j).Origen).Mady(NodosAdy(Vector(j).Origen).numero).Nodo = Vector(j).Destino<br />
35