Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
24.04.2009, 20:31
Harry_H



Mahlzeit zusammen,
ich habe in Excel ein Kombinationsproblem an dem ich schon ne ganze Weile sitze und einfach nicht weiter komme....

Mein Ziel ist es, dass Excel mir sämtliche Kombinationen der Summen von 25 Stücken Metall unterschiedlicher Länge seperat auflisten soll. Also zum Beispiel:

Länge Stück1 + Länge Stück2
Länge Stück1 + Länge Stück3
Länge Stück1 + Länge Stück4
usw.
usw.

Und dies ganze sollte nach Möglichkeit hintereinander weg in eine Spalte, und jeweils eine Summe in der entsprechenden Zeile stehen.
Mein erster Versuch bestand einfach darin von Hand die Summen zu biden, aber das wird dann wohl noch Jahre dauern. Mein Zweiter Versuch ging über Solve, da scheitere ich aber an der Auflistung der Ergebnisse bzw. an der Zielfunktion. Als letztes würden mir noch Makros einfallen, aber davon habe ich nicht so die Ahnung. Hoffe ihr könnt mir weiterhelfen......

--

zum Seitenanfang zum Seitenende Profil || Suche
001
24.04.2009, 23:20
Megge



Falls das Muster aussieht aus Stück x + Stück y dann würd ich das in Matrixform aufschreiben
Quellcode:Stück1    2
Stück2    4
Stück3    6
Stück4    8
    Stück1    Stück2    Stück3    Stück4
Stück1    4    6    8    10    
Stück2    6    8    10    12
Stück3    8    10    12    14
Stück4    10    12    14    16
Falls die Kombinationen aus mehr als nur 2 Stück bestehen würd ich mir was anderes Überlegen..
was willst denn damit machen?

--

zum Seitenanfang zum Seitenende Profil || Suche
002
25.04.2009, 09:30
Harry_H



Danke Megge für deine Hilfe, die Matrix bringt mich schon mal nen Stück weiter. Jetzt hab ich aber gleich das nächste Problem..., ich versuch nochmal das Problem als ganzes zu beschreiben....

Ziel ist die Optimierung eines Schnittproesses bei dem der zur Verfügung stehende Platz voll ausgereizt wird...

Als Ausgangsmaterial hat mann die 25 Stück Metall unterschiedlicher Länge. Die Durchschnittslänge beträgt ca. 110cm. Die Maximale Beladelänge der Säge beträgt 200cm. Also ist ein einfaches addieren der Längen nicht möglich, da die Beladelänge überschritten wird. Daher müssen n-Metallstücken zerschnitten werden um k-Teillängen zu bekommen. Vorgabe ist, dass ein Metallstück nur einmal geteilt werden darf. Damit mann so auf die maximale Beladelänge kommt. Natürlich darf es auch keine Doppelvewendung der einzelnen Stücke/Teilstücke geben.

Hoffe mann versteht was ich meine ;)

--

zum Seitenanfang zum Seitenende Profil || Suche
003
25.04.2009, 12:32
Dopefish



Ich bin mir ja nicht sicher, aber ich glaube, dass Excel für so eine komplexe Aufgabe einfach nicht ausreicht. Wenn du die Lösungen unbedingt in Excel brauchst würde ich dir raten die Berechnungen per VBA durchzuführen.

Dort würde ich eine Index-Variable mit den Längen der Ausgangsstücke füllen und von dieser (in einer Schleife) ein geeignetes Stück 'abschneiden' und in einer neuen Index-Variable speichern.

Wenn ich das Problem richtig verstanden habe.

--

Resetting politics:
http://www.onlinepartei.eu

zum Seitenanfang zum Seitenende Profil || Suche
004
25.04.2009, 14:01
Agamemnon-Hellmapper



Seh ich das richtig? Du hast da so ne Art Kofferpack-Problem, welches leider NP-hart ist?
Mir fallen spontan 3 verschiedene Möglichkeiten ein, da ranzugehen, aber bei keiner hätte ich eine Vorstellung, wie man Excel dazu bringt, das auszurechnen.

Bei 25 Stücken wärs mMn noch vertretbar, dir von Hand aus Megge's Matrix die Werte rauszusuchen die möglichst nah an, aber kleiner als 200cm sind und damit ein wenig zu probieren.

Wenn dus aber unbedingt analytisch lösen willst/musst stellt sich als nächstes die Frage, ob eine "gute" Lösung reicht, oder ob es die optimale Lösung sein muss.

Wenn die Stücke außerdem so beschaffen sind, dass grundsätzlich nur höchstens 2 auf die Säge passen, dann wird das Problem auch wieder einfacher.

--

Es gibt 2 Möglichkeiten, eine Kristallkugel zu benutzen:
a) um damit Spekulationen über ein Problem eines Users zu machen und
b) um sie einem besonders unkooperativen User über den Schädel zu ziehen.
- bloggt jetzt auch selbst auf Sclavia.de

zum Seitenanfang zum Seitenende Profil || Suche
005
25.04.2009, 14:21
Harry_H



Ja es würde prinzipiell eine "gute" Lösung reichen, es muss analytisch gesehen nicht zu 100% perfekt sein. Und ja es können maximal nur 2 Stücken(nicht geschnitten) oder 1 Stück+Teilstück auf den Sagekopf gelegt werden. Hinzukommend muss auch gesagt werden das es natürlich nett wär wenn einem Excel im Ergbnis die zusammengestellte Länge sowie diedazugehörigen Stücke/Teilstücke mitauflistet. Weiterhin sollte vermieden werden das Stücke kleiner 4cm überbleiben.....

--

zum Seitenanfang zum Seitenende Profil || Suche
006
25.04.2009, 16:24
Andy



Wenn du eine Matrix machst, wie schon von Megge vorgeschlagen, kannst du mit dem =Wenn Befehl alle Ergebnisse die Größer 200cm oder kleiner 4cm sind ausblenden lassen.
Soll der Verschnitt, der durch die breite des Sägeblattes entsteht, auch berücksichtigt werden?

--

[ThW-Code] [es gibt eine editierfunktion!(dp)][Eisregen]
zensieren kann uebrigens nur ein staat, wir haben da noch probleme mit der anerkennung "dp"
Fr?her war alles nur gut heute ist alles besser doch manchmal w?re es besser wenn wieder alles nur gut w?re.

zum Seitenanfang zum Seitenende Profil || Suche
007
25.04.2009, 21:02
Harry_H



Ok, der Verschnitt beim sägen der Teilstücke ist vernachlässigbar und braucht nicht mit einbezogen werden.

Aber der Wenn-Befehl bringt mich auch nicht wirklich weiter. Da ja wie bereits gesagt, die Metallstücke durchschnittlich 110cm lang sind. Und die Kombinationen daher fast alle größer werden als die erlaubten 200cm. Womit ich dann so gut wie keine Ergebnisse hätte. Deswegen sollen ja n-Matallstücke geteilt werden(in 2 Teilstücke), um diese Teilstücke optimal auf die restlichen Metallstücke zu verteilen, so der Platz voll ausgenutzt wird.

--

zum Seitenanfang zum Seitenende Profil || Suche
008
26.04.2009, 00:43
Agamemnon-Hellmapper



Achso!

Naja, dann nimm erstmal alle Kombinationen, die kleiner als 200cm sind.
Bei denen, die übrigbleiben nimmst du die beiden längsten und schneidest von der zweitlängsten soviel ab, bis es auf 200cm passt. Den Rest legst du mit einer anderen Stange zusammen, sodass die Gesamtlänge möglichst nah an 200cm liegt und wiederholst das Verfahren mit dem restlichen Stapel.

--

Es gibt 2 Möglichkeiten, eine Kristallkugel zu benutzen:
a) um damit Spekulationen über ein Problem eines Users zu machen und
b) um sie einem besonders unkooperativen User über den Schädel zu ziehen.
- bloggt jetzt auch selbst auf Sclavia.de

zum Seitenanfang zum Seitenende Profil || Suche
009
26.04.2009, 16:25
Harry_H



Hallo Hellmapper,
deine Variante klingt nicht schlecht und ich werd sie heut noch ausprobieren, auch wenn sie mathematisch gesehen nicht 100%ig korrekt ist glaube ich.

Ich hab derzeit folge Heranngehensweise, und eigentlich klemmt es nur noch an einen Punkt. Ich versuchs mal zu erklären:

1. Von den 25 Metallstücken wird jeweils ein X-Wert abgeschnitten. Womit mann insgesamt 50 Matallstücken erhält.

2. Diese 50 Metallstücken werden jetzt wie megge es beschrieben hat in einer Matrix addiert, so das man alle Varianten vorliegen hat.

3. Auf der nun geschaffenen Matrix wird KGrößte angewand, damit mann eine Sortierung aller Größen in einer Spalte hat.

4. Als nächstes wird mit Wenn() geprüft ob Werte ggf. größer als 200cm sind

5. Mit SVerweis Und QVerweis kann mann zu den Längen die Teilstücke bekommen

6. Zuletzt wird Solver (auf die Größe des Schnittes) angewand mit diversen Nebenbedingungen(Teilstücke und Stücke größer 4 cm, Nichtnegativitätsbestimmung, Anzahl der erlaubten Schnitte usw. usw.), womit mann ein fast richtiges ergebniss erhält.

Das einzigste Problem ist, das es noch die Doppelverwendungen (zum Bsp.: Stück 1+Stück 20 und Stück 1+Stück 5)gibt, und ich hab keine Ahnung wie ich diese Beseitigen soll..., vieleicht hat da noch jemand ne idee. Thx im vorraus

--

zum Seitenanfang zum Seitenende Profil || Suche
010
28.04.2009, 12:29
default



np vollständig, viel spass mit excel

--

Du musst Deine Bandbreite verbreitern, damit du breiter wirst von der Bandbreite her und ein breiteres Publikum ansprechen kannst.

zum Seitenanfang zum Seitenende Profil || Suche
011
30.04.2009, 17:57
Tuboatse-Harald



Man kann einfach mit Excel alle 2^n Instanzen des NP-Vollstaendigen Problems enumerieren (an dem kleinen Punkt unten rechts am Rahmen ziehen, wenn mehrere Beispiel-Zellen markiert sind) und dann mit VBA die richtige auswaehlen, ist alles kein Problem. :)

--

Twisted and Brainfire.
Das Fleisch ist willig und der Club ist eine Fleischerei!

zum Seitenanfang zum Seitenende Profil || Suche