Microsoft 365 VBA

Pablo85

XLDnaute Nouveau
Écrivez (et implémentez) un code VBA qui fournit la solution du plus proche voisin pour le TSP. Vous devez utiliser des Fonctions et / ou des Subs dans votre code (les modules de cours ne seront pas acceptés). Utilisez le fichier Excel Exercise1 pour échantillonner les nœuds (clients) lors de l'implémentation de votre code
 

Pièces jointes

  • Exercise1.xlsm
    20.1 KB · Affichages: 10
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Bonsour®
Hi everyone,
Please someone can help me?? this is the topic:
Write (and implement) a VBA code that provides the nearest-neighbor solution for the TSP.
You must use Functions and/or Subs in your code (class modules will not be accepted).
Use the excel file Exercise1 for sampling nodes (customers) when implementing your code.
:mad: Here is a french talking forum ...

Hola a todos, ¿Alguien me puede ayudar por favor? este es el tema: Escriba (e implemente) un código VBA que proporcione la solución de vecino más cercano para el TSP. Debe utilizar Funciones y / o Subs en su código (no se aceptarán módulos de clase). Utilice el archivo de Excel Ejercicio1 para muestrear nodos (clientes) al implementar su código.

You better use Google or other translation...
 

JBARBE

XLDnaute Barbatruc
Hi everyone,
Please someone can help me?? this is the topic:
Write (and implement) a VBA code that provides the nearest-neighbor solution for the TSP.
You must use Functions and/or Subs in your code (class modules will not be accepted).
Use the excel file Exercise1 for sampling nodes (customers) when implementing your code.
Bonjour à tous,
Traduction à peut prés en Français :( j'ai utilisé Google traduction pour l'Anglais et pour L'Espagnole de Modeste geedee que je salut )

Salut à tous, S'il vous plaît, quelqu'un peut m'aider ?? c'est le sujet: Écrivez (et implémentez) un code VBA qui fournit la solution du plus proche voisin pour le TSP. Vous devez utiliser des Fonctions et / ou des Subs dans votre code (les modules de cours ne seront pas acceptés). Utilisez le fichier Excel Exercise1 pour échantillonner les nœuds (clients) lors de l'implémentation de votre code

Vous feriez mieux d'utiliser Google ou une autre traduction ... ( Moi et Modeste geedee)
.
Bonne journée !
 
Dernière édition:

Modeste geedee

XLDnaute Barbatruc
Hi Pablo85,
VB:
Private Sub CommandButton1_Click()
Dim l As Integer, tablo, i As Integer, x As Double, y As Double, dmin As Double, j As Integer, d As Double

Application.ScreenUpdating = False
Cells.ClearContents 'RAZ

l = Int((100 - 50 + 1) * Rnd() + 50)
[A1:E1] = Array("N", "X", "Y", "Nearest N", "Nearest D")

tablo = [A2].Resize(l, 5) 'matrix, faster

For i = 1 To l
    tablo(i, 1) = i
    tablo(i, 2) = Rnd() * 100
    tablo(i, 3) = Rnd() * 100
Next i

For i = 1 To l
    x = tablo(i, 2): y = tablo(i, 3)
    dmin = 150
    For j = 1 To l
        If j <> i Then
            d = Sqr((tablo(j, 2) - x) ^ 2 + (tablo(j, 3) - y) ^ 2)
            If d < dmin Then dmin = d: tablo(i, 4) = tablo(j, 1): tablo(i, 5) = d
        End If
Next j, i

[A2].Resize(l, 5) = tablo 'restitution

End Sub
Heu...
 

job75

XLDnaute Barbatruc
Bonjour Pablo85, Modestegeedee, Edit : JBARBE,

Après réflexion ma solution convenait, je la remets ici :
VB:
Private Sub CommandButton1_Click()
Dim L As Integer, tablo, i As Integer, x As Double, y As Double, dmin As Double, j As Integer, d As Double

Application.ScreenUpdating = False
Cells.ClearContents 'RAZ

L = Int((100 - 50 + 1) * Rnd() + 50)
[A1:E1] = Array("N", "X", "Y", "Nearest N", "Nearest D")

tablo = [A2].Resize(L, 5) 'matrix, faster

For i = 1 To L
    tablo(i, 1) = i
    tablo(i, 2) = Rnd() * 100
    tablo(i, 3) = Rnd() * 100
Next i

For i = 1 To L
    x = tablo(i, 2): y = tablo(i, 3)
    dmin = 150#
    For j = 1 To L
        If j <> i Then
            d = Sqr((tablo(j, 2) - x) ^ 2 + (tablo(j, 3) - y) ^ 2)
            If d < dmin Then dmin = d: tablo(i, 4) = tablo(j, 1): tablo(i, 5) = d
        End If
Next j, i

[A2].Resize(L, 5) = tablo 'restitution

End Sub
J'ai bien compris que si le plus proche de i est j cela ne veut pas dire que le plus proche de j est i.

Ce n'est pas une relation biunivoque.

A+
 

Pièces jointes

  • Exercise1(1).xlsm
    24.7 KB · Affichages: 3
Dernière édition:

Discussions similaires

  • Question
Microsoft 365 vba
Réponses
20
Affichages
2 K
  • Question
Microsoft 365 VBA
Réponses
1
Affichages
424
Réponses
3
Affichages
660
Réponses
2
Affichages
694

Statistiques des forums

Discussions
314 450
Messages
2 109 726
Membres
110 552
dernier inscrit
jasson