In jedem Fabrikplanungsprojekt wird man irgendwann damit konfrontiert, eine optimale Anordnung der Arbeitsplätze oder Fertigungseinrichtungen zu finden. Eine gute Ausgangsbasis ist die Methode nach SCHWERDTFEGER. Sie ist aber sehr grob. Im Detail hilft sie nicht weiter. Interessanter ist das Dreiecksverfahren nach SCHMIGALLA. Das wiederum ist detaillierter, aber grafisch aufwändig zu erstellen. Mit ein wenig Coding lässt sich das aber so ändern, dass die Methode richtig Spaß macht. Aber sehen Sie selber.
In der Fabrikplanung spricht man bei der Anordnungsplanung von Objekt-Platz-Zuordnungsoptimierung. Gemeint sind damit hauptsächlich die Anordnung von Fertigungseinrichtungen in einem Fabrikhallenbereich. Aber genauso die Anordnung von Hallenbereichen in einem Fabriksystem oder der Fabriksysteme in einer Gesamtfabrik. Es wird auch in Detailbereichen, beispielsweise im Lager eingesetzt, um Lagergütern verschiedene Lagerfächer zuzuordnen.
Dreiecksverfahren nach SCHMIGALLA
Um diese Anordnung nach Kriterien zu optimieren, gibt es verschiedene Verfahren. Ein Optimierungsprinzip ist das genannte Dreiecksverfahren nach SCHMIGALLA. Es ist wie SCHWERDTFEGER ein grafisches Verfahren, basiert auf dem Ablauf einer linearen Optimierung. Die Methode gibt es seit 1970 in mehreren Verbesserungsstufen.
In der Ursprungsausführung müssen neben den Objekten auch die Plätze – die möglichen Standorte – bekannt sein. Als Minimierungskriterium wird die Transporthäufigkeit benutzt. Eine detaillierte Erklärung der Methode stellt Kurt W. Helbing in seinem Handbuch Fabrikprojektierung vor.
Das modifizierte Dreiecksverfahren nutzt die Transporthäufigkeit zwischen den Objekten und nimmt keinen Bezug mehr zu den Plätzen. Zur Betrachtung dazu kommen die Systemein- und ausgänge. Die Plätze ergeben sich durch die Anordnung auf dem Dreiecksraster.
Grundlage bildet die Von-Nach-Matrix über die Transporthäufigkeit. Das Optimierungsziel bleibt bei der Gesamtreduzierung der notwendigen Bauteilbewegungen.
SCHMIGALLA geht in Schritten vor:
- Berechnung der Von-Nach-Matrix mit der Transporthäufigkeit
- Auswahl des maximalen Transportwertes in der Matrix und Anordnung der abhängigen beiden Arbeitsplätze auf dem Dreiecksraster
- Erweiterung der Von-Nach-Matrix mit einer Summenzeile, gefüllt mit den Transporthäufigkeiten alle verbundenen Objekte mit den ausgewählten
- Auswahl des Objekts mit dem höchsten Summenwert
- Einfügen des Objekts auf das Dreiecksraster mit Auswahl der geeigneten Position auf dem Raster
- Wiederholung ab Schritt 3 bis alle Objekte geplant sind
Die Wahl des optimalen Layoutplatzes wird durch den Planer entschieden. Er kann auch noch nach dem Einfügen des nächstens Objekts optimiert werden.
Hoher manueller Aufwand
Mit der Methode lässt sich zuverlässig eine transportoptimierte Objekt-Zuordnung entwickeln. Es ist aber ein langwieriger Prozess, das jeweils nächste Objekt zu bestimmen und auf einem Dreiecksraster einzuzeichnen. Erfolgt das mit Standardsoftware wie Microsoft Word, Excel, Powerpoint oder Viso kommt dazu, dass erst Shapes eingefügt, benannt, formatiert und mit Linien verbunden werden müssen. Am besten dazu noch mit der auf das Transportvolumen angepassten Liniendicke.
Aber die Methode funktioniert auch mit einer relativ hohen Objektanzahl gut. Mit jedem zusätzlichen Objekt vergrößert sich jedoch die Von-Nach-Matrix und erhöht den manuellen Aufwand weiter.
Teilautomatisierung mit Dialog-Führung
Wie lässt sich der Aufwand reduzieren und der Prozessablauf einfacher in den Griff bekommen? Die Von-Nach-Matrix liegt als Tabelle mit Zeilen und Spalten vor. Für das Finden des nächsten zu platzierenden Objektes sind Berechnungen notwendig. Arbeitsgrundlage sind demnach zwei Dokumente: eine Berechnungstabelle ausgehend von der Von-Nach-Matrix und ein Zeichnungsdokument mit dem Dreiecksraster und den platzierten Objekten.
Das spricht für mich für den Einsatz von Microsoft Excel. In einem Dokument lassen sich die Berechnungstabellen, das Zeichnungsraster und Programmcode in VBA unterbringen.
Im SCHMIGALLA Ablauf beschäftigen sich die meisten Schritte mit dem Ermitteln des nächsten zu platzierenden Objektes. Der Algorithmus dahinter reißt aber den Planer bei jedem Objekt / Arbeitsplatz wieder aus der Konzentrationsphase, um eine optimierte Anordnung zu entwickeln. Deswegen setze ich hier mit VBA an, den Algorithmus automatisch zu berechnen und dem Planer direkt das nächste Objekt zum Platzieren anzubieten. In der Umsetzung eignet sich dafür am besten ein Visual Basic Formular. Der Dialog braucht nicht viele Elemente zu enthalten. Es muss eine Möglichkeit zum Starten des Planungsvorgangs geben und eine weitere zum Einfügen des nächsten Objektes. Mehr ist gar nicht nötig. Damit kann sich der Planer voll auf das Finden der passenden bestmöglichsten Layoutposition konzentrieren.
Von-Nach-Matrix
Die Basis für die Anwendung ist die Von-Nach-Matrix oder die abgeleitete Transporthäufigkeitsmatrix. Wie sich diese einfach erstellen lässt, habe ich im Artikel Materialflussmatrix aus ERP-Daten beschrieben. Genau diese Daten verwende ich auch hier. Das bedeutet, dass ich nicht eine Matrix verwende, sondern eine Von-Nach-Tabelle. Die Von-Nach-Tabelle ist die datentechnische Vorstufe zur Matrix, die Quelle vor der Durchführung einer Kreuztabellen-Abfrage, welche die Matrix aufbaut. Der Tabellenaufbau besteht nur aus drei Feldern:
- Von-Objekt
- Nach-Objekt
- Quantitative Transportanzahl
Für das Finden des nächsten Objektes ist es notwendig Informationen darüber zu haben. Deswegen gibt es eine zweite Tabelle, in der die Objekte abgelegt sind. Dort werden auch die Bewertungen zum nächsten Objekt gespeichert und ausgewertet.
Hier spielt auch der Wechsel von der Von-Nach-Matrix zur Von-Nach-Tabelle seine Stärken aus. Es lassen sich sehr einfach zu jedem Objekt die Eingangs- und Ausgangsverbindungen über einen SVERWEIS anzeigen.
Das Planungsraster aufbauen
Ein weiter Pluspunkt für Microsoft Excel ist, dass sich das typische Dreiecksraster sehr komfortabel mit einer einfachen Rahmenformatierung aufbauen lässt.
Dafür müssen die Spaltenbreite und Zeilenhöhe aufeinander abgestimmt werden. In meinem Raster verwende ich als Spaltenbreite 8,67 und als Zeilenhöhe 65,40.
Objekte auf dem Raster
Objekte bzw. Arbeitsplätze werden als Shapes eingefügt. Wie das mit VBA funktioniert, beschreibe ich anhand der SCHWERDTFEGER Methode im Artikel Kreisverfahren mit Excel-Unterstützung. Ich verwende hier die gleichen Routinen, um Shapes einzufügen und Shapes mit Linienelementen zu verbinden. Inspiration, wie das funktioniert, holen Sie sich am besten im Beispiel als Download ab.
Start-Objekte finden
In diesem Artikel möchte ich mich aber mit der Umsetzung der Methode in VBA beschäftigen. Im ersten Schritt müssen die beiden Start-Objekte identifiziert werden. Auch hier ist es wieder von Vorteil, die Von-Nach-Tabelle zu verwenden. Die Start-Objekte sind die Zeile in der Tabelle mit dem höchsten Wert in der Transportspalte.
Wir finden den Wert indem wir durch die Tabelle loopen und bei jedem höheren Wert den Namen des Von- und Nach-Objektes speichern.
i = 1 JBmax = 0 Von = "" Nach = "" Do i = i + 1 JB = StrToDbl(Sheets("FromTo-Matrix").Cells(i, 6)) If JB > JBmax Then JBmax = JB Von = Sheets("FromTo-Matrix").Cells(i, 1) Nach = Sheets("FromTo-Matrix").Cells(i, 2) End If Loop Until Sheets("FromTo-Matrix").Cells(i, 1) = ""
Die beiden gefundenen Arbeitsplätze werden dann auf dem Planungsraster eingefügt mit den Methoden des oben angesprochenen Artikels. In diesem Fall ist es aber hilfreich, die Left und Top Position der Shapes so zu berechnen, dass sie schon auf passenden Dreieckspunkten abgelegt werden.
Für die Berechnung kann auf die eingestellten Spaltenbreiten und Zeilenhöhen zugegriffen werden und eine Position ermittelt werden:
z. B. 6 Raster in X, 4 Raster in Y
LeftPos = ActiveSheet.Columns(1).Width * 6 – ObjectShape.Height / 2 TopPos = ActiveSheet.Rows(1).Height + ActiveSheet.Rows(2).Height + ActiveSheet.Rows(3).Height * 4 - ObjectShape.Height / 2)
Nächste Objekte ermitteln
Genau wie beim manuellen Ablauf der Methode ist der höchste Aufwand im bestimmen des nächsten Objektes.
In der Software-Umsetzung nutze ich zur Speicherung der Bewertungssummen eine Spalte in der Tabelle der Objekte (Sheet Workcenters).
Bevor das passiert, werden aber alle Felder auf 0 zurückgesetzt. Bei mir ist es die Spalte 14.
i = 1 Do i = i + 1 Sheets("Workcenters").Cells(i, 14) = 0 Loop Until Sheets("Workcenters").Cells(i, 2) = ""
In der eigentlichen Berechnung wird die Von-Nach-Tabelle durchlaufen und geprüft, ob die Transporthäufigkeit des Von- und Nach-Objektes in der Objekt-Tabelle hinzugefügt werden darf.
Das geschieht im über die boolesche Variable canAdd.
i = 1 Do i = i + 1 Von = Sheets("FromTo-Matrix").Cells(i, 1) Nach = Sheets("FromTo-Matrix").Cells(i, 2) wert = Sheets("FromTo-Matrix").Cells(i, 6) canAdd = False j = 1 Do j = j + 1 If (Sheets("Workcenters").Cells(j, 2) = Von Or Sheets("Workcenters").Cells(j, 2) = Nach) And Sheets("Workcenters").Cells(j, 12) = "X" Then canAdd = True Loop Until Sheets("Workcenters").Cells(j, 2) = "" If canAdd = True Then Call WorkcenterAddSum(Von, wert) Call WorkcenterAddSum(Nach, wert) End If Loop Until Sheets("FromTo-Matrix").Cells(i, 1) = ""
Ein hinzuaddieren zur Berechnungssumme ist nur erlaubt, wenn eines der beiden Objekte bereits auf den Dreiecksraster eingefügt wurde. Deswegen werden auch bereits eingefügte Objekte in der Spalte 12 Geplant mit einem X gekennzeichnet.
Sub WorkcenterAddSum(workcenter As String, value As Double) Dim i As Integer Dim s As String i = 1 Do i = i + 1 If Sheets("Workcenters").Cells(i, 2) = workcenter And Sheets("Workcenters").Cells(i, 12) = "" Then Sheets("Workcenters").Cells(i, 14) = CDbl(Sheets("Workcenters").Cells(i, 14)) + value End If Loop Until Sheets("Workcenters").Cells(i, 2) = "" End Sub
Damit ist die Berechnung abgeschlossen. Im letzten Schritt kann der höchste Wert in der Objekt-Tabelle gesucht werden, der noch nicht das Flag Geplant hat. Damit ist das nächste einzufügende Objekt gefunden.
Es wird in der Variablen NextWorkcenter gespeichert.
i = 1 wertmax = 0 Do i = i + 1 If Sheets("Workcenters").Cells(i, 12) <> "X" Then wert = StrToDbl(Sheets("Workcenters").Cells(i, 14)) If wert > wertmax Then wertmax = wert NextWorkcenter = Sheets("Workcenters").Cells(i, 2) End If End If Loop Until Sheets("Workcenters").Cells(i, 2) = ""
Theoretisch kann es vorkommen, dass kein Objekt auf diese Weise gefunden wird. Passieren könnte das bei unabhängigen Materialflüssen zwischen zwei Produktionslinien. In diesem Fall wird einfach der nächst-höhere Wert aus der Objekt-Tabelle ausgewählt. Es wird dann nicht auf das berechnete Feld zurückgegriffen, sondern auf die Summe des Transportaufkommens.
In meinem Fall ist das nicht mehr die Spalte 13, sondern die Spalte 14.
If NextWorkcenter = "" Then i = 1 wertmax = 0 Do i = i + 1 If Sheets("Workcenters").Cells(i, 12) <> "X" Then wert = StrToDbl(Sheets("Workcenters").Cells(i, 13)) If wert > wertmax Then wertmax = wert NextWorkcenter = Sheets("Workcenters").Cells(i, 2) End If End If Loop Until Sheets("Workcenters").Cells(i, 2) = "" End If
Anwendung an „Schneckengetriebeproduktion“
Wie sieht nun das ganze System in der Anwendung aus? Dafür möchte ich Ihnen ein Beispiel zeigen. Vorstellen möchte ich meine Dialog-geführte Methode am Beispiel einer Schneckengetriebeproduktion. Diese Produktion ist ein Fallbeispiel von Prof. Dr.-Ing. Uwe Prêt (HTW Berlin) und schon einige Jahre alt. Das Dokument erklärt aber immer noch hervorragend die Vorgehensweise einer Fabrikplanung und ist eines meiner Lieblingsbeispiele in diesem Bereich. Die Quelldaten können immer noch von der Webseite von Uwe Prêt geladen werden (http://www.uwe-pret.de/getriebe.pdf). Wenn Sie es noch nicht kennen, schauen Sie es sich unbedingt an.
Prof. Dr.-Ing. Prêt stellt hier auf über 80 Seiten alle Tätigkeiten einer Planung vor, darunter auch eine Layoutoptimierung nach SCHMIGALLA.
Das Beispiel seiner Reihenfolgebestimmung finden sie unter Abbildung 1 bereits weiter oben im Artikel.
Aus seiner Berechnung ergibt sich folgende Einfüge-Reihenfolge der Objekte auf das Dreiecksraster:
- Entgratplatz
- WA
- CU72H
- DMU50V
- WE
- ZX1
- TNC65
- ABS280
- PE150C
- RISZ
- PF150
Nachbildung der Schneckengetriebeproduktion mit dem Dialog-geführten Verfahren
Die Eingangsdaten für die Methode habe ich in die Tabellen der Objekte und der Von-Nach-Tabelle überführt. Die entsprechenden Tabellen sind bereits im oberen Teil des Artikels abgebildet.
Der Start des Dialogs erfolgt auf dem Planungsraster. Dort habe ich einen Button eingefügt der eine SUB aufruft, welche das Formular anzeigt. Das funktioniert nur, wenn die SUB in einem Modul untergebracht wird.
Sub ShowSchmigallaForm() Unload SchmigallaForm SchmigallaForm.Show End Sub
Damit Sie ein Gefühl bekommen, wie intuitiv und schnell mit meiner Dialog-geführten SCHMIGALLA Methode eine optimierte Anordnung entsteht, schauen Sie sich am besten dieses Video an.
Es zeigt die vollständige Layoutplanung im Dreiecksraster der Schneckengetriebeproduktion in 2 min.
Die Bilderliste zeigt nochmal die einzelnen Schritte zum Durchklicken. Die Dialog-geführte Schmigalla Methode bietet Ihnen als Planer durch den Summenalgorithmus dieselbe Reihenfolge an, die Prof. Dr.-Ing. Prêt in seiner Ausführung berechnet hat.
Auf diese Weise entwickeln Sie sehr komfortabel und schnell verschiedene Varianten für die weitere Layoutplanung und können Ihren Fokus immer auf die Positionierung der Objekte richten.
Los geht’s mit Coding
Ich hoffe ich konnte Ihnen ein wenig Lust bereiten, sich mit Layoutplanung, der SCHMIGALLA Methode und VBA zu beschäftigen.
Den größten Entwicklungsschritt in Richtung Coding machen Sie, wenn Sie sich die Listings mit Ihrem eigenen Excel Formular verbinden und den Rest der Thematik Shapes und Pfeile selber herausfinden.
Falls es nicht klappt, können Sie mir gerne eine Mail an info@techpluscode.de schreiben und das fertige Tool bekommen.
Viel Spaß beim Optimieren!
Schauen Sie sich auch weitere Artikel zum SCHMIGALLA Dreiecksverfahren an. Alle Artikel finden Sie hier.
Links und Literatur
Kurt W. Helbing, 2020, Handbuch Fabrikprojektierung, ab Seite 1155
Hans Schmigalla, 1970, Methoden zur optimalen Maschinenanordnung
Prof. Dr.-Ing. Prêt, 2018, Fabrikplanung: Teilefertigungs- und Montageprojekt „Schneckengetriebeproduktion“, http://www.uwe-pret.de/getriebe.pdf
Artikel Materialflussmatrix aus ERP-Daten
Artikel Kreisverfahren mit Excel-Unterstützung
Weitere Artikel zum Excel Schmigalla Tool
Download
Excel-Arbeitsmappe mit Vorlagen zu Dreiecksraster, Beispiel Schneckengetriebeproduktion ohne Makros
Pingback: Layoutoptimierung mit dem Kreisverfahren nach Schwerdtfeger - Tech+Code
Pingback: Materialfluss-Analysen mit GIGRAPH - Tech+Code
Pingback: Funktion zur Ermittlung der Produktionsstruktur über Kooperationsgrad - Tech+Code
Pingback: Excel Schmigalla Tool mit vielseitigen Visualisierungsmöglichkeiten - Tech+Code
Pingback: Verbessertes Excel Schmigalla Tool mit Größeninformation - Tech+Code
Pingback: Kräftebasierte Fabrik-Layoutplanung - Tech+Code
Interessiert Sie das Thema „automatische Layoutplanung“ nach den gleichen Bedingungen, wie beim Schmigalla-Verfahren, finden Sie einen Ansatz in „Kräftebasierte Fabrik-Layoutplanung mit Force-Directed-Graphs“:
https://techpluscode.de/kraftebasierte-fabrik-layoutplanung-mit-force-directed-graphs/
Pingback: Excel Schmigalla Tool - Tech+Code