hier ein Vorschlag, hm... der eigentlich Brute-force ist, aber das klingt nicht so gut, also anders formuliert.
Es gibt 8 Fakultät Möglichkeiten die Reihenfolge der 8 Tische auszuwählen. Der beigefügte Code errechnet zuerst alle Möglichkeiten (42.320) und trifft dann für die Teilnehmen, ob 40, 50 oder auch mehr ist egal, eine Zufallsauswahl.
Es ist möglich, aber im Code nicht implementiert, zu prüfen, ob alle genannten Bedingungen erfüllt sind.
Bedienung: einmal mit strg-k die Kombinationen errechnet (ca. 2-8 Sekunden, je nach Rechner), dann mit strg-p die Laufwege der Teilnehmer bestimmen.
27.05.2016, 22:59 (Dieser Beitrag wurde zuletzt bearbeitet: 28.05.2016, 06:32 von WillWissen.
Bearbeitungsgrund: Kopie in Tags gesetzt
)
Hallo Fennek,
ich habe mir die Beispieldatei angesehen und suche nach dem Mauseloch wo ich mich verstecken kann. Das ist eine Makro Sprache die ist mir mehr als 100x zu hoch, da verstehe ich buchstaeblich garnichts.
Sorry, ich weiss nicht ob der Frager das Ergebniss begreift. Da happerts bei mir völlig an der Logik !! Ich sehe zwar Person P1 mit: FBGCHDEA und P2 mit: ACFHBGED aber was bedeutet es konkret????
Ich erkenne keine Tische, sehe nicht welche Person an welchem Tisch sitzt, und was ist mit den 4 Runden??? Ich verweise höflich auf die Aufgabenstellung in der ersten Anfrage. Die war die Basis meiner Überlegungen. Ich weiss nicht wie man ein Zitat schreibt, deshalb kopiere ich mai die Anfrage:
Zitat:Wir haben die Teilnehmer TN1 bis TN40
Wir haben die Tische A bis E Es gibt 4 Runden
In der 1. Runde - verteilen sich die 40 Teilnehmer gleichmäßig auf die Tische A, B, C, D, E - es stehen also 8 Teilnehmer an Tisch A
In der 2. Runde sollen die Teilnehmer von Tisch A gleichmäßig auf die Tische B, C, D, E aufgeteilt werden. Es kommen also maximal 2 Personen in der nächsten Runde in die gleiche Gruppe. Das gleiche passiert mit den Teilnehmern die zuvor an den anderen Tischen waren. Es darf kein Teilnehmer den gleichen Tisch zwei Mal besuchen.
Bei deiner Lösung sehe ich nur 8 Buchstaben, und nur in einer Spalte. Ich erkenne daraus bei aller Liebe zu deiner echt bewunderswerten Arbeit keine erkennbare Zuordnung wie die Personen verteilt werden?? Vielleicht erklaerst du uns das mal. An dein Programm gehe ich mit meinen Excel 97 Wissen nicht dran! Das ist für mich höhere Mathematik. Ich besitze nur Volksschule Wissen, kann schon bis drei zaehlen. Aber als gelernter Elektroniker denke ich in logischen Zuordnungen. Die ist mir hier nicht ersichtlich.
Die Argumente sind richtig, die Aufgabenstellung mit den 4 Runden habe ich einfach ignoriert. Aber wenn A-H die Tische markieren, dann können die ersten vier Buchstaben als "Laufweg" für die jeweilige Person interpreteiert werden. Beispiel: Person 1: AGDB bedeutet, dass Person 1 zuerst zum Tisch A, dann G usw geht.
Es ist möglich, diese Laufwege zu prüfen und gegebenfalls zu modifizieren, oder einfach eine neue Zufallsauswahl zu rechnen. Das Ansatz ist völlig anders, aber vielleicht führt er auch zum Ziel.
(27.05.2016, 23:37)Fennek schrieb: Das Ansatz ist völlig anders, aber vielleicht führt er auch zum Ziel.
Das ist eine super Vorgehenweise! Aber ich muß zugeben, ich verstehe das große Makro (iFaku) auch noch nicht. Kombinatorik ist bei mir schon bei weitem zu lange her und die Umsetzung als Makro habe ich noch nie gesehen.
Kannst Du Dir bitte die Zeit nehmen und das Makro Schritt für Schritt erläutern, damit ich verstehe, was welche Zeile macht? Dann kann ich es vielleicht auch für andere Aufgaben benutzen und anpassen. Immerhin kann ich es so ändern, daß die Anzahl der Tische änderbar ist.
Sehr schön kann ist auch zu sehen, daß mein Rechner ein ganzes Stück langsamer ist, da die Kombinatorik bei mir 10,6 - 10,8 Sekunden braucht. :) Immerhin habe ich es hinbekommen, daß nur 5 Tische benutzt werden.
ich habe es mir noch mit ein bißchen Erläuterung versehen und die Tische aufgesplittet:
Personen
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
1
Kombinationen starten mit strg-k (warten, bis msgbox erscheint)
2
Personen zuordnen mit strg-p
3
Anzahl Teilnehmer
40
Buchstaben sind die Reihenfolge der Tische, an denen die Personen stehen.
4
5
Personen
Aufgabe:
Runde 1
Runde 2
Runde 3
Runde 4
Runde 5
Runde 6
Runde 7
Runde 8
6
TN 1
CBEAD
Wir haben die Teilnehmer TN 1 bis TN 40
C
B
E
A
D
7
TN 2
EDACB
E
D
A
C
B
8
TN 3
CBEDA
Wir haben die Tische A bis E
C
B
E
D
A
9
TN 4
CDEAB
Es gibt 4 Runden
C
D
E
A
B
10
TN 5
DACEB
D
A
C
E
B
11
TN 6
EBCAD
In der 1. Runde
E
B
C
A
D
12
TN 7
BDACE
'- verteilen sich die 40 Teilnehmer gleichmäßig auf die Tische A, B, C, D, E
B
D
A
C
E
13
TN 8
BDACE
'- es stehen also 8 Teilnehmer an Tisch A
B
D
A
C
E
14
TN 9
ABDEC
A
B
D
E
C
15
TN 10
ABDCE
In der 2. Runde
A
B
D
C
E
16
TN 11
BEDCA
sollen die Teilnehmer von Tisch A gleichmäßig auf die Tische B, C, D, E aufgeteilt werden.
B
E
D
C
A
17
TN 12
CABDE
Es kommen also maximal 2 Personen in der nächsten Runde in die gleiche Gruppe.
C
A
B
D
E
18
TN 13
DBAEC
Das gleiche passiert mit den Teilnehmern die zuvor an den anderen Tischen waren.
D
B
A
E
C
19
TN 14
ABDCE
Es darf kein Teilnehmer den gleichen Tisch zwei Mal besuchen.
A
B
D
C
E
20
TN 15
CDEAB
C
D
E
A
B
Schriftart wird in dieser Tabelle nicht dargestellt
verwendete Formeln
Zelle
Formel
Bereich
N/A
K6:K20
=LINKS(B6;1)
L6:R20
=TEIL($B6;SPALTE(B$1);1)
Schriftformate
Zelle
Rot
Grün
Blau
Color
Stil
Unterstreichung
Effekte
Durchgestrichen
Schriftart
A3, A5, D5, K5:R5
Fett
D6, D8: D9, D11: D13, D15: D19
Kursiv
Zellen mit Schriftformatierung automatisch werden nicht dargestellt
Der Code ist mein Versuch, die www.herber.de/excelformeln und bitte suchen ... Nr 325 in vba zu übersetzen. Sicher sehr holprig programmiert, aber es funktioniert. Ich sah das eher als Programmierübung an.
In einem anderen Forum bekam ich danach einige Tipps über andere Ansätze, aber die muss ich mir (am nächsten veregneten Sonntag) noch genauer ansehen.
(28.05.2016, 12:06)Fennek schrieb: Sicher sehr holprig programmiert
mit meiner bisherigen wenigen Erfahrung mit VBA (Makrorekorder benutzen, Makros bereinigen, verallgemeinern oder versuchen, fertige Makros nachzuvollziehen) sieht mein Code wohl immer deutlich holpriger aus. :100:
PS: Kommst Du eigentlich zum Exceltreffen? Antwort A: Schön! Antwort B: Schade! Warum nicht?
wenn ich solche Text lese wie: Makro (iFaku) und Kombinatorik habe ich das Gefühl ich lebe auf einem anderen Planeten. Das ist mir derart zu hoch, das ich es nicht einmal verstehen will (geschweige denn kann!) Dafür bin ich einfach zu alt.
Ich habe mir die Zerlegung des Ergebnisses in der Tabelle angesehen, jetzt erkennt man wenigstens etwas. Ich weiss aber nicht ob ihr die -Shift Funktion- mir bekannt als Serielles Schieberegister (CD4015?) erkannt habt. Die Teilnehmer der 1. Runde sollen ja von Tisch A jeweils zu zweit auf die Tische B-E verteilt werden. = Shiften Das Shiften konnte ich in der Kombitonk Lösung nicht sehen. Gehört aber nun mal zur Aufgabenstellung.
Das geht noch bis zu 40 Teilnehmer, versagt aber bei 45-50 Personen! Ich erkannte schnell in meiner Makro Shift Funktion das die letzten Teilnehmer von Tisch A wieder an Tisch A kamen! Ich verschob Person 9 an Tisch C, Person 10 an Tisch D. Woran mein Makro dann aber scheiterte war die Aufgabe, keine doppelten Teilnehmer, die vorher einmal zusammen sassen. Daran bin ich gescheitert. Das hat mich sehr gewurmt.
Es gab diesen Fall aber schon einmal über 10 Runden mit über 80 Personen. Aber dabei laeuft sich der Zufallgenerator tot. Ich habe keine Möglichkeit zu begreifen in wieweit das Kombitonk Makro sowohl Shiften kann, wie auch doppelte TN ausfiltert?? Solche Aufgaben wird es in aehnlicher Form immer wieder geben. Eine echte Lösung würde mich interessieren. Bei (Faku) und Kombitonk fehlt mir aber das fachliche Wissen das Makro nachvollziehen zu können. Daraus mache ich aıuch keinen Hahl.
Das sind so Knobbel Threads an denen man sich echt die Zaehne ausbeissen kann. Klingen harmlos, ist es aber nicht!
(28.05.2016, 14:04)Gast 123 schrieb: Ich habe keine Möglichkeit zu begreifen in wieweit das Kombitonk Makro sowohl Shiften kann, wie auch doppelte TN ausfiltert??
Das Wissen fehlt mir auch, bzw. ist 30 Jahre her.
Das hat Fennek ja geschrieben, daß das "auf Doppelte prüfen" und "shiften" noch nicht eingebaut ist.