Thema Datum  Von Nutzer Rating
Antwort
Rot Permutationen einer Distanzmatrix in Excel erstellen
16.02.2013 18:28:08 Dennis
NotSolved
16.02.2013 23:55:18 Trägheit
NotSolved
17.02.2013 00:22:13 Trägheit
NotSolved
17.02.2013 11:15:15 Gast67324
NotSolved
17.02.2013 12:06:51 Gast89198
NotSolved
17.02.2013 12:11:09 Gast80083
NotSolved
17.02.2013 12:14:09 Gast53510
NotSolved
17.02.2013 21:13:06 Dennis
NotSolved
18.02.2013 11:51:00 Trägheit
NotSolved
18.02.2013 14:13:54 Trägheit
NotSolved
18.02.2013 19:54:56 Dennis
NotSolved
18.02.2013 21:30:39 Gast24245
NotSolved
18.02.2013 21:52:05 Trägheit
NotSolved
07.03.2013 17:40:13 Klaus
NotSolved

Ansicht des Beitrags:
Von:
Dennis
Datum:
16.02.2013 18:28:08
Views:
2684
Rating: Antwort:
  Ja
Thema:
Permutationen einer Distanzmatrix in Excel erstellen

Guten tag zusammen.

Ich habe folgende Aufgabe zu lösen:

Auf einer Platine sollen Bohrungen plaziert werden. Die Koordinaten der Bohrungen sind gegeben. Es soll nun der Verfahrweg des Bohrers berechnet werden, damit dieser alle Bohrungen bohren kann, wobei der den kürzesten Weg gehen soll.

Für die Punkte habe ich ich bereits eine Distanzmatrix aufgestellt. Diese zeigt die Distanzen zwischen den einzelnen Bohrungen.  Das klappt soweit gut.

Die sieht so aus: (auf der x und y-Achse sind jeweils die Punkte aufgetragen.                                                                                                                                        Als Bsp: 1.Feld: Die Distanz von Punkt 1 zu Punkt 1 ist 0. Das Feld darunter oder auch rechts daneben: Die Distanz von Punkt 1 zu Punkt 2 oder von Punkt 2 zu Punkt1 ist 24)

                                                

0 24 6 20 4 20 10 20 18 18
24 0 30 5 28 5 34 4 6 7
6 30 0 26 2 26 4 26 24 24
20 5 26 0 24 10 30 6 6 2
4 28 2 24 0 24 6 24 22 22
20 5 26 10 24 0 30 4 4 12
10 34 4 30 6 30 0 30 28 28
20 4 26 6 24 4 30 0 2 8
18 6 24 6 22 4 28 2 0 8
18 7 24 2 22 12 28 8 8 0

 

Jetzt soll ich zunächst mit Hilfe der BruteForceMethode den kürzesten Verfahrweg des Bohrers berechnen. Und da beginnen die Probleme. Ich habe die Tabelle für die Distanzen schon in ein Array eingelesen aber ich finde keine Möglichkeit, dass er mir alle Kombinationen für die Distanzen berechnet. Dabei interessiert mich letztlich auch nur die kürzeste. Also nur die soll am Ende ausgegeben werden.

Die Reihenfolge der Punkte ist unwichtig und kann außer Acht gelassen werden. Genauso sind Distanzen mit 0 unwichtig. Diese sind ja die Hauptdiagonale. Also Punkt1 zu Punkt, Punkt2 zu Punkt2 usw.

Überlegungen habe ich schon gemacht, wenn man es als Beispiel jetzt auf 3 Punkte beschränkt:

Weg von Punkt1 zu Punkt2 zu Punkt3: 24 +30

Weg von Punkt2 zu Punkt1 zu Punkt3: 24 +6                       -----> kürzesterWeg

Weg von Punkt1 zu Punkt3 zu Punkt2: 30 +6

Ich füge euch mal meinen bisherigen Code dazu. Ich glaube aber daran ist nicht viel richtig.

Function PermutationArray(vntdata, k, m)


Worksheets("Distanzmatrix").Range("A1").Activate
Do Until ActiveCell.Value = ""  'Anzahl der Punkte bestimmen
    Z = Z + 1
    Cells(Z, 1).Activate
Loop

'Tabelle einlesen mit Array
Dim perArray As Variant
Dim perRng  As Range
Dim perWks  As Worksheet


If k = (Z - 2) Then
zeile = Cells(65536, 1).End(xlUp).Row

If Cells(1, 1) <> "" Then zeile = zeile + 1
    For t = 1 To (Z - 2)
    For i = 1 To (Z - 2)
    If vntdata(i, t) <> 0 Then
        Cells(zeile, i) = vntdata(i, t)
    End If
    Next
    Next

Else
    For t = m To (Z - 1)
    For i = k To (Z - 1)
    x = vntdata(i, t)
    vntdata(i, t) = vntdata(k, m)
    vntdata(k, m) = x
    Call PermutationArray(vntdata, k + 1, m + 1)
    Next
    Next
End If
End Function


Als kleine Erklärung was ich mir bei dem Gewirr gedacht habe:

 vntdata ist das Array, welches die Daten der Distanzmatrix enthält

 Mit Hilfe der beiden ineinanderverschachtelten Schleifen dachte ich mir mich durch das Array zu navigieren. 
 Also durchlaufen der x und y- Koordinaten. Das was da ausgegeben wird ist aber einerseits falsch und andererseits
 gibt das mir alle verschiedenen Reihenfolgen der Punkte aus. Also z.B Punkt 1-2-3-4-5-6-7-8-9-10 oder 
 Punkt 1-2-3-4-5-6-7-8-10-9 usw. Das bringt mir aber nichts. Ich habe mich also völlig verrannt. 

 Ich habe mir hier ausgeben lassen was der Algorithmus da macht. Das war als Hilfe für mich. Allgemein ist das aber unwichtig.

 

Letztlich könnt ihr diesen Code also in die Tonne kloppen.

Ich suche jetzt schon seit mehreren Tagen nach ähnlichen Problemen mit denen ich was anfangen kann. Allerdings war ich erfolgslos. Ich hoffe jetzt auf euch, dass ihr mir weiterhelfen könnt. Am wichtigsten wäre mir herauszufinden, was ich eingeben muss um die verschienenen Kombinationen der Punkte zu durchlaufen und mir die kürzeste Distanz und so die Kombination der Punkte auszugeben.

Versucht es nach Möglichkeit etwas einfach zu halten, da ich nicht zu geübt bin mit programmieren.

Bitte helft mir.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:



  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Permutationen einer Distanzmatrix in Excel erstellen
16.02.2013 18:28:08 Dennis
NotSolved
16.02.2013 23:55:18 Trägheit
NotSolved
17.02.2013 00:22:13 Trägheit
NotSolved
17.02.2013 11:15:15 Gast67324
NotSolved
17.02.2013 12:06:51 Gast89198
NotSolved
17.02.2013 12:11:09 Gast80083
NotSolved
17.02.2013 12:14:09 Gast53510
NotSolved
17.02.2013 21:13:06 Dennis
NotSolved
18.02.2013 11:51:00 Trägheit
NotSolved
18.02.2013 14:13:54 Trägheit
NotSolved
18.02.2013 19:54:56 Dennis
NotSolved
18.02.2013 21:30:39 Gast24245
NotSolved
18.02.2013 21:52:05 Trägheit
NotSolved
07.03.2013 17:40:13 Klaus
NotSolved